106 subroutine cires_ugwpv0_mod_init (me, master, nlunit, input_nml_file, logunit, &
107 fn_nml, lonr, levs, ak, bk, pref, dtp, cdmvgwd, cgwf, &
108 pa_rf_in, tau_rf_in, errmsg, errflg)
116 integer,
intent (in) :: me
117 integer,
intent (in) :: master
118 integer,
intent (in) :: nlunit
119 character (len = *),
intent (in) :: input_nml_file(:)
120 integer,
intent (in) :: logunit
121 character(len=64),
intent (in) :: fn_nml
122 integer,
intent (in) :: lonr
123 integer,
intent (in) :: levs
124 real,
intent (in) :: ak(levs+1), bk(levs+1), pref
125 real,
intent (in) :: dtp
126 real,
intent (in) :: cdmvgwd(2), cgwf(2)
127 real,
intent (in) :: pa_rf_in, tau_rf_in
129 character(len=*),
intent(inout) :: errmsg
130 integer,
intent(inout) :: errflg
133 character(len=256) :: msg
138#ifdef INTERNAL_FILE_NML
139 read (input_nml_file, nml = cires_ugwp_nml)
141 if (me == master) print *, trim(fn_nml),
' GW-namelist file '
143 inquire (file =trim(fn_nml) , exist = exists)
145 if (.not. exists)
then
146 write(errmsg,*)
'separate ugwp :: namelist file: ', trim(fn_nml),
' does not exist'
150 open (unit = nlunit, file = trim(fn_nml), action =
'read', status =
'old', iostat = ios, iomsg = msg)
152 write(errmsg,*)
'ERROR: cannot open namelist file ', trim(fn_nml),
' iostat=', ios,
' msg="' // trim(msg) //
'"'
158 read (nlunit, nml = cires_ugwp_nml)
162 ilaunch = launch_level
167 if (me == master)
then
168 write (logunit, *)
" ================================================================== "
169 write (logunit, *)
"cires_ugwp_cires"
170 write (logunit, nml = cires_ugwp_nml)
175 dxsg = pi2*arad/float(lonr) * knob_ugwp_ndx4lh
177 allocate( kvg(levs+1), ktg(levs+1) )
178 allocate( krad(levs+1), kion(levs+1) )
179 allocate( zkm(levs), pmb(levs) )
180 allocate( rfdis(levs), rfdist(levs) )
185 pmb(k) = 1.e0*(ak(k) + pref*bk(k))
186 zkm(k) = -hpskm*alog(pmb(k)/pref)
191 call init_global_gwdis_v0(levs, zkm, pmb, kvg, ktg, krad, kion)
200 call init_oro_gws_v0( knob_ugwp_wvspec(1), knob_ugwp_azdir(1), &
201 knob_ugwp_stoch(1), knob_ugwp_effac(1), lonr, kxw, cdmvgwd )
205 do_physb_gwsrcs=.true.
213 if (knob_ugwp_solver==1)
then
215 call initsolv_lsatdis_v0(me, master, knob_ugwp_wvspec(2), knob_ugwp_azdir(2), &
216 knob_ugwp_stoch(2), knob_ugwp_effac(2), do_physb_gwsrcs, kxw )
218 if (knob_ugwp_solver==2)
then
220 call initsolv_wmsdis_v0(me, master, knob_ugwp_wvspec(2), knob_ugwp_azdir(2), &
221 knob_ugwp_stoch(2), knob_ugwp_effac(2), do_physb_gwsrcs, kxw)
225 module_is_initialized = .true.