NLSL
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,
68 
69  integer, pointer, save :: in2,ipdf,ist,
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 ::
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
double precision, pointer, save pml
Definition: eprprm.f90:58
double precision, pointer, save ald
Definition: eprprm.f90:58
integer, parameter iml
Definition: eprprm.f90:101
integer, pointer, save irflg
Definition: eprprm.f90:69
integer, save ipt
Definition: eprprm.f90:82
double precision, pointer, save alm
Definition: eprprm.f90:58
integer, parameter igad
Definition: eprprm.f90:92
double precision, dimension(5), save faa
Definition: eprprm.f90:78
integer, parameter iist
Definition: eprprm.f90:101
subroutine prm_ptr_init
Definition: eprprm.f90:145
integer, parameter ipml
Definition: eprprm.f90:92
integer, parameter imzz
Definition: eprprm.f90:108
double precision, pointer, save ayy
Definition: eprprm.f90:58
integer, parameter irange
Definition: eprprm.f90:92
integer, parameter idy
Definition: eprprm.f90:108
double precision, pointer, save gxx
Definition: eprprm.f90:58
integer, parameter igyy
Definition: eprprm.f90:108
double precision, pointer, save dz
Definition: eprprm.f90:58
integer, parameter igam
Definition: eprprm.f90:92
integer, parameter iiaflg
Definition: eprprm.f90:101
double precision, pointer, save dx
Definition: eprprm.f90:58
double precision, dimension(5), save fgm
Definition: eprprm.f90:78
double precision, save w0
Definition: eprprm.f90:78
double precision, pointer, save dfld
Definition: eprprm.f90:58
integer, parameter iald
Definition: eprprm.f90:92
integer, pointer, save nfld
Definition: eprprm.f90:69
integer, pointer, save iaflg
Definition: eprprm.f90:69
integer, parameter idjf
Definition: eprprm.f90:92
double precision, pointer, save dc20
Definition: eprprm.f90:58
integer, pointer, save mxy
Definition: eprprm.f90:69
integer, parameter ioss
Definition: eprprm.f90:92
double precision, save expkzz
Definition: eprprm.f90:78
integer, parameter ibem
Definition: eprprm.f90:108
integer, parameter igib2
Definition: eprprm.f90:92
double precision, pointer, save gad
Definition: eprprm.f90:58
double precision, pointer, save range
Definition: eprprm.f90:58
integer, parameter ilb
Definition: eprprm.f90:92
double precision, save expl
Definition: eprprm.f90:78
integer, save lband
Definition: eprprm.f90:82
double precision, pointer, save lb
Definition: eprprm.f90:58
double precision, pointer, save c22
Definition: eprprm.f90:58
integer, pointer, save ist
Definition: eprprm.f90:69
integer, pointer, save ndim
Definition: eprprm.f90:69
integer, parameter ikmx
Definition: eprprm.f90:108
integer, parameter iiwflg
Definition: eprprm.f90:101
integer, parameter iipnmx
Definition: eprprm.f90:108
double precision, dimension(5, 5), save cpot
Definition: eprprm.f90:78
double precision, pointer, save azz
Definition: eprprm.f90:58
double precision, pointer, save gyy
Definition: eprprm.f90:58
double precision, dimension(2, 5), save fad
Definition: eprprm.f90:78
integer, parameter ibed
Definition: eprprm.f90:92
double precision, pointer, save shifti
Definition: eprprm.f90:58
double precision, pointer, save cgtol
Definition: eprprm.f90:58
integer, dimension(niprm), target, save iepr
Definition: eprprm.f90:56
integer, parameter iaxx
Definition: eprprm.f90:92
integer, parameter idz
Definition: eprprm.f90:92
integer, parameter ilomx
Definition: eprprm.f90:108
integer, pointer, save mmx
Definition: eprprm.f90:69
integer, pointer, save ipdf
Definition: eprprm.f90:69
double precision, pointer, save bem
Definition: eprprm.f90:58
integer, parameter ijmmn
Definition: eprprm.f90:108
double precision, pointer, save dy
Definition: eprprm.f90:58
integer, parameter iwyy
Definition: eprprm.f90:108
integer, parameter ic40
Definition: eprprm.f90:108
integer, pointer, save jkmn
Definition: eprprm.f90:69
integer, parameter ipsi
Definition: eprprm.f90:92
integer, pointer, save nort
Definition: eprprm.f90:69
integer, parameter igib0
Definition: eprprm.f90:92
integer, parameter iazz
Definition: eprprm.f90:92
double precision, pointer, save fldi
Definition: eprprm.f90:58
double precision, pointer, save gamman
Definition: eprprm.f90:58
double precision, dimension(2, 5), save fgd
Definition: eprprm.f90:78
integer, pointer, save mzz
Definition: eprprm.f90:69
integer, save lptmx
Definition: eprprm.f90:82
integer, pointer, save mmn
Definition: eprprm.f90:69
integer, parameter ishiftr
Definition: eprprm.f90:116
integer, pointer, save ipnmx
Definition: eprprm.f90:69
integer, parameter indim
Definition: eprprm.f90:101
integer, pointer, save igflg
Definition: eprprm.f90:69
double precision, dimension(nfprm), target, save fepr
Definition: eprprm.f90:55
integer, parameter ijkmn
Definition: eprprm.f90:108
integer, save nelre
Definition: eprprm.f90:82
integer, save nelim
Definition: eprprm.f90:82
double precision, pointer, save c44
Definition: eprprm.f90:58
integer, parameter iirflg
Definition: eprprm.f90:101
double precision, pointer, save c40
Definition: eprprm.f90:58
integer, parameter instep
Definition: eprprm.f90:101
double precision, pointer, save psi
Definition: eprprm.f90:58
double precision, pointer, save gam
Definition: eprprm.f90:58
double precision, pointer, save c20
Definition: eprprm.f90:58
integer, parameter idx
Definition: eprprm.f90:92
integer, save nelv
Definition: eprprm.f90:82
double precision, dimension(2, 5), save fam
Definition: eprprm.f90:78
double precision, pointer, save gib0
Definition: eprprm.f90:58
integer, parameter iipdf
Definition: eprprm.f90:101
double precision, pointer, save pmxy
Definition: eprprm.f90:58
integer, parameter ikmn
Definition: eprprm.f90:108
integer, save kptmx
Definition: eprprm.f90:82
integer, save kband
Definition: eprprm.f90:82
double precision, save expkxy
Definition: eprprm.f90:78
double precision, pointer, save djfprp
Definition: eprprm.f90:58
double precision, pointer, save gib2
Definition: eprprm.f90:58
integer, pointer, save nstep
Definition: eprprm.f90:69
integer, parameter igzz
Definition: eprprm.f90:92
integer, parameter ib0
Definition: eprprm.f90:92
double precision, pointer, save gzz
Definition: eprprm.f90:58
integer, parameter iwxx
Definition: eprprm.f90:92
integer, pointer, save ideriv
Definition: eprprm.f90:69
integer, parameter idc20
Definition: eprprm.f90:92
integer, parameter igaman
Definition: eprprm.f90:92
integer, parameter iphase
Definition: eprprm.f90:92
integer, parameter ishift
Definition: eprprm.f90:92
integer, parameter igxx
Definition: eprprm.f90:92
integer, save ldelta
Definition: eprprm.f90:82
integer, pointer, save lomx
Definition: eprprm.f90:69
double precision, pointer, save bed
Definition: eprprm.f90:58
integer, parameter iiderv
Definition: eprprm.f90:101
integer, pointer, save kmn
Definition: eprprm.f90:69
double precision, dimension(5, 5), save xlk
Definition: eprprm.f90:78
integer, parameter ic20
Definition: eprprm.f90:92
double precision, pointer, save pmzz
Definition: eprprm.f90:58
double precision, pointer, save axx
Definition: eprprm.f90:58
integer, pointer, save iwflg
Definition: eprprm.f90:69
double precision, pointer, save phase
Definition: eprprm.f90:58
double precision, dimension(5), save fwm
Definition: eprprm.f90:78
integer, pointer, save in2
Definition: eprprm.f90:69
double precision, pointer, save c42
Definition: eprprm.f90:58
integer, parameter ishifti
Definition: eprprm.f90:108
integer, pointer, save kmx
Definition: eprprm.f90:69
integer, parameter ilemx
Definition: eprprm.f90:101
integer, parameter inort
Definition: eprprm.f90:101
double precision, save g0
Definition: eprprm.f90:78
integer, parameter iigflg
Definition: eprprm.f90:101
integer, parameter idjfprp
Definition: eprprm.f90:92
integer, parameter iideriv
Definition: eprprm.f90:116
integer, parameter ipmxy
Definition: eprprm.f90:92
integer, pointer, save jmmn
Definition: eprprm.f90:69
integer, pointer, save lemx
Definition: eprprm.f90:69
integer, pointer, save ml
Definition: eprprm.f90:69
integer, save itype
Definition: eprprm.f90:82
integer, parameter iwzz
Definition: eprprm.f90:92
integer, parameter ic42
Definition: eprprm.f90:108
integer, parameter icgtol
Definition: eprprm.f90:92
integer, parameter ipmzz
Definition: eprprm.f90:92
double precision, pointer, save b0
Definition: eprprm.f90:58
integer, parameter idfld
Definition: eprprm.f90:92
integer, parameter ic44
Definition: eprprm.f90:92
integer, save ncgstp
Definition: eprprm.f90:82
integer, parameter infld
Definition: eprprm.f90:101
integer, save itm
Definition: eprprm.f90:82
integer, parameter ic22
Definition: eprprm.f90:108
double precision, pointer, save wyy
Definition: eprprm.f90:58
integer, save ipsi0
Definition: eprprm.f90:82
double precision, pointer, save shiftr
Definition: eprprm.f90:58
integer, parameter ifldi
Definition: eprprm.f90:92
double precision, dimension(2, 5), save fwd
Definition: eprprm.f90:78
double precision, pointer, save oss
Definition: eprprm.f90:58
integer, parameter imxy
Definition: eprprm.f90:108
double precision, pointer, save wzz
Definition: eprprm.f90:58
integer, parameter iayy
Definition: eprprm.f90:108
double precision, pointer, save wxx
Definition: eprprm.f90:58
integer, parameter immn
Definition: eprprm.f90:108
double precision, save a0
Definition: eprprm.f90:78
integer, parameter immx
Definition: eprprm.f90:108
integer, save neltot
Definition: eprprm.f90:82
integer, parameter ialm
Definition: eprprm.f90:92
integer, save kdelta
Definition: eprprm.f90:82
integer, save itd
Definition: eprprm.f90:82
integer, parameter iin2
Definition: eprprm.f90:101
integer, parameter igamman
Definition: eprprm.f90:116
double precision, pointer, save djf
Definition: eprprm.f90:58