NLSL: eprprm.f90 Source File

NLSL

- Main Page
- Modules
- Data Types List
- Files

- File List
- File Members

eprprm.f90
Go to the documentation of this file.
1 c NLSL Version 1.9.0 beta 2/6/15
2 c----------------------------------------------------------------------
3 c =========================
4 c module EPRPRM
5 c =========================
6 c
7 c Definitions of variables and pointer-aliases for NLSL fitting of
8 c experimental spectra using LBLL-family slow-motional calculations.
9 c
10 c This module supersedes various F77 common blocks and equivalences,
11 c in particular those that were in the files eprprm.inc and prmeqv.inc.
12 c
13 c
14 c IMPORTANT NOTES (mostly taken from version 1.5.1 beta, 2/3/96):
15 c
16 c The order in which the parameters appear in fparm and iparm is critical
17 c to the proper functioning of the NLSL program. If the parameter order is
18 c to be changed, the following rules must be observed:
19 c
20 c (1) To permit alias names to be used for the g, A, and diffusion
21 c tensors, the parameters gxx,gyy,gzz,axx,ayy,azz,dx,dy,dz,wxx,wyy,wzz
22 c should appear contiguously in that order in fparm.
23 c
24 c (2) The parameters igsph,iasph,irsph,iwsph should appear contiguously
25 c in that order in iparm. (See function tcheck in file tensym.f90.)
26 c
27 c (3) The order in which the parameters appear in module eprprm must
28 c be consistent with the order of names defined in module lpnam.
29 c This enables function ipfind to work properly, among other things.
30 c
31 c (4) The residence times tl,tkxy,tkzz have been replaced with the
32 c parameters pml, pmxy, pmzz. This is to facilitate fitting using
33 c non-Brownian models where it is desirable to vary the residence
34 c time and the diffusion rate constant together (i.e. keeping the
35 c product, which is related to the rms jump angle, constant).
36 c
37 c (5) The non-Brownian model flags have been changed to ml, mzz, and
38 c mxy for perpendicular, parallel, and internal motions, respectively.
39 c The flags may be set to 0, 1, and 2 for Brownian, free, and
40 c jump diffusion, respectively.
41 c
42 c (6) The old "wint" parameters have been changed to "gib", and
43 c now the additional width refers to Gaussian inhomogeneous width
44 c rather than an additional Lorentzian width
45 c
46 c (7) A new spectral linewidth broadening parameter, "lb", has been
47 c added
48 c
49 c***********************************************************************
50 c
51 module eprprm
52 use parcom
53 implicit none
54 c
55 double precision, target, save :: fepr(nfprm)
56 integer, target, save :: iepr(niprm)
57
58 double precision, pointer, save :: phase,gib0,gib2,
59 # wxx,wyy,wzz,
60 # gxx,gyy,gzz,
61 # axx,ayy,azz,
62 # dx,dy,dz,
63 # pml,pmxy,pmzz,
64 # djf,djfprp,oss,
65 # psi,ald,bed,gad,alm,bem,gam,
66 # c20,c22,c40,c42,c44,lb,dc20,b0,gamman,
67 # cgtol,shiftr,shifti,range,fldi,dfld
68
69 integer, pointer, save :: in2,ipdf,ist,
70 # ml,mxy,mzz,lemx,lomx,kmn,kmx,mmn,mmx,ipnmx,
71 # nort,nstep,nfld,ideriv,iwflg,igflg,iaflg,irflg,jkmn,jmmn,
72 # ndim
73 c
74 c The following are not declared with the pointer attribute,
75 c as they are not special names that are used to point into
76 c another array, like the variables above
77 c
78 double precision, save ::
79 # a0,g0,w0,expl,expkxy,expkzz,faa(5),fgm(5),fwm(5),
80 # fam(2,5),fgd(2,5),fad(2,5),fwd(2,5),cpot(5,5),xlk(5,5)
81
82 integer, save ::
83 # itype,ipt,itm,itd,ipsi0,lband,kband,ldelta,
84 # kdelta,lptmx,kptmx,neltot,nelv,nelre,nelim,ncgstp
85
86 c
87 c *** The following constants identify the position of many of the
88 c parameters within the fepr/iepr (and fparm/iparm) arrays.
89 c THESE CONSTANTS *MUST* BE REDEFINED IF THE PARAMETER ORDER
90 c IN EPRPRM IS CHANGED!!!
91 c
92 integer, parameter :: iphase=1,igib0=2,igib2=3,
93 # iwxx=4,iwzz=6,igxx=7,igzz=9,
94 # iaxx=10,iazz=12,idx=13,
95 # idz=15,ipml=16,ipmxy=17,ipmzz=18,
96 # idjf=19,idjfprp=20,ioss=21,ipsi=22,iald=23,ibed=24,
97 # igad=25,ialm=26,igam=28,ic20=29,ic44=33,ilb=34,idc20=35,
98 # ib0=36,igaman=37,icgtol=38,ishift=39,irange=41,ifldi=42,
99 # idfld=43
100 c
101 integer, parameter :: iin2=1,iipdf=2,iist=3,iml=4,
102 # ilemx=7,inort=14,instep=15,
103 # infld=16,iiderv=17,iiwflg=18,iigflg=19,iiaflg=20,
104 # iirflg=21,indim=24
105
106 c The following constants were absent from the original lists.
107 c They are now included for consistency.
108 integer, parameter :: iwyy=5,igyy=8,iayy=11,idy=14,
109 # ibem=27,ic22=30,ic40=31,ic42=32,ishifti=40,
110 # imxy=5,imzz=6,
111 # ilomx=8,ikmn=9,ikmx=10,immn=11,immx=12,iipnmx=13,
112 # ijkmn=22,ijmmn=23
113
114 c In the original lists, IGAMAN, ISHIFT, IIDERV had odd spellings.
115 c The following extra constants conform to the typical pattern.
116 integer, parameter :: igamman=igaman,ishiftr=ishift,
117 # iideriv=iiderv
118 c
119 c integer, save :: current_site
120
121 contains
122
123 c subroutine select_site(isite)
124 c implicit none
125 c
126 c Possible future subroutine...
127 c Instead of copying a column of fparm into fepr, or copying a
128 c column of iparm into iepr, it may be possible to make fepr
129 c and iepr into pointers to the heads of the relevant columns.
130 c Currently, though, fepr and iepr are treated as temp arrays
131 c whose values can change, so making them into pointers would
132 c have undesirable effects on global arrays fparm and iparm.
133 c
134 c integer :: isite
135 c current_site = isite
136 c ------------------------------------------------
137 c After call momdls, all eprprm parameters point
138 c to the current site via call select_site(isi)
139 c ------------------------------------------------
140 c fepr => fparm(:,isite)
141 c iepr => iparm(:,isite)
142 c end subroutine select_site
143
144 subroutine prm_ptr_init
145 implicit none
146
147 phase => fepr(iphase)
148 gib0 => fepr(igib0)
149 gib2 => fepr(igib2)
150 wxx => fepr(iwxx)
151 wyy => fepr(iwyy)
152 wzz => fepr(iwzz)
153 gxx => fepr(igxx)
154 gyy => fepr(igyy)
155 gzz => fepr(igzz)
156 axx => fepr(iaxx)
157 ayy => fepr(iayy)
158 azz => fepr(iazz)
159 dx => fepr(idx)
160 dy => fepr(idy)
161 dz => fepr(idz)
162 pml => fepr(ipml)
163 pmxy => fepr(ipmxy)
164 pmzz => fepr(ipmzz)
165 djf => fepr(idjf)
166 djfprp => fepr(idjfprp)
167 oss => fepr(ioss)
168 psi => fepr(ipsi)
169 ald => fepr(iald)
170 bed => fepr(ibed)
171 gad => fepr(igad)
172 alm => fepr(ialm)
173 bem => fepr(ibem)
174 gam => fepr(igam)
175 c20 => fepr(ic20)
176 c22 => fepr(ic22)
177 c40 => fepr(ic40)
178 c42 => fepr(ic42)
179 c44 => fepr(ic44)
180 lb => fepr(ilb)
181 dc20 => fepr(idc20)
182 b0 => fepr(ib0)
183 gamman => fepr(igamman)
184 cgtol => fepr(icgtol)
185 shiftr => fepr(ishiftr)
186 shifti => fepr(ishifti)
187 range => fepr(irange)
188 fldi => fepr(ifldi)
189 dfld => fepr(idfld)
190
191 in2 => iepr(iin2)
192 ipdf => iepr(iipdf)
193 ist => iepr(iist)
194 ml => iepr(iml)
195 mxy => iepr(imxy)
196 mzz => iepr(imzz)
197 lemx => iepr(ilemx)
198 lomx => iepr(ilomx)
199 kmn => iepr(ikmn)
200 kmx => iepr(ikmx)
201 mmn => iepr(immn)
202 mmx => iepr(immx)
203 ipnmx => iepr(iipnmx)
204 nort => iepr(inort)
205 nstep => iepr(instep)
206 nfld => iepr(infld)
207 ideriv => iepr(iiderv)
208 iwflg => iepr(iiwflg)
209 igflg => iepr(iigflg)
210 iaflg => iepr(iiaflg)
211 irflg => iepr(iirflg)
212 jkmn => iepr(ijkmn)
213 jmmn => iepr(ijmmn)
214 ndim => iepr(indim)
215
216 end subroutine prm_ptr_init
217
218 end module eprprm
eprprm::pml
double precision, pointer, save pml
Definition: eprprm.f90:58
eprprm::ald
double precision, pointer, save ald
Definition: eprprm.f90:58
eprprm::iml
integer, parameter iml
Definition: eprprm.f90:101
eprprm::irflg
integer, pointer, save irflg
Definition: eprprm.f90:69
eprprm::ipt
integer, save ipt
Definition: eprprm.f90:82
eprprm::alm
double precision, pointer, save alm
Definition: eprprm.f90:58
eprprm::igad
integer, parameter igad
Definition: eprprm.f90:92
eprprm::faa
double precision, dimension(5), save faa
Definition: eprprm.f90:78
eprprm::iist
integer, parameter iist
Definition: eprprm.f90:101
eprprm::prm_ptr_init
subroutine prm_ptr_init
Definition: eprprm.f90:145
eprprm::ipml
integer, parameter ipml
Definition: eprprm.f90:92
eprprm::imzz
integer, parameter imzz
Definition: eprprm.f90:108
eprprm::ayy
double precision, pointer, save ayy
Definition: eprprm.f90:58
eprprm::irange
integer, parameter irange
Definition: eprprm.f90:92
eprprm::idy
integer, parameter idy
Definition: eprprm.f90:108
eprprm::gxx
double precision, pointer, save gxx
Definition: eprprm.f90:58
eprprm::igyy
integer, parameter igyy
Definition: eprprm.f90:108
eprprm::dz
double precision, pointer, save dz
Definition: eprprm.f90:58
eprprm::igam
integer, parameter igam
Definition: eprprm.f90:92
eprprm::iiaflg
integer, parameter iiaflg
Definition: eprprm.f90:101
eprprm::dx
double precision, pointer, save dx
Definition: eprprm.f90:58
eprprm::fgm
double precision, dimension(5), save fgm
Definition: eprprm.f90:78
eprprm::w0
double precision, save w0
Definition: eprprm.f90:78
eprprm::dfld
double precision, pointer, save dfld
Definition: eprprm.f90:58
eprprm::iald
integer, parameter iald
Definition: eprprm.f90:92
eprprm::nfld
integer, pointer, save nfld
Definition: eprprm.f90:69
eprprm::iaflg
integer, pointer, save iaflg
Definition: eprprm.f90:69
eprprm::idjf
integer, parameter idjf
Definition: eprprm.f90:92
eprprm::dc20
double precision, pointer, save dc20
Definition: eprprm.f90:58
eprprm::mxy
integer, pointer, save mxy
Definition: eprprm.f90:69
eprprm::ioss
integer, parameter ioss
Definition: eprprm.f90:92
eprprm::expkzz
double precision, save expkzz
Definition: eprprm.f90:78
eprprm::ibem
integer, parameter ibem
Definition: eprprm.f90:108
eprprm::igib2
integer, parameter igib2
Definition: eprprm.f90:92
eprprm::gad
double precision, pointer, save gad
Definition: eprprm.f90:58
eprprm::range
double precision, pointer, save range
Definition: eprprm.f90:58
eprprm::ilb
integer, parameter ilb
Definition: eprprm.f90:92
eprprm::expl
double precision, save expl
Definition: eprprm.f90:78
eprprm::lband
integer, save lband
Definition: eprprm.f90:82
eprprm::lb
double precision, pointer, save lb
Definition: eprprm.f90:58
eprprm::c22
double precision, pointer, save c22
Definition: eprprm.f90:58
eprprm::ist
integer, pointer, save ist
Definition: eprprm.f90:69
eprprm::ndim
integer, pointer, save ndim
Definition: eprprm.f90:69
eprprm::ikmx
integer, parameter ikmx
Definition: eprprm.f90:108
eprprm::iiwflg
integer, parameter iiwflg
Definition: eprprm.f90:101
eprprm::iipnmx
integer, parameter iipnmx
Definition: eprprm.f90:108
eprprm::cpot
double precision, dimension(5, 5), save cpot
Definition: eprprm.f90:78
eprprm::azz
double precision, pointer, save azz
Definition: eprprm.f90:58
eprprm::gyy
double precision, pointer, save gyy
Definition: eprprm.f90:58
eprprm::fad
double precision, dimension(2, 5), save fad
Definition: eprprm.f90:78
eprprm::ibed
integer, parameter ibed
Definition: eprprm.f90:92
eprprm::shifti
double precision, pointer, save shifti
Definition: eprprm.f90:58
eprprm::cgtol
double precision, pointer, save cgtol
Definition: eprprm.f90:58
eprprm::iepr
integer, dimension(niprm), target, save iepr
Definition: eprprm.f90:56
eprprm::iaxx
integer, parameter iaxx
Definition: eprprm.f90:92
eprprm::idz
integer, parameter idz
Definition: eprprm.f90:92
eprprm::ilomx
integer, parameter ilomx
Definition: eprprm.f90:108
eprprm::mmx
integer, pointer, save mmx
Definition: eprprm.f90:69
eprprm::ipdf
integer, pointer, save ipdf
Definition: eprprm.f90:69
eprprm::bem
double precision, pointer, save bem
Definition: eprprm.f90:58
eprprm::ijmmn
integer, parameter ijmmn
Definition: eprprm.f90:108
eprprm::dy
double precision, pointer, save dy
Definition: eprprm.f90:58
eprprm::iwyy
integer, parameter iwyy
Definition: eprprm.f90:108
eprprm::ic40
integer, parameter ic40
Definition: eprprm.f90:108
eprprm::jkmn
integer, pointer, save jkmn
Definition: eprprm.f90:69
eprprm::ipsi
integer, parameter ipsi
Definition: eprprm.f90:92
parcom
Definition: parcom.f90:42
eprprm::nort
integer, pointer, save nort
Definition: eprprm.f90:69
eprprm::igib0
integer, parameter igib0
Definition: eprprm.f90:92
eprprm::iazz
integer, parameter iazz
Definition: eprprm.f90:92
eprprm::fldi
double precision, pointer, save fldi
Definition: eprprm.f90:58
eprprm::gamman
double precision, pointer, save gamman
Definition: eprprm.f90:58
eprprm::fgd
double precision, dimension(2, 5), save fgd
Definition: eprprm.f90:78
eprprm::mzz
integer, pointer, save mzz
Definition: eprprm.f90:69
eprprm::lptmx
integer, save lptmx
Definition: eprprm.f90:82
eprprm::mmn
integer, pointer, save mmn
Definition: eprprm.f90:69
eprprm::ishiftr
integer, parameter ishiftr
Definition: eprprm.f90:116
eprprm::ipnmx
integer, pointer, save ipnmx
Definition: eprprm.f90:69
eprprm::indim
integer, parameter indim
Definition: eprprm.f90:101
eprprm::igflg
integer, pointer, save igflg
Definition: eprprm.f90:69
eprprm::fepr
double precision, dimension(nfprm), target, save fepr
Definition: eprprm.f90:55
eprprm::ijkmn
integer, parameter ijkmn
Definition: eprprm.f90:108
eprprm::nelre
integer, save nelre
Definition: eprprm.f90:82
eprprm::nelim
integer, save nelim
Definition: eprprm.f90:82
eprprm::c44
double precision, pointer, save c44
Definition: eprprm.f90:58
eprprm::iirflg
integer, parameter iirflg
Definition: eprprm.f90:101
eprprm::c40
double precision, pointer, save c40
Definition: eprprm.f90:58
eprprm::instep
integer, parameter instep
Definition: eprprm.f90:101
eprprm::psi
double precision, pointer, save psi
Definition: eprprm.f90:58
eprprm::gam
double precision, pointer, save gam
Definition: eprprm.f90:58
eprprm::c20
double precision, pointer, save c20
Definition: eprprm.f90:58
eprprm::idx
integer, parameter idx
Definition: eprprm.f90:92
eprprm::nelv
integer, save nelv
Definition: eprprm.f90:82
eprprm::fam
double precision, dimension(2, 5), save fam
Definition: eprprm.f90:78
eprprm::gib0
double precision, pointer, save gib0
Definition: eprprm.f90:58
eprprm::iipdf
integer, parameter iipdf
Definition: eprprm.f90:101
eprprm::pmxy
double precision, pointer, save pmxy
Definition: eprprm.f90:58
eprprm::ikmn
integer, parameter ikmn
Definition: eprprm.f90:108
eprprm::kptmx
integer, save kptmx
Definition: eprprm.f90:82
eprprm::kband
integer, save kband
Definition: eprprm.f90:82
eprprm::expkxy
double precision, save expkxy
Definition: eprprm.f90:78
eprprm::djfprp
double precision, pointer, save djfprp
Definition: eprprm.f90:58
eprprm::gib2
double precision, pointer, save gib2
Definition: eprprm.f90:58
eprprm::nstep
integer, pointer, save nstep
Definition: eprprm.f90:69
eprprm::igzz
integer, parameter igzz
Definition: eprprm.f90:92
eprprm::ib0
integer, parameter ib0
Definition: eprprm.f90:92
eprprm::gzz
double precision, pointer, save gzz
Definition: eprprm.f90:58
eprprm::iwxx
integer, parameter iwxx
Definition: eprprm.f90:92
eprprm::ideriv
integer, pointer, save ideriv
Definition: eprprm.f90:69
eprprm::idc20
integer, parameter idc20
Definition: eprprm.f90:92
eprprm::igaman
integer, parameter igaman
Definition: eprprm.f90:92
eprprm::iphase
integer, parameter iphase
Definition: eprprm.f90:92
eprprm::ishift
integer, parameter ishift
Definition: eprprm.f90:92
eprprm::igxx
integer, parameter igxx
Definition: eprprm.f90:92
eprprm::ldelta
integer, save ldelta
Definition: eprprm.f90:82
eprprm::lomx
integer, pointer, save lomx
Definition: eprprm.f90:69
eprprm::bed
double precision, pointer, save bed
Definition: eprprm.f90:58
eprprm::iiderv
integer, parameter iiderv
Definition: eprprm.f90:101
eprprm::kmn
integer, pointer, save kmn
Definition: eprprm.f90:69
eprprm::xlk
double precision, dimension(5, 5), save xlk
Definition: eprprm.f90:78
eprprm::ic20
integer, parameter ic20
Definition: eprprm.f90:92
eprprm::pmzz
double precision, pointer, save pmzz
Definition: eprprm.f90:58
eprprm::axx
double precision, pointer, save axx
Definition: eprprm.f90:58
eprprm::iwflg
integer, pointer, save iwflg
Definition: eprprm.f90:69
eprprm::phase
double precision, pointer, save phase
Definition: eprprm.f90:58
eprprm::fwm
double precision, dimension(5), save fwm
Definition: eprprm.f90:78
eprprm::in2
integer, pointer, save in2
Definition: eprprm.f90:69
eprprm::c42
double precision, pointer, save c42
Definition: eprprm.f90:58
eprprm::ishifti
integer, parameter ishifti
Definition: eprprm.f90:108
eprprm::kmx
integer, pointer, save kmx
Definition: eprprm.f90:69
eprprm::ilemx
integer, parameter ilemx
Definition: eprprm.f90:101
eprprm::inort
integer, parameter inort
Definition: eprprm.f90:101
eprprm::g0
double precision, save g0
Definition: eprprm.f90:78
eprprm
Definition: eprprm.f90:51
eprprm::iigflg
integer, parameter iigflg
Definition: eprprm.f90:101
eprprm::idjfprp
integer, parameter idjfprp
Definition: eprprm.f90:92
eprprm::iideriv
integer, parameter iideriv
Definition: eprprm.f90:116
eprprm::ipmxy
integer, parameter ipmxy
Definition: eprprm.f90:92
eprprm::jmmn
integer, pointer, save jmmn
Definition: eprprm.f90:69
eprprm::lemx
integer, pointer, save lemx
Definition: eprprm.f90:69
eprprm::ml
integer, pointer, save ml
Definition: eprprm.f90:69
eprprm::itype
integer, save itype
Definition: eprprm.f90:82
eprprm::iwzz
integer, parameter iwzz
Definition: eprprm.f90:92
eprprm::ic42
integer, parameter ic42
Definition: eprprm.f90:108
eprprm::icgtol
integer, parameter icgtol
Definition: eprprm.f90:92
eprprm::ipmzz
integer, parameter ipmzz
Definition: eprprm.f90:92
eprprm::b0
double precision, pointer, save b0
Definition: eprprm.f90:58
eprprm::idfld
integer, parameter idfld
Definition: eprprm.f90:92
eprprm::ic44
integer, parameter ic44
Definition: eprprm.f90:92
eprprm::ncgstp
integer, save ncgstp
Definition: eprprm.f90:82
eprprm::infld
integer, parameter infld
Definition: eprprm.f90:101
eprprm::itm
integer, save itm
Definition: eprprm.f90:82
eprprm::ic22
integer, parameter ic22
Definition: eprprm.f90:108
eprprm::wyy
double precision, pointer, save wyy
Definition: eprprm.f90:58
eprprm::ipsi0
integer, save ipsi0
Definition: eprprm.f90:82
eprprm::shiftr
double precision, pointer, save shiftr
Definition: eprprm.f90:58
eprprm::ifldi
integer, parameter ifldi
Definition: eprprm.f90:92
eprprm::fwd
double precision, dimension(2, 5), save fwd
Definition: eprprm.f90:78
eprprm::oss
double precision, pointer, save oss
Definition: eprprm.f90:58
eprprm::imxy
integer, parameter imxy
Definition: eprprm.f90:108
eprprm::wzz
double precision, pointer, save wzz
Definition: eprprm.f90:58
eprprm::iayy
integer, parameter iayy
Definition: eprprm.f90:108
eprprm::wxx
double precision, pointer, save wxx
Definition: eprprm.f90:58
eprprm::immn
integer, parameter immn
Definition: eprprm.f90:108
eprprm::a0
double precision, save a0
Definition: eprprm.f90:78
eprprm::immx
integer, parameter immx
Definition: eprprm.f90:108
eprprm::neltot
integer, save neltot
Definition: eprprm.f90:82
eprprm::ialm
integer, parameter ialm
Definition: eprprm.f90:92
eprprm::kdelta
integer, save kdelta
Definition: eprprm.f90:82
eprprm::itd
integer, save itd
Definition: eprprm.f90:82
eprprm::iin2
integer, parameter iin2
Definition: eprprm.f90:101
eprprm::igamman
integer, parameter igamman
Definition: eprprm.f90:116
eprprm::djf
double precision, pointer, save djf
Definition: eprprm.f90:58