1
subroutine load_para(npara,param,value)
2
c----------------------------------------------------------------------
3
c Read the params from the run_card.dat file
4
c----------------------------------------------------------------------
9
character*20 param(*),value(*)
17
integer k,i,l1,l2,iproc
24
common/to_group/ngroup
30
c read the run_card.dat
38
call open_file(iunit,'run_card.dat',fopened)
40
write(*,*) 'Error: File run_card.dat not found'
44
c first look for process-specific parameters
48
read(iunit,'(a132)',end=20,err=20) buff
49
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
50
$ .and. index(buff,"@").gt.0) then
53
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
54
read(buff(l1+1:l2),*,err=11) iproc
55
if(iproc.ne.ngroup) cycle
62
value(npara)=buff(1:l1-1)
64
call case_trap2(ctemp)
67
param(npara)=" "//buff(l1+1:l2-1)
69
call case_trap2(ctemp)
81
read(iunit,'(a132)',end=96,err=96) buff
82
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
83
$ .and. index(buff,"@").le.0) then
86
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
90
value(npara)=buff(1:l1-1)
92
call case_trap2(ctemp)
95
param(npara)=" "//buff(l1+1:l2-1)
97
call case_trap2(ctemp)
108
c tjs modified 11-16-07 to include grid_card.dat
110
call open_file(iunit,'grid_card.dat',fopened)
113
c first look for process-specific parameters
117
read(iunit,'(a132)',end=30,err=30) buff
118
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
119
$ .and. index(buff,"@").gt.0) then
122
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
123
read(buff(l1+1:l2),*,err=21) iproc
124
if(iproc.ne.ngroup) cycle
131
value(npara)=buff(1:l1-1)
133
call case_trap2(ctemp)
136
param(npara)=" "//buff(l1+1:l2-1)
138
call case_trap2(ctemp)
150
read(iunit,'(a132)',end=99,err=99) buff
151
if(buff(1:1).ne.'#' .and. index(buff,"=").gt.0
152
$ .and. index(buff,"@").le.0) then
155
if(l2.eq.0) l2=l1+20 !maybe there is no comment...
159
value(npara)=buff(1:l1-1)
161
call case_trap2(ctemp)
164
param(npara)=" "//buff(l1+1:l2-1)
165
c write (*,*) param(npara),l1,l2
167
call case_trap2(ctemp)
169
c write(*,*) "New param:",param(npara)," = ", value(npara)
181
subroutine get_real(npara,param,value,name,var,def_value)
182
c----------------------------------------------------------------------------------
183
c finds the parameter named "name" in param and associate to "value" in value
184
c----------------------------------------------------------------------------------
191
character*20 param(*),value(*)
194
character*20 c_param,c_name
205
do while(.not.found.and.i.le.npara)
206
call firststring(c_param,param(i))
207
call firststring(c_name,name)
208
found = (c_param .eq. c_name)
209
if (found) read(value(i),*) var
210
c if (found) write (*,*) name,var
214
write (*,*) "Warning: parameter ",name," not found"
215
write (*,*) " setting it to default value ",def_value
223
subroutine get_integer(npara,param,value,name,var,def_value)
224
c----------------------------------------------------------------------------------
225
c finds the parameter named "name" in param and associate to "value" in value
226
c----------------------------------------------------------------------------------
232
character*20 param(*),value(*)
234
integer var,def_value
235
character*20 c_param,c_name
246
do while(.not.found.and.i.le.npara)
247
call firststring(c_param,param(i))
248
call firststring(c_name,name)
249
found = (c_param .eq. c_name)
250
if (found) read(value(i),*) var
251
c if (found) write (*,*) name,var
255
write (*,*) "Warning: parameter ",name," not found"
256
write (*,*) " setting it to default value ",def_value
263
subroutine get_int8(npara,param,value,name,var,def_value)
264
c----------------------------------------------------------------------------------
265
c finds the parameter named "name" in param and associate to "value" in value
266
c----------------------------------------------------------------------------------
272
character*20 param(*),value(*)
276
character*20 c_param,c_name
287
do while(.not.found.and.i.le.npara)
288
call firststring(c_param,param(i))
289
call firststring(c_name,name)
290
found = (c_param .eq. c_name)
291
if (found) read(value(i),*) var
292
c if (found) write (*,*) name,var
296
write (*,*) "Warning: parameter ",name," not found"
297
write (*,*) " setting it to default value ",def_value
304
subroutine get_string(npara,param,value,name,var,def_value)
305
c----------------------------------------------------------------------------------
306
c finds the parameter named "name" in param and associate to "value" in value
307
c----------------------------------------------------------------------------------
314
character*20 param(*),value(*)
316
character*(*) var,def_value
317
character*20 c_param,c_name
328
do while(.not.found.and.i.le.npara)
329
call firststring(c_param,param(i))
330
call firststring(c_name,name)
331
found = (c_param .eq. c_name)
332
if (found) read(value(i),*) var
333
c if (found) write (*,*) name,var
337
write (*,*) "Warning: parameter ",name," not found"
338
write (*,*) " setting it to default value ",def_value
345
subroutine get_logical(npara,param,value,name,var,def_value)
346
c----------------------------------------------------------------------------------
347
c finds the parameter named "name" in param and associate to "value" in value
348
c----------------------------------------------------------------------------------
355
character*20 param(*),value(*)
357
logical var,def_value
358
character*20 c_param,c_name
369
do while(.not.found.and.i.le.npara)
370
call firststring(c_param,param(i))
371
call firststring(c_name,name)
372
found = (c_param .eq. c_name)
373
if (found) read(value(i),*) var
374
c if (found) write (*,*) name,var
378
write (*,*) "Warning: parameter ",name," not found"
379
write (*,*) " setting it to default value ",def_value
389
subroutine case_trap2(name)
390
c**********************************************************
391
c change the string to lowercase if the input is not
392
c**********************************************************
405
if(k.ge.65.and.k.le.90) then !upper case A-Z
406
k=ichar(name(i:i))+32
414
c +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
416
c ++ firststring -> return the first "word" of string
417
c ++ & remove whitespaces around
418
c ++ Needed to correct a bug in "get_" routines
419
c ++ Michel Herquet - CP3 - 05-04-2006
421
c +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
423
subroutine firststring(first,string)
431
do while(temp(1:1) .eq. ' ')
432
temp=temp(2:len(temp))
434
first=temp(1:index(temp,' ')-1)