1
subroutine load_para(npara,param,value)
2
c----------------------------------------------------------------------
3
c Read the params from the run_card.dat file
4
c----------------------------------------------------------------------
10
parameter (maxpara=1000)
14
character*20 param(maxpara),value(maxpara)
22
integer k,i,l1,l2,iproc
29
common/to_group/ngroup
35
c read the run_card.dat
43
call open_file(iunit,'run_card.dat',fopened)
45
write(*,*) 'Error: File run_card.dat not found'
49
c first look for process-specific parameters
53
read(iunit,'(a132)',end=20,err=20) buff
54
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
55
$ .and. index(buff,"@").gt.0) then
58
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
59
read(buff(l1+1:l2),*,err=11) iproc
60
if(iproc.ne.ngroup) cycle
67
value(npara)=buff(1:l1-1)
69
call case_trap2(ctemp)
72
param(npara)=" "//buff(l1+1:l2-1)
74
call case_trap2(ctemp)
86
read(iunit,'(a132)',end=96,err=96) buff
87
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
88
$ .and. index(buff,"@").le.0) then
91
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
95
value(npara)=buff(1:l1-1)
97
call case_trap2(ctemp)
100
param(npara)=" "//buff(l1+1:l2-1)
102
call case_trap2(ctemp)
113
c tjs modified 11-16-07 to include grid_card.dat
115
call open_file(iunit,'grid_card.dat',fopened)
118
c first look for process-specific parameters
122
read(iunit,'(a132)',end=30,err=30) buff
123
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
124
$ .and. index(buff,"@").gt.0) then
127
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
128
read(buff(l1+1:l2),*,err=21) iproc
129
if(iproc.ne.ngroup) cycle
136
value(npara)=buff(1:l1-1)
138
call case_trap2(ctemp)
141
param(npara)=" "//buff(l1+1:l2-1)
143
call case_trap2(ctemp)
155
read(iunit,'(a132)',end=99,err=99) buff
156
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
157
$ .and. index(buff,"@").le.0) then
160
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
164
value(npara)=buff(1:l1-1)
166
call case_trap2(ctemp)
169
param(npara)=" "//buff(l1+1:l2-1)
170
c write (*,*) param(npara),l1,l2
172
call case_trap2(ctemp)
174
c write(*,*) "New param:",param(npara)," = ", value(npara)
186
subroutine get_real(npara,param,value,name,var,def_value)
187
c----------------------------------------------------------------------------------
188
c finds the parameter named "name" in param and associate to "value" in value
189
c----------------------------------------------------------------------------------
196
parameter (maxpara=1000)
201
character*20 param(maxpara),value(maxpara)
204
character*20 c_param,c_name
215
do while(.not.found.and.i.le.npara)
216
call firststring(c_param,param(i))
217
call firststring(c_name,name)
218
found = (c_param .eq. c_name)
219
if (found) read(value(i),*) var
220
c if (found) write (*,*) name,var
224
write (*,*) "Warning: parameter ",name," not found"
225
write (*,*) " setting it to default value ",def_value
233
subroutine get_integer(npara,param,value,name,var,def_value)
234
c----------------------------------------------------------------------------------
235
c finds the parameter named "name" in param and associate to "value" in value
236
c----------------------------------------------------------------------------------
242
parameter (maxpara=1000)
247
character*20 param(maxpara),value(maxpara)
249
integer var,def_value
250
character*20 c_param,c_name
261
do while(.not.found.and.i.le.npara)
262
call firststring(c_param,param(i))
263
call firststring(c_name,name)
264
found = (c_param .eq. c_name)
265
if (found) read(value(i),*) var
266
c if (found) write (*,*) name,var
270
write (*,*) "Warning: parameter ",name," not found"
271
write (*,*) " setting it to default value ",def_value
278
subroutine get_string(npara,param,value,name,var,def_value)
279
c----------------------------------------------------------------------------------
280
c finds the parameter named "name" in param and associate to "value" in value
281
c----------------------------------------------------------------------------------
288
parameter (maxpara=1000)
293
character*20 param(maxpara),value(maxpara)
295
character*(*) var,def_value
296
character*20 c_param,c_name
307
do while(.not.found.and.i.le.npara)
308
call firststring(c_param,param(i))
309
call firststring(c_name,name)
310
found = (c_param .eq. c_name)
311
if (found) read(value(i),*) var
312
c if (found) write (*,*) name,var
316
write (*,*) "Warning: parameter ",name," not found"
317
write (*,*) " setting it to default value ",def_value
324
subroutine get_logical(npara,param,value,name,var,def_value)
325
c----------------------------------------------------------------------------------
326
c finds the parameter named "name" in param and associate to "value" in value
327
c----------------------------------------------------------------------------------
334
parameter (maxpara=1000)
339
character*20 param(maxpara),value(maxpara)
341
logical var,def_value
342
character*20 c_param,c_name
353
do while(.not.found.and.i.le.npara)
354
call firststring(c_param,param(i))
355
call firststring(c_name,name)
356
found = (c_param .eq. c_name)
357
if (found) read(value(i),*) var
358
c if (found) write (*,*) name,var
362
write (*,*) "Warning: parameter ",name," not found"
363
write (*,*) " setting it to default value ",def_value
373
subroutine case_trap2(name)
374
c**********************************************************
375
c change the string to lowercase if the input is not
376
c**********************************************************
389
if(k.ge.65.and.k.le.90) then !upper case A-Z
390
k=ichar(name(i:i))+32
398
c +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
400
c ++ firststring -> return the first "word" of string
401
c ++ & remove whitespaces around
402
c ++ Needed to correct a bug in "get_" routines
403
c ++ Michel Herquet - CP3 - 05-04-2006
405
c +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
407
subroutine firststring(first,string)
415
do while(temp(1:1) .eq. ' ')
416
temp=temp(2:len(temp))
418
first=temp(1:index(temp,' ')-1)