modules.tex 44 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982
  1. This is a technical documentation of the PUMA-II model. In the following, the purposes of the
  2. individual modules is given and the general structure and possible input and output
  3. opportunities
  4. (namelist, files) are explained.
  5. %------------------------------------------------------------------------
  6. % \clearpage
  7. \begin{center}
  8. \begin{tabular}{|p{14cm}|}
  9. \hline
  10. \vspace{-5mm} \section{fluxmod.f90} \vspace{-5mm} \\
  11. \hline
  12. \vspace{1mm} {\bf General} The module {\module fluxmod.f90} contains subroutines to
  13. compute the different surface fluxes and to perform the vertical diffusion. The interface to the
  14. main PUMA module {\module puma.f90} is given by the subroutines {\sub fluxini}, {\sub
  15. fluxstep} and {\sub fluxstop} which are called in {\module puma.f90} from the subroutines
  16. {\sub prolog}, {\sub gridpointd} and {\sub epilog}, respectively. \vspace{3mm} \\
  17. \hline
  18. \vspace{1mm} {\bf Input/Output} {\module fluxmod.f90} does not use any extra input file or
  19. output file and is controlled by the namelist {\nam fluxpar} which is part of the namelist file
  20. {\file puma$\_$namelist}:
  21. \vspace{1mm}
  22. \begin{center}
  23. \begin{tabular}{l l p{7cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  24. Parameter & Type & Purpose & Default \\
  25. &&&\\
  26. NEVAP & Integer & Switch for surface evaporation (0~=~off, 1~=~ on) & 1 \\
  27. NSHFL & Integer &Switch for surface sensible heat flux (0~=~off, 1~=~ on) & 1 \\
  28. NSTRESS & Integer & Switch for surface wind stress (0~=~off, 1~=~on) & 1 \\
  29. NTSA & Integer & Switch for computing the near surface air temperature which is used for the
  30. Richardson number (1~=~potential temperature, 2~=~virtual potential temperature)& 2 \\
  31. NVDIFF & Integer & Switch for vertical diffusion (0~=~off, 1~=~on) & 1 \\
  32. VDIFF$\_$LAMM & Real & Tuning parameter for vertical diffusion & 160. \\
  33. VDIFF$\_$B & Real &Tuning parameter for vertical diffusion & 5. \\
  34. VDIFF$\_$C & Real &Tuning parameter for vertical diffusion & 5. \\
  35. VDIFF$\_$D & Real &Tuning parameter for vertical diffusion & 5. \\
  36. \end{tabular}
  37. \end{center}
  38. \vspace{3mm} \\
  39. \hline
  40. \vspace{2mm} {\bf Structure} Internally, {\module fluxmod.f90} uses the FORTRAN-90
  41. module {\modu fluxmod}, which uses the global common module {\modu pumamod} from
  42. {\module pumamod.f90}. Subroutine {\sub fluxini} reads the namelist and, if the parallel
  43. version
  44. is used, distributes the namelist parameters to the different processes. Subroutine {\sub
  45. fluxstep}
  46. calls the subroutine {\sub surflx} to compute the surface fluxes and calls the subroutine {\sub
  47. vdiff} to do the vertical diffusion. Subroutine {\sub fluxstop} is a dummy subroutine since there
  48. is nothing to do to finalize the computations in {\module fluxmod.f90}. The computation of the
  49. surface fluxes in {\sub surflx} is spitted into several parts. After initializing the stability
  50. dependent transfer coefficients, the subroutines {\sub mkstress}, {\sub mkshfl} and {\sub
  51. mkevap} do the computations which are related to the surface wind stress, the surface sensible
  52. heat flux and the surface evaporation, respectively. \vspace{3mm} \\
  53. \hline
  54. \end{tabular}
  55. \end{center}
  56. \newpage
  57. %--------------------------------------------------------------------------------
  58. \begin{center}
  59. \begin{tabular}{|p{14cm}|}
  60. \hline
  61. \vspace{-5mm} \section{miscmod.f90} \vspace{-5mm} \\
  62. \hline
  63. \vspace{1mm} {\bf General} The module {\module miscmod.f90} contains miscellaneous
  64. subroutines which do not fit well to other modules. The interface to the main PUMA module
  65. {\module puma.f90} is given by the subroutines {\sub miscini}, {\sub miscstep} and {\sub
  66. miscstop} which are called in {\module puma.f90} from the subroutines {\sub prolog}, {\sub
  67. gridpointd} and {\sub epilog}, respectively. A subroutine to eliminate spurious negative
  68. humidity and an optional subroutine to relax the upper level temperature towards a prescribed
  69. distribution is included in {\module miscmod.f90}. \vspace{3mm} \\
  70. \hline
  71. \vspace{1mm} {\bf Input/Output} {\module miscmod.f90} does not use any extra output file.
  72. If the relaxation is switched on, a climatological annual cycle of the prescribed upper level
  73. temperature distribution [K] is read from the external file {\file CLIMATEFILE} (see namelist).
  74. The file format is formatted SERVICE format with (8I10) for the headers and (8E12.6) for the
  75. temperature fields. To assign the field, the header needs to have the header information code
  76. 130,
  77. level 1 and a date identifier of the form {\it yymmdd} or {\it mmdd} where {\it mm} goes from
  78. 01 to 12 (January to December). Fields which are not needed will be skipped. The module is
  79. controlled by the namelist {\nam miscpar} which is part of the namelist file {\file
  80. puma$\_$namelist}:
  81. \vspace{1mm}
  82. \begin{center}
  83. \begin{tabular}{l l p{5cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  84. Parameter & Type & Purpose & default \\
  85. &&& \\
  86. NFIXER & Integer & Switch for correction of negative moisture (0 = off , 1= on) & 1 \\
  87. NUDGE & Integer & Switch for temperature relaxation in the uppermost level (0 = off , 1= on)
  88. & 0 \\
  89. TNUDGE& Real & Time scale [d] of the temperature relaxation & 10. \\
  90. CLIMATEFILE& Character & Name of the file containing the prescribed temperature
  91. distribution & surface\underline{ }parameter
  92. \end{tabular}
  93. \end{center}
  94. \vspace{3mm} \\
  95. \hline
  96. \vspace{2mm} {\bf Structure} Internally, {\module miscmod.f90} uses the FORTRAN-90
  97. module {\modu miscmod}, which uses the global common module {\modu pumamod} from
  98. {\module pumamod.f90}. Subroutine {\sub miscini} reads the namelist and, if the parallel
  99. version is used, distributes the namelist parameters to the different processes. If the relaxation
  100. is
  101. switched on, the climatological temperature is read from {\file CLIMATEFILE} and distributed
  102. to the processors. Subroutine {\sub miscstep} calls the subroutine {\sub fixer} to eliminate
  103. spurious negative humidity arising from the spectral method and, if the relaxation is switched
  104. on,
  105. calls the subroutine {\sub mknudge} to do the temperature nudging. Subroutine {\sub miscstop}
  106. is a dummy subroutine since there is nothing to do to finalize the computations in {\module
  107. miscmod.f90}. \vspace{3mm} \\
  108. \hline
  109. \end{tabular}
  110. \end{center}
  111. \newpage
  112. %--------------------------------------------------------------------------------
  113. \clearpage
  114. \begin{center}
  115. \begin{tabular}{|p{14cm}|}
  116. \hline
  117. \vspace{-5mm} \section{surfmod.f90} \vspace{-5mm} \\
  118. \hline
  119. \vspace{1mm} {\bf General} The module {\module surfmod.f90} deals as an interface between
  120. the atmospheric part of the model and modules, or models, for the land and the oceans. The
  121. interface to the main PUMA module {\module puma.f90} is given by the subroutines {\sub
  122. surfini}, {\sub surfstep} and {\sub surfstop} which are called in {\module puma.f90} from the
  123. subroutines {\sub prolog}, {\sub gridpointd} and {\sub epilog}, respectively. Calls to
  124. subroutines
  125. named {\sub landini}, {\sub landstep} and {\sub landstop} and {\sub seaini}, {\sub seastep} and
  126. {\sub seastop} provide the interface to land and the ocean modules, respectively.
  127. \vspace{3mm}
  128. \\
  129. \hline
  130. \vspace{1mm} {\bf Input/Output} {\module surfmod.f90} reads the land-sea mask [frac.] and
  131. the orography (surface geopotential) [m$^2$/s$^2$] from file {\file INPUTFILE} (see
  132. namelist).
  133. The file format is formatted SERVICE format with (8I10) for the headers and (8E12.6) for the
  134. fields. To
  135. assign
  136. the fields, the headers need to have the header information code 129 for the surface geopotential
  137. and 172 for the land-sea mask (1. = land; 0. = sea). Fields which are not needed will be skipped.
  138. {\module surfmod.f90} is controlled by the namelist {\nam surfpar} which is part of the
  139. namelist file {\file puma$\_$namelist}:
  140. \vspace{1mm}
  141. \begin{center}
  142. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  143. Parameter & Type & Purpose & default \\
  144. &&&\\
  145. NSURF & Integer & Debug switch & not active \\
  146. NOROMAX & Integer & Resolution of orography & NTRU \\
  147. OROSCALE & Real & Scaling factor for orography & 1.0 \\
  148. INPUTFILE& Character & Name of the input file & surface\underline{ }parameter
  149. \end{tabular}
  150. \end{center}
  151. \vspace{3mm} \\
  152. \hline
  153. \vspace{2mm} {\bf Structure} Internally, {\module surfmod.f90} uses the FORTRAN-90
  154. module {\modu surfmod}, which uses the global common module {\modu pumamod} from
  155. {\module pumamod.f90}. Subroutine {\sub surfini} reads the namelist and, if the parallel
  156. version
  157. is used, distributes the namelist parameters to the different processes. If the run is not started
  158. from a restart file (NRESTART from namelist {\nam inp}of {\module puma.f90} is 0), the
  159. land-sea-mask and the
  160. orography are read from file {\file INPUTFILE}. According to the namelist input, the
  161. orography
  162. is scaled by OROSCALE, transfered into spectral space and truncated to NOROMAX. Calls to
  163. subroutines {\sub landini} and {\sub seaini} are the interfaces to the respective initialization
  164. routines contained in the land and ocean modules. During the run, the interface to land and
  165. ocean
  166. is given by calls to the external subroutines {\sub landstep} and {\sub seastep}, which are called
  167. by {\sub surfstep}. At the end of the integration, interface subroutines {\sub landstop} and {\sub
  168. seastop} are called by {\sub surfstop}. \vspace{3mm} \\
  169. \hline
  170. \end{tabular}
  171. \end{center}
  172. \newpage
  173. %--------------------------------------------------------------------------------
  174. \begin{center}
  175. \begin{tabular}{|p{14cm}|}
  176. \hline
  177. \vspace{-5mm} \section{fftmod.f90} \vspace{-5mm} \\
  178. \hline
  179. \vspace{1mm} {\bf General} The module {\module fftmod.f90} contains all subroutines
  180. necessary to perform the fast fourier transformation and its inverse. The interface to the main
  181. PUMA module {\module puma.f90} and to other modules (at the moment {\module
  182. surfmod.f90}, {\module
  183. legmod.f90} and {\module rainmod.f90}) is given by the subroutines {\sub gp2fc} and {\sub
  184. fc2gp} which are called in {\module puma.f90} from the subroutines {\sub gridpointa} and
  185. {\sub gridpointd}, in {\module surfmod.f90} from {\sub surfini}, in {\module legmod.f90}
  186. from {\sub sp2gp}, and in {\module rainmod.f90} from {\sub mkdqdtgp}. \vspace{3mm} \\
  187. \hline
  188. \vspace{1mm} {\bf Input/Output} {\module fftmod.f90} does not use any extra input file or
  189. output file. No namelist input is required. \vspace{3mm} \\
  190. \hline
  191. \vspace{2mm} {\bf Structure} Internally, {\module fftmod.f90} uses the FORTRAN-90 module
  192. {\modu fftmod}, which uses no other modules. Subroutine {\sub gp2fc} performs the
  193. transformation from grid point space into fourier space while the subroutine {\sub fc2gp} does
  194. the transformation from fourier space into grid point space. Both routines use several
  195. subroutines
  196. to do the direct or indirect transformation for different factors. When {\sub gp2fc} or {\sub
  197. fc2gp} is called the first time, {\sub fftini} is called to do the initialization of the FFT.
  198. \vspace{3mm} \\
  199. \hline
  200. \end{tabular}
  201. \end{center}
  202. \newpage
  203. %--------------------------------------------------------------------------------
  204. \begin{center}
  205. \begin{tabular}{|p{14cm}|}
  206. \hline
  207. \vspace{-5mm} \section{landmod.f90} \vspace{-5mm} \\
  208. \hline
  209. \vspace{1mm} {\bf General} The module {\module landmod.f90} contains parameterizations
  210. for
  211. land surface and soil processes which include the simple biome model SIMBA and a model for
  212. the river runoff. The interface to PUMA is given via the module {\module surfmod.f90} by the
  213. subroutines {\sub landini}, {\sub landstep} and {\sub landstop} which are called in {\module
  214. surfmod.f90} from the subroutines {\sub surfini}, {\sub surfstep} and {\sub surfstop},
  215. respectively. \vspace{3mm} \\
  216. \hline
  217. \vspace{1mm} {\bf Input/Output} {\module landmod.f90} reads several surface and soil
  218. parameters either from the initial file {\file STARTFILE} (see namelist) or from the restart file
  219. {\file land\underline{ }restart} which is written at the end of an integration. {\file STARTFILE}
  220. contains
  221. different surface fields which are needed for initialization. The file format is formatted
  222. SERVICE
  223. format with (8I10) for the header and (8E12.6) for the fields.
  224. The file may include the following fields:
  225. surface
  226. geopotential (orography) [m$^2$/s$^2$], land-sea mask [frac.], surface roughness [m],
  227. background albedo [frac.], glacier mask [frac.], bucket size [m], soil temperature [K],
  228. climatological annual cycle of the surface temperature [K], climatological annual cycle of the
  229. soil wetness [m]. To assign the fields, the headers need to have the header information code
  230. 129
  231. for surface geopotential, code 172 for the land-sea mask (1.~=~land; 0.~=~sea), 173 for the
  232. surface
  233. roughness, 174 for the background albedo, 232 for the glacier mask (1.~=~glacier; 0.~=~no
  234. glacier),
  235. 229 for the bucket size, 209 for the soil temperature, 169 for the surface temperature and 140
  236. for
  237. the soil wetness. for the climatological annual cycles of surface temperature and soil wetness,
  238. a
  239. date identifier of the form {\it yymmdd} or {\it mmdd} where {\it mm} goes from 01 to 12
  240. (January to December) is required. Fields which are not needed will be skipped. If there are
  241. some
  242. fields not present in the {\file STARTFILE} default values will be used which can be set in
  243. the
  244. namelist. The use of some fields depend on the setting of some namelist parameters. The
  245. restart
  246. file {\file land\underline{ }restart} is an unformatted file which contains all variables needed
  247. to
  248. continue the
  249. run. {\module landmod.f90} is controlled by the namelist {\nam landpar} given in the
  250. namelist
  251. file {\file land\underline{ }namelist}:
  252. \vspace{1mm}
  253. \begin{center}
  254. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  255. Parameter & Type & Purpose & Default \\
  256. &&&\\
  257. NLANDT & Integer & Switch for surface temperature (1~=~computed; 2~=~climatology) &
  258. 1 \\
  259. NLANDW & Integer & Switch for soil wettness (1~=~computed; 2~=~climatology) & 1 \\
  260. NBIOME & Integer & Switch for biome model SIMBA (1~=~on ; 0~=~off) & 0 \\
  261. ALBLAND & Real & Background albedo & 0.2 \\
  262. DZ0LAND & Real & Roughnesslength [m]& 2.0 \\
  263. DRHSLAND & Real & Wetness factor & 0.25 \\
  264. ALBSMIN & Real& Minimum albedo for snow & 0.4 \\
  265. ALBSMAX & Real& Maximum albedo for snow & 0.8
  266. \end{tabular}
  267. \end{center}
  268. \end{tabular}
  269. \end{center}
  270. \newpage
  271. \begin{center}
  272. \begin{tabular}{|p{14cm}|}
  273. \begin{center}
  274. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  275. Parameter & Type & Purpose & Default \\
  276. &&&\\
  277. ALBGMIN & Real& Minimum albedo for glaciers & 0.6 \\
  278. ALBGMAX & Real& Maximum albedo for glaciers & 0.8 \\
  279. WSMAX & Real& Maximum field capacity of soil water (bucket size) [m] & 0.5 \\
  280. DRHSFULL & Real& Threshold above which wetness factor is 1 & 0.4 \\
  281. DZGLAC &Real& Threshold of orography to be glacier (-1.0~=~none) [m] & -1.0 \\
  282. DZTOP &Real& Thickness of the uppermost soil layer [m] & 0.2 \\
  283. DSOILZ(5) & Real Array & Soil layer thicknesses [m] & 0.4,0.8,1.6,3.2,6.4\\
  284. STARTFILE & Character & Initialization file & surface\underline{ }parameter \\
  285. \end{tabular}
  286. \end{center}
  287. \vspace{3mm} \\
  288. \hline
  289. \vspace{2mm} {\bf Structure} Internally, {\module landmod.f90} uses the FORTRAN-90
  290. module {\modu landmod}, which uses the global common module {\modu pumamod} from
  291. {\module pumamod.f90}. Subroutine {\sub landini} reads the namelist and, if the parallel
  292. version is used, distributes the namelist parameters to the different processes. If the run is not
  293. started from a restart file (NRESTART from namelist {\nam inp} of {\module puma.f90}is
  294. 0), the initialization file
  295. {\file STARTFILE} is being read. The soil and the river runoff are initialized via {\sub
  296. soilini}
  297. and {\sub roffini} and different variables are set according to the values given by the namelist
  298. or
  299. the {\file STARTFILE}. If it is a restart (NRESTART~=~1), the restart records are being
  300. read
  301. from {\file land\underline{ }restart}. Additionally, the climatological surface temperatures
  302. and
  303. soil
  304. wetnesses are updated from {\file STARTFILE} if NRESTART~=~2. If NRESTART~=~3
  305. (special application) the bucket size, the roughness length and the albedo are set to the values
  306. given in the namelist. Subroutine {\sub landstep} computes new surface and soil values via
  307. {\sub soilstep} which calls {\sub tands} and {\sub wandr} for the heat and water budgets,
  308. respectively. If NLANDT and/or NLANDW are set to 0, climatological values are used for
  309. the
  310. surface temperature and the soil wetness. Via {\sub roffstep} the river runoff is computed.
  311. Finally
  312. the biome model {\sub simbastep} is called. The land model is finalized by {\sub landstop}
  313. which writes the restart record to {\file land\underline{ }restart}. \vspace{3mm} \\
  314. \hline
  315. \end{tabular}
  316. \end{center}
  317. \newpage
  318. %--------------------------------------------------------------------------------
  319. \begin{center}
  320. \begin{tabular}{|p{14cm}|}
  321. \hline
  322. \vspace{-5mm} \section{legmod.f90} \vspace{-5mm} \\
  323. \hline
  324. \vspace{1mm} {\bf General} The module {\module legmod.f90} contains all subroutines
  325. necessary to perform the Legendre transformation and its inverse. The interface to the main
  326. PUMA module {\module puma.f90} and to other modules (at the moment {\module
  327. surfmod.f90} and {\module rainmod.f90}) is given by the subroutines {\sub legini}, {\sub
  328. gauaw}, {\sub sp2fl}, {\sub invlega}, {\sub invlegd}, {\sub fc2sp}, {\sub dirlega}, {\sub
  329. dirlegd}, {\sub fc3sp}, {\sub uv2dv} and {\sub sp2gp} which are called in {\module
  330. puma.f90}
  331. from the subroutines {\sub prolog}, {\sub gridpointa} and {\sub
  332. gridpointd}, in {\module surfmod.f90} from {\sub surfini}, and in {\module rainmod.f90}
  333. from
  334. {\sub mkdqdtgp}. \vspace{3mm} \\
  335. \hline
  336. \vspace{1mm} {\bf Input/Output} {\module legmod.f90} does not use any extra input file or
  337. output file. No namelist input is required \vspace{3mm} \\
  338. \hline
  339. \vspace{2mm} {\bf Structure} Internally, {\module legmod.f90} uses the FORTRAN-90
  340. module
  341. {\modu legmod}, which uses the global common module {\modu pumamod} from
  342. {\module pumamod.f90}. Subroutine {\sub legini} does the initialization. Subroutine {\sub
  343. gauaw} computes the Gaussian latitudes and the corresponding weights. Subroutine {\sub
  344. sp2fl} performs the transformation from spectral to fourier space for multilevel fields. The
  345. Subroutines {\sub invlega} and {\sub invlegd} contain the transformations from spectral to
  346. fourier space for all varibles which are needed in the adiabatic and in the diabatic part of the
  347. model, respectively. Subroutine {\sub fc2sp} does the transformation from fourier to spectral
  348. space. The Subroutines {\sub dirlega} and {\sub dirlegd} contain the transformations from
  349. fourier to spectral space for the tendencies computed in the adiabatic and in the diabatic part
  350. of
  351. the model, respectively.
  352. Subroutine {\sub uv2dv} transforms the fourier coefficients of the zonal and meridional wind
  353. components to spectral coefficients of divergence and vorticity.
  354. \vspace{3mm} \\
  355. \hline
  356. \end{tabular}
  357. \end{center}
  358. \newpage
  359. %--------------------------------------------------------------------------------
  360. \begin{center}
  361. \begin{tabular}{|p{14cm}|}
  362. \hline
  363. \vspace{-5mm} \section{mpimod.f90 and mpimod\underline{ }dummy.f90} \vspace{-5mm}
  364. \\
  365. \hline
  366. \vspace{1mm} {\bf General} The module {\module mpimod.f90} contains interface
  367. subroutines
  368. to the MPI (Message Passing Interface) needed for massive parallel computing. Several MPI
  369. routines are called from the module. The interface to other modules are given by numerous
  370. subroutines which name starts with {\sub mp}. Subroutines from {\module mpimod.f90} are
  371. called
  372. in {\module fluxmod.f90, icemod.f90, landmod.f90, miscmod.f90, oceanmod.f90,
  373. oceanmod50.f90, outmod.f90, puma.f90, radmod.f90, rainmod.f90, seamod.f90,
  374. surfmod.f90}
  375. and {\module visumod.f90}. The module {\module mpimod\underline{ }dummy.f90} is used
  376. instead of {\module mpimod.f90} for simulations on a single processor. {\module
  377. mpimod\underline{ }dummy.f90} contains subroutines having the same name as the
  378. corresponding routine in {\module mpimod.f90}. However, there is no interface to MPI
  379. present
  380. in these routines and most of them are dummies. \vspace{3mm}
  381. \\
  382. \hline
  383. \vspace{1mm} {\bf Input/Output} {\module mpimod.f90} and {\module mpimod\underline{
  384. }dummy} do not use any extra input file or
  385. output file. No namelist input is required \vspace{3mm} \\
  386. \hline
  387. \vspace{2mm} {\bf Structure} Internally, {\module mpimod.f90} uses the FORTRAN-90
  388. module
  389. {\modu mpimod}, which uses the global common module {\modu pumamod} from
  390. {\module pumamod.f90} and the MPI module {\modu mpi}. {\module mpimod\underline{
  391. }dummy.f90} does not use any module. The following subroutines are included in {\module
  392. mpimod.f90}:
  393. \begin{center}
  394. \begin{tabular}{l p{2cm} l}
  395. Subroutine & &Purpose \\
  396. && \\
  397. {\sub mpbci} && broadcast 1 integer \\
  398. {\sub mpbcin} & &broadcast n integers \\
  399. {\sub mpbcr} & &broadcast 1 real \\
  400. {\sub mpbcrn} & &broadcast n reals \\
  401. {\sub mpscin} & &scatter n integers \\
  402. {\sub mpscrn} && scatter n reals \\
  403. {\sub mpscgp} && scatter grid point field \\
  404. {\sub mpgagp} && gather grid point field \\
  405. {\sub mpgallgp} && gather grid point field to all \\
  406. {\sub mpscsp} & &scatter spectral field \\
  407. {\sub mpgasp} && gather spectral field \\
  408. {\sub mpgacs} && gather cross section \\
  409. {\sub mpgallsp} && gather spectral field to all \\
  410. {\sub mpsum} && sum spectral field \\
  411. {\sub mpsumsc} && sum and scatter spectral field \\
  412. {\sub mpsumr} && sum n reals \\
  413. {\sub mpsumbcr}& & sum and broadcast n reals \\
  414. {\sub mpstart} & &initialize MPI \\
  415. {\sub mpstop} & &finalize MPI
  416. \end{tabular}
  417. \end{center}
  418. \end{tabular}
  419. \end{center}
  420. \newpage
  421. \begin{center}
  422. \begin{tabular}{|p{14cm}|}
  423. \begin{center}
  424. \begin{tabular}{l p{2cm} l}
  425. Subroutine & &Purpose \\
  426. && \\
  427. {\sub mpreadgp}& & read and scatter grid point field \\
  428. {\sub mpwritegp}& & gather and write grid point field \\
  429. {\sub mpwritegph} && gather and write (with header) grid point field \\
  430. {\sub mpreadsp} & &read and scatter spectral field \\
  431. {\sub mpwritesp} &&gather and write spectral field \\
  432. {\sub mpi\underline{ }info} && give information about setup \\
  433. \end{tabular}
  434. \end{center}
  435. \vspace{3mm} \\
  436. \hline
  437. \end{tabular}
  438. \end{center}
  439. \newpage
  440. %--------------------------------------------------------------------------------
  441. \begin{center}
  442. \begin{tabular}{|p{14cm}|}
  443. \hline
  444. \vspace{-5mm} \section{outmod.f90} \vspace{-5mm} \\
  445. \hline
  446. \vspace{1mm} {\bf General} The module {\module outmod.f90} controls the data output of
  447. the
  448. model. The interface to the main
  449. PUMA module {\module puma.f90} is given by the subroutines {\sub outini}, {\sub outgp},
  450. {\sub outsp}, {\sub outreset} and {\sub outaccu} which are called in {\module puma.f90}
  451. from
  452. the subroutines {\sub prolog} and {\sub
  453. master}. \vspace{3mm} \\
  454. \hline
  455. \vspace{1mm} {\bf Input/Output} {\module outmod.f90} writes the output data to the file
  456. {\file
  457. puma\underline{ }output} which is an unformatted file. {\file puma\underline{ }output} is
  458. designed to be post processed by the AFTERBURNER program (see EDI) which converts
  459. the model variables to useful output in user friendly format. There is no separate namelist for
  460. {\module outmod.f90} but some parameter of namelist {\nam inp} of {\module puma.f90}
  461. are used to control the format and the output interval. \vspace{3mm} \\
  462. \hline
  463. \vspace{2mm} {\bf Structure} Internally, {\module outmod.f90} uses the global common
  464. module {\modu pumamod} from
  465. {\module pumamod.f90} in several subroutines. Subroutine {\sub outini} does the
  466. initialization. Subroutines {\sub outgp} and {\sub outsp} write the grid point and the spectral
  467. fields to the output file {\file puma\underline{ }output}. {\sub outaccu} accumulates some
  468. output variables over the output interval. {\sub outreset} resets the accumulated arrays to
  469. zero.
  470. \vspace{3mm} \\
  471. \hline
  472. \end{tabular}
  473. \end{center}
  474. \newpage
  475. %--------------------------------------------------------------------------------
  476. \begin{center}
  477. \begin{tabular}{|p{14cm}|}
  478. \hline
  479. \vspace{-5mm} \section{puma.f90} \vspace{-5mm} \\
  480. \hline
  481. \vspace{1mm} {\bf General} The module {\module puma.f90} is the main module of the
  482. model. It includes the main program {\sub puma} and controls the run. From {\module
  483. puma.f90} the interface routines to the modules {\module miscmod.f90}, {\module
  484. fluxmod.f90}, {\module radmod.f90}, {\module rainmod.f90}, {\module surfmod.f90} are
  485. called. The output is done by calling the interface routines to {\module outmod.f90}. In
  486. addition, the adiabatic tendencies and the horizontal diffusion are computed in {\module
  487. puma.f90}. To do the necessary transformations, calls to the modules {\module fftmod.f90}
  488. and {\module legmod.f90} are used. \vspace{3mm} \\
  489. \hline
  490. \vspace{1mm} {\bf Input/Output} {\module puma.f90} does not use any extra input file or
  491. output file. A diagnostic print out is written on standard output. {\module puma.f90} is
  492. controlled by the namelist {\nam inp} which is part of the namelist file {\file
  493. puma$\_$namelist}:
  494. \vspace{1mm}
  495. \begin{center}
  496. \begin{tabular}{l l p{5cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  497. Parameter & Type & Purpose & Default \\
  498. &&&\\
  499. KICK & Integer & Switch for initial white noise disturbance on surface pressure (0~=~none;
  500. 1~=~global; 2~=~hemispherically symmetric; 3~=~one wavenumber only) & 1 \\
  501. NAFTER & Integer &Time interval for output [time steps] & 12 \\
  502. NCOEFF & Integer &Number of spectral coefficients in diagnostic print out & 0 \\
  503. NDEL(NLEV) & Integer Array & Order of the horizontal diffusion & NLEV $\cdot$ 2 \\
  504. NDIAG & Integer & Time interval for diagnostic print out [time steps] & 12\\
  505. NEXP & Integer & Experiment identifier & 0 \\
  506. NEXPER & Integer & Switch for predefined experiments (not used) & 0 \\
  507. NKITS & Integer & Number of initial explicit Euler time steps & 3 \\
  508. NRESTART & Integer & Switch for restart (0~=~initial run; 1~=~normal restart;
  509. 2~=~restart plus update of surface climatology; 3~=~restart plus update of surface parameter
  510. (see {\module landmod.f90})) & 0 \\
  511. NRUN & Integer & Number of time steps to be run & 0 \\
  512. NSTEP & Integer & Current time step (replaced by restart record) & 0 \\
  513. \end{tabular}
  514. \end{center}
  515. \end{tabular}
  516. \end{center}
  517. \newpage
  518. \begin{center}
  519. \begin{tabular}{|p{14cm}|}
  520. \begin{center}
  521. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  522. Parameter & Type & Purpose & Default \\
  523. &&&\\
  524. NSTOP & Integer & Finishing time step & 0 (=~not active) \\
  525. NTSPD & Integer & Number of time steps per day & 24 \\
  526. NDAYS & Integer & Number of days to be run (overwrites NRUN if $>$ 0) & 0 \\
  527. NEQSIG & Integer & Switch for non equally spaced sigma levels (1~=~non equally spaced;
  528. 1~=~equally spaced) & 1 \\
  529. NPRINT & Integer & Switch for extended debug print out (0~=~off; 1~=~on; 2~=~very
  530. extended) & 0\\
  531. NPRHOR & Integer & Number of the grid point to be used for very extended debug print out
  532. &
  533. 0 \\
  534. NPACKSP & Integer & Switch for spectral output (0~=~normal; 1~=~compressed) & 1 \\
  535. NPACKGP & Integer & Switch for grid point output (0~=~normal; 1~=~compressed) & 1 \\
  536. NRAD & Integer & Switch for radiation (0~=~off; 1~=~on) & 1 \\
  537. NFLUX & Integer & Switch for surface fluxes and vertical diffuson (0~=~off; 1~=~on) & 1
  538. \\
  539. NDIAGGP & Integer & Switch for additional diagnostic grid point output (0~=~off; 1~=~on)
  540. & 0\\
  541. NDIAGSP & Integer & Switch for additional diagnostic spectral output (0~=~off; 1~=~on) &
  542. 0 \\
  543. NDIAGCF & Integer & Switch for additional cloud forcing diagnostic (0~=~off; 1~=~on) &
  544. 0
  545. \\
  546. NDIAGGP2D & Integer & Number of additional diagnostic 2-d grid point output (0~=~off;
  547. 1~=~on) & 0 \\
  548. NDIAGGP3D & Integer & Number of additional diagnostic 3-d grid point output (0~=~off;
  549. 1~=~on) & 0 \\
  550. NDIAGSP2D & Integer & Number of additional diagnostic 2-d spectral output (0~=~off;
  551. 1~=~on) & 0 \\
  552. NDIAGSP3D & Integer & Number of additional diagnostic 3-d spectral output (0~=~off;
  553. 1~=~on) & 0 \\
  554. \end{tabular}
  555. \end{center}
  556. \end{tabular}
  557. \end{center}
  558. \newpage
  559. \begin{center}
  560. \begin{tabular}{|p{14cm}|}
  561. \begin{center}
  562. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  563. Parameter & Type & Purpose & Default \\
  564. &&&\\
  565. NDL(NLEV) & Integer Array & Switch for diagnostic print out of a level (0~=~off; 1~=~on)
  566. & NLEV $\cdot$ 0 \\
  567. NHDIFF & Integer & Cut off wave number for horizontal diffusion & 15 \\
  568. NTIME & Integer & Switch for CPU time diagnostics (0~=~off; 1~=~on) & 0 \\
  569. NPERPETUAL & Integer & Switch for perpetual simulations (0~=~annual cycle;
  570. $>$0~=~day
  571. of the year) & 0 \\
  572. DTEP & Real & Equator to pole temperature difference [K] for Newtonian cooling (usually
  573. not used) & 0.0 \\
  574. DTNS & Real & North pole to south pole temperature difference [K] for Newtonian cooling
  575. (usually not used) & 0.0 \\
  576. DTROP & Real & Tropopause height [m] for Newtonian cooling (usually not used) &
  577. 12000.0 \\
  578. DTTRP & Real & Smoothing of the tropopause [K] for Newtonian cooling (usually not used)
  579. & 2 \\
  580. TGR & Real & Surface temperature [K] for Newtonian cooling (usually not used) & 280 \\
  581. TDISSD(NLEV) & Real Array & time scale [d] for the horizontal diffusion of divergence&
  582. NLEV $\cdot$ 0.2 \\
  583. TDISSZ(NLEV) & Real Array & time scale [d] for the horizontal diffusion of vorticity&
  584. NLEV $\cdot$ 1.1 \\
  585. TDISST(NLEV) & Real Array & time scale [d] for the horizontal diffusion of temperature &
  586. NLEV $\cdot$ 5.6 \\
  587. TDISSQ(NLEV) & Real Array & time scale [d] for the horizontal diffusion of moisture&
  588. NLEV $\cdot$ 5.6 \\
  589. PSURF & Real & Global averaged sea level pressure [Pa] & 101325.00 \\
  590. RESTIM(NLEV) & Real Array & Time scale [d] for Newtonian cooling (usually not used)
  591. & NLEV $\cdot$ 0.0 \\
  592. \end{tabular}
  593. \end{center}
  594. \end{tabular}
  595. \end{center}
  596. \newpage
  597. \begin{center}
  598. \begin{tabular}{|p{14cm}|}
  599. \begin{center}
  600. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  601. Parameter & Type & Purpose & Default \\
  602. &&&\\
  603. T0(NLEV) & Real Array& Reference temperature used in the discretization scheme & NLEV
  604. $\cdot$ 250.0 \\
  605. TFRC(NLEV) & Real Array & Time scale [d] for Rayleigh friction (0.0~=~off)& NLEV
  606. $\cdot$ 0.0
  607. \end{tabular}
  608. \end{center}
  609. \vspace{3mm} \\
  610. \hline
  611. \vspace{2mm} {\bf Structure} Internally, {\module fluxmod.f90} uses the FORTRAN-90
  612. global common module {\modu pumamod} from
  613. {\module pumamod.f90}. After starting MPI, the main program {\sub puma} calls {\sub
  614. prolog} for initializing the model. Then, {\sub master} is called to do the time stepping.
  615. Finally, subroutine {\sub epilog} finishes the run. In subroutine {\sub prolog}, calls to
  616. different subroutines, which are part of {\module puma.f90} or are provided by other
  617. modules, initialize various parts of the model: {\sub gauaw} and {\sub inilat} build the grid,
  618. {\sub readnl} reads the namelist and sets some parameter according to the namelist input,
  619. {\sub initpm} and {\sub initsi} initialize some parameter for the physics and the semi
  620. implicit
  621. scheme, respectively. {\sub outini} starts the output. If NRESTART~$>$~0, the restart
  622. record
  623. is read by {\sub restart}, otherwise {\sub initfd} sets the prognostic variables to their initial
  624. values. calls to {\sub miscini} {\sub fluxini}, {\sub radini}, {\sub rainini} and {\sub surfini}
  625. start the initialization of the respective external modules. Finally, the global averaged surface
  626. pressure is set according to PSURF and the orography. Subroutine {\sub master} controls the
  627. time stepping. First, if its not a restart, initial NKITS explicit forward timesteps are
  628. performed.
  629. The main loop is defined by calling {\sub gridpointa} for the adiabatic tendencies, {\sub
  630. spectrala} to add the adiabatic tendencies, {\sub gridpointd} for the diabatic tendencies
  631. (which
  632. are computed by the external modules), {\sub spectrald} to add the diabatic tendencies and
  633. the
  634. interface routines to the output module {\module outmod.f90}. The run is finalized by
  635. subroutine
  636. {\sub epilog} which writes the restart records and calls the respective interface routines of the
  637. external modules. \vspace{3mm} \\
  638. \hline
  639. \end{tabular}
  640. \end{center}
  641. \newpage
  642. %---------------------------------------------------------------------------------------
  643. \begin{center}
  644. \begin{tabular}{|p{14cm}|}
  645. \hline
  646. \vspace{-5mm} \section{pumamod.f90} \vspace{-5mm} \\
  647. \hline
  648. \vspace{1mm} {\bf General} The module {\module pumamod.f90} contains all parameters
  649. and
  650. variables which may be used to share information between {\module puma.f90} and other
  651. modules. No subroutines or programs are included. \vspace{3mm} \\
  652. \hline
  653. \vspace{1mm} {\bf Input/Output} {\module pumamod.f90} does not use any extra input file
  654. or
  655. output file. No namelist input is required \vspace{3mm} \\
  656. \hline
  657. \vspace{2mm} {\bf Structure} Internally, {\module pumamod.f90} is a FORTRAN-90
  658. module named {\modu pumamod}. Names for global parameters, scalars and arrays are
  659. declared and, if possible, values are preset.\vspace{3mm} \\
  660. \hline
  661. \end{tabular}
  662. \end{center}
  663. \newpage
  664. %---------------------------------------------------------------------------------------------
  665. % \clearpage
  666. \begin{center}
  667. \begin{tabular}{|p{14cm}|}
  668. \hline
  669. \vspace{-5mm} \section{radmod.f90} \vspace{-5mm} \\
  670. \hline
  671. \vspace{1mm} {\bf General} The module {\module radmod.f90} contains subroutines to
  672. compute radiative energy fluxes and the temperature tendencies due to long wave and short
  673. wave radiation. The interface to the
  674. main PUMA module {\module puma.f90} is given by the subroutines {\sub radini}, {\sub
  675. radstep} and {\sub radstop} which are called in {\module puma.f90} from the subroutines
  676. {\sub prolog}, {\sub gridpointd} and {\sub epilog}, respectively. \vspace{3mm} \\
  677. \hline
  678. \vspace{1mm} {\bf Input/Output} {\module radmod.f90} does not use an extra output file. If
  679. the Switch for ozone (NO3, see namelist) is set to 2 (externally prescribed), the
  680. climatological
  681. cycle of the ozone distribution is read from the external file {\file OZONEFILE} which name
  682. is given in the namelist. The file format is formatted SERVICE format with (8I10) for the
  683. header and (8E12.6) for the fields. To assign the fields, the headers need to have the header
  684. information code
  685. 200, level going from 1 to NLEV and a date identifier of the form {\it yymmdd} or {\it
  686. mmdd}
  687. where {\it mm} goes from 01 to 12 (January to December).
  688. {\module radmod.f90} is controlled by the namelist {\nam radpar} which is part of the
  689. namelist
  690. file {\file puma$\_$namelist}:
  691. \vspace{1mm}
  692. \begin{center}
  693. \begin{tabular}{l l p{5cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  694. Parameter & Type & Purpose & Default \\
  695. &&&\\
  696. NDCYCLE & Integer & Switch for diurnal cycle of insolation (0~=~off, 1~=~ on) & 0 \\
  697. NO3 & Integer &Switch for ozone (0~=~off, 1~=~idealized distribution, 2~=~externally
  698. presrcibed) & 1 \\
  699. CO2 & Real & CO$_2$ concentration [ppmv] & 360.0 \\
  700. GSOL0 & Real & Solar constant [W/m$^2$] & 1367.0 \\
  701. IYRBP & Integer & Year PB (reference is 1950) to calculate orbit from & -50 \\
  702. NSWR& Integer & Switch for short wave radiation (0~=~off, 1~=~ on) & 1 \\
  703. NLWR& Integer & Switch for long wave radiation (0~=~off, 1~=~ on) & 1 \\
  704. NSOL& Integer & Switch for incoming solar radiation (0~=~off, 1~=~ on) & 1 \\
  705. NSWRCL& Integer & Switch for computed short wave cloud properties (0~=~off, 1~=~ on)
  706. & 1 \\
  707. NRSCAT& Integer & Switch for Rayleigh scattering (0~=~off, 1~=~ on) & 1 \\
  708. RCL1(3) & Real Array & Prescribed cloud albedos [frac.] for high, middle and low level
  709. clouds
  710. (spectral range 1)& 0.15,0.30.0.60 \\
  711. \end{tabular}
  712. \end{center}
  713. \end{tabular}
  714. \end{center}
  715. \newpage
  716. \begin{center}
  717. \begin{tabular}{|p{14cm}|}
  718. \begin{center}
  719. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  720. Parameter & Type & Purpose & Default \\
  721. &&&\\
  722. RCL2(3) & Real Array & Prescribed cloud albedos [frac.] for high, middle and low level
  723. clouds
  724. (spectral range 2) &0.15,0.30.0.60 \\
  725. ACL2(3) & Real Array & Prescribed cloud absorptivities [frac.] for high, middle and low
  726. level
  727. clouds (spectral range 2) &0.05,0.10.0.20 \\
  728. CLGRAY & Real & Prescribed grayness of clouds (-1.0~=~computed) & -1.0 \\
  729. TPOFMT& Real & Tuning for point of mean transmission & 0.15 \\
  730. ACLLWR& Real & Mass absorption coefficient for clouds (long wave) & 0.1 \\
  731. TSWR1 & Real & Tuning of cloud albedo (spectral range 1) & 0.035 \\
  732. TSWR2 & Real & Tuning of cloud back scattering (spectral range 2) & 0.04 \\
  733. TSWR3 & Real & Tuning of cloud single scattering albedo (spectral range 2) & 0.006 \\
  734. OZONEFILE& Character & File for externally prescribed ozone distribution & ozone.dat \\
  735. \end{tabular}
  736. \end{center}
  737. \vspace{3mm} \\
  738. \hline
  739. \vspace{2mm} {\bf Structure} Internally, {\module radmod.f90} uses the FORTRAN-90
  740. module {\modu radmod}, which uses the global common module {\modu pumamod} from
  741. {\module pumamod.f90}. Additionally, the FORTRAN-90
  742. module {\modu orbparam} is used. Subroutine {\sub radini} reads the namelist and, if the
  743. parallel version is used, distributes the namelist parameters to the different processes.
  744. Orbital parameters are computed by calling {\sub orb$\_$params}. If NO3 is set to 2, the
  745. ozone
  746. distribution is read from {\file OZONEFILE}. Subroutine {\sub radstep} calls the subroutines
  747. {\sub solang} and {\sub mko3} to compute the cosine of the solar angle and the ozone
  748. distribution, respectively. The short wave radiative fluxes are calculate in {\sub swr} while
  749. the
  750. long wave radiative fluxes are computed in {\sub lwr}. Subroutine {\sub radstop} is a dummy
  751. subroutine since there is nothing to do to finalize the computations in {\module radmod.f90}.
  752. \vspace{3mm} \\
  753. \hline
  754. \end{tabular}
  755. \end{center}
  756. \newpage
  757. %-----------------------------------------------------
  758. % \clearpage
  759. \begin{center}
  760. \begin{tabular}{|p{14cm}|}
  761. \hline
  762. \vspace{-5mm} \section{rainmod.f90} \vspace{-5mm} \\
  763. \hline
  764. \vspace{1mm} {\bf General} The module {\module rainmod.f90} contains subroutines to
  765. compute large scale and convective precipitation and the related temperature tendencies. In
  766. addition, a parameterization of dry convective mixing of temperature and moisture is
  767. included
  768. and cloud cover is diagnosed. The interface to the main PUMA module {\module puma.f90}
  769. is
  770. given by the subroutines {\sub rainini}, {\sub rainstep} and {\sub rainstop} which are called
  771. in
  772. {\module puma.f90} from the subroutines {\sub prolog}, {\sub gridpointd} and {\sub
  773. epilog},
  774. respectively. \vspace{3mm} \\
  775. \hline
  776. \vspace{1mm} {\bf Input/Output} {\module rainmod.f90} does not use any extra input or
  777. output file and is controlled by the namelist {\nam rainpar} which is part of the namelist file
  778. {\file puma$\_$namelist}:
  779. \vspace{1mm}
  780. \begin{center}
  781. \begin{tabular}{l l p{5cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  782. Parameter & Type & Purpose & Default \\
  783. &&&\\
  784. KBETTA & Integer & Switch for betta in Kuo parameterization (0~=~off, 1~=~ on) & 1 \\
  785. NPRL & Integer &Switch for large scale precipitation (0~=~off, 1~=~on) & 1 \\
  786. NPRC & Integer &Switch for convective precipitation (0~=~off, 1~=~on) & 1 \\
  787. NDCA & Integer &Switch for dry convective adjustment (0~=~off, 1~=~on) & 1 \\
  788. RCRIT(NLEV) & Real Array & Critical relative humidity for cloud formation & computed \\
  789. CLWCRIT1 & Real & Critical vertical velocity for cloud formation [Pa/s] (not active if
  790. CLWCRIT2~$>$~CLWCRIT1) & -0.1 \\
  791. CLWCRIT2 & Real & Critical vertical velocity for cloud formation [Pa/s] (not active if
  792. CLWCRIT2~$>$~CLWCRIT1) & 0.0
  793. \end{tabular}
  794. \end{center}
  795. \vspace{3mm} \\
  796. \hline
  797. \vspace{2mm} {\bf Structure} Internally, {\module rainmod.f90} uses the FORTRAN-90
  798. module {\modu rainmod}, which uses the global common module {\modu pumamod} from
  799. {\module pumamod.f90}. Subroutine {\sub rainini} reads the namelist and, if the parallel
  800. version is used, distributes the namelist parameters to the different processes. Subroutine
  801. {\sub
  802. rainstep} calls the subroutine {\sub mkdqdtgp} to obtain the adiabatic moisture tendencies in
  803. grid point space, which are needed for the Kuo parameterization. {\sub kuo} is called to
  804. compute the convective precipitation and the respective tendencies. Dry convective
  805. adjustment
  806. is performed in {\sub mkdca}. Large scale precipitation is computed in {\sub mklsp}. Finally,
  807. diagnostic clouds are calculated in {\sub mkclouds}. Subroutine {\sub radstop} is a
  808. dummy subroutine since there is nothing to do to finalize the computations in {\module
  809. radmod.f90}. \vspace{3mm} \\
  810. \hline
  811. \end{tabular}
  812. \end{center}
  813. \newpage
  814. %------------------------------------------------------------------
  815. % \clearpage
  816. \begin{center}
  817. \begin{tabular}{|p{14cm}|}
  818. \hline
  819. \vspace{-5mm} \section{seamod.f90} \vspace{-5mm} \\
  820. \hline
  821. \vspace{1mm} {\bf General} The module {\module seamod.f90} is the interface from the
  822. atmosphere to the ocean and the sea ice. The interface to the main PUMA module {\module
  823. puma.f90} is given by the subroutines {\sub seaini}, {\sub seastep} and {\sub seastop} which
  824. are called in {\module puma.f90} from the subroutines {\sub prolog}, {\sub gridpointd} and
  825. {\sub epilog} respectively. \vspace{3mm} \\
  826. \hline
  827. \vspace{1mm} {\bf Input/Output} {\module seamod.f90} reads different surface
  828. parameters either from the file {\file SSTFILE} (see namelist) and the file {\file
  829. ocean$\_$parameter} or from the restart file
  830. {\file sea\underline{ }restart} which is written at the end of an integration.. The files formats
  831. are
  832. unformatted for the restart file, formatted
  833. SERVICE format with (8I10) for the header and (8E12.6) for the fields for {\file SSTFILE}
  834. and formatted
  835. EXTRA format with (4I10) for the header and (6(1X,E12.6)) for the fields for {\file
  836. ocean$\_$parameter}.
  837. The file {\file SSTFILE} may include the following fields: The
  838. climatological annual cycle of the surface temperature [K] and the climatological annual
  839. cycle
  840. of the sea ice compactness [frac.]. To assign the fields, the headers need to have the header
  841. information code 169
  842. for surface temperature and code 210 for the compactness (1~=~ice; 0.~=~open water).
  843. a date identifier of the form {\it yymmdd} or {\it mmdd} where {\it mm} goes from 1 to 12
  844. (January to December) is required. Fields which are not needed will be skipped. The file
  845. {\file
  846. ocean$\_$parameter} includes the following fields: The
  847. climatological annual cycle of the sea surface temperature [K], the climatological annual
  848. cycle
  849. of the mixed layer depth [m] and the climatological average of the deep ocean temperature
  850. [m].
  851. To assign the fields, the order must be as described above (no header information is used).
  852. The
  853. restart file {\file sea\underline{ }restart} contains all variables needed to
  854. continue the run. {\module seamod.f90} is controlled by the namelist {\nam seapar} given in
  855. the namelist file {\file sea\underline{ }namelist}:
  856. \vspace{1mm}
  857. \begin{center}
  858. \begin{tabular}{l l p{5cm} c} % {p{3cm} p{2cm} p{6cm} p{2cm}}
  859. Parameter & Type & Purpose & Default \\
  860. &&&\\
  861. ALBSEA & Real & Albedo for ice free ocean & 0.069 \\
  862. ALBICE & Real & Maximum albedo for sea ice & 0.7 \\
  863. DZ0SEA & Real & Minimum roughness length [m] for ice free ocean & 1.0 $\cdot$
  864. 10$^{-5}$
  865. \\
  866. DZ0ICE & Real & Roughness length [m] for sea ice & 1.0 $\cdot$ 10$^{-3}$ \\
  867. DRHSSEA& Real & Wetness factor for ice free ocean & 1.0 \\
  868. DRHSICE& Real & Wetness factor for sea ice & 1.0 \\
  869. NOCEAN & Integer & Switch for ocean model (0~=~climatological SST, 1~=~ocean model)
  870. & 1 \\
  871. NICE & Integer & Switch for sea ice model (0~=~climatological, 1~=~sea ice model) & 1 \\
  872. \end{tabular}
  873. \end{center}
  874. \end{tabular}
  875. \end{center}
  876. \newpage
  877. \begin{center}
  878. \begin{tabular}{|p{14cm}|}
  879. \begin{center}
  880. \begin{tabular}{l l p{5cm} c} %{p{3cm} p{2cm} p{6cm} p{2cm}}
  881. Parameter & Type & Purpose & Default \\
  882. &&&\\
  883. NCPL$\_$ICE$\_$OCEAN& Integer & ice-ocean coupling time steps & 32 \\
  884. NCPL$\_$ATMOS$\_$ICE & Integer & ice atmosphere coupling time steps & 1 \\
  885. TDEEPSEA & Real &Homogeneous deep ocean temperature [K] & 0.0 \\
  886. DHICEMIN & Real & Minimum sea ice thickness [m] & 0.1 \\
  887. SSTFILE & FILE & File with SST data & surface$\_$parameter \\
  888. \end{tabular}
  889. \end{center}
  890. \vspace{3mm} \\
  891. \hline
  892. \vspace{2mm} {\bf Structure} Internally, {\module seamod.f90} uses the FORTRAN-90
  893. module {\modu seamod}, which uses the global common module {\modu pumamod} from
  894. {\module pumamod.f90}. Subroutine {\sub seaini} reads the namelist and, if the parallel
  895. version is used, distributes the namelist parameters to the different processes. The coupling
  896. interface routines in {\module intermod$\_$atm.f90} are initialized by calling {\sub cplinit}.
  897. If
  898. it is not a restart (i.e.~if NRESTART from {\nam inp} of {\module puma.f90} is 0), the files
  899. {\file SSTFILE} and {\file ocean$\_$parameter} are being read. The climatological sea ice
  900. compactness is converted to a sea ice thickness as initial condition and additional surface
  901. parameters are set. If it is a restart, the restart file {\file sea$\_$restart} is read. Subroutine
  902. {\sub
  903. seastep} accumulates the variables used for the coupling between the atmosphere and the
  904. ocean.
  905. The coupling is done via the sea ice model. There is no direct connection between
  906. atmosphere
  907. and ocean model. If there is no sea ice, the coupling quantities are passed through the ice
  908. model
  909. without changes. A call to {\sub cplexchange$\_$ice} from module {\module
  910. intermod$\_$atm.f90} transfers the atmospheric coupling fluxes to the sea ice model and gets
  911. the sea ice and ocean surface data back. After the call, additional surface parameter are
  912. computed. Subroutine {\sub seastop} finalizes the run and writes the restart records.
  913. \vspace{3mm} \\
  914. \hline
  915. \end{tabular}
  916. \end{center}
  917. \newpage
  918. \clearpage
  919. \section{Files}