Line data Source code
1 : module history_defaults
2 : !-----------------------------------------------------------------------
3 : !
4 : ! Purpose: contains calls to setup default history stuff that has not found
5 : ! a proper home yet. Shouldn't really exist.
6 : !
7 : ! Public functions/subroutines:
8 : ! bldfld
9 : !
10 : ! Author: B.A. Boville from code in cam_history.F90
11 : !-----------------------------------------------------------------------
12 : use constituents, only: pcnst, cnst_name
13 :
14 : use cam_history, only: addfld, add_default, horiz_only
15 : implicit none
16 :
17 : PRIVATE
18 :
19 : public :: bldfld
20 :
21 : #if ( defined BFB_CAM_SCAM_IOP )
22 : public :: initialize_iop_history
23 : #endif
24 :
25 : CONTAINS
26 :
27 :
28 : !#######################################################################
29 1536 : subroutine bldfld ()
30 : !
31 : !-----------------------------------------------------------------------
32 : !
33 : ! Purpose:
34 : !
35 : ! Build Master Field List of all possible fields in a history file. Each field has
36 : ! associated with it a "long_name" netcdf attribute that describes what the field is,
37 : ! and a "units" attribute.
38 : !
39 : ! Method: Call a subroutine to add each field
40 : !
41 : ! Author: CCM Core Group
42 : !
43 : !-----------------------------------------------------------------------
44 : !
45 : ! Local workspace
46 : !
47 : integer m ! Index
48 :
49 : !jt
50 : !jt Maybe add this to scam specific initialization
51 : !jt
52 :
53 : #if ( defined BFB_CAM_SCAM_IOP )
54 : call addfld ('CLAT1&IC', horiz_only, 'I', ' ','cos lat for bfb testing', gridname='gauss_grid')
55 : call add_default ('CLAT1&IC',0,'I')
56 : call addfld ('CLON1&IC', horiz_only, 'I', ' ','cos lon for bfb testing', gridname='gauss_grid')
57 : call add_default ('CLON1&IC',0,'I')
58 : call addfld ('PHI&IC', horiz_only, 'I', ' ','lat for bfb testing', gridname='gauss_grid')
59 : call add_default ('PHI&IC',0, 'I')
60 : call addfld ('LAM&IC', horiz_only, 'I', ' ','lon for bfb testing', gridname='gauss_grid')
61 : call add_default ('LAM&IC',0, 'I')
62 : #endif
63 :
64 : call addfld ('DQP', (/ 'lev' /), 'A', 'kg/kg/s','Specific humidity tendency due to precipitation', &
65 3072 : gridname='physgrid')
66 :
67 1536 : end subroutine bldfld
68 :
69 : !#######################################################################
70 : #if ( defined BFB_CAM_SCAM_IOP )
71 : subroutine initialize_iop_history()
72 : !
73 : ! !DESCRIPTION:
74 : ! !USES:
75 : use iop
76 : use phys_control, only: phys_getopts
77 : ! !ARGUMENTS:
78 : implicit none
79 : !
80 : ! !CALLED FROM:
81 : !
82 : ! !REVISION HISTORY:
83 : !
84 : !EOP
85 : !
86 : ! !LOCAL VARIABLES:
87 : integer m
88 : !-----------------------------------------------------------------------
89 : call addfld ('CLAT', horiz_only, 'A', ' ', 'cos lat for bfb testing', gridname='gauss_grid')
90 : call add_default ('CLAT',2,' ')
91 : call addfld ('q', (/ 'lev' /), 'A', 'kg/kg', 'Q for scam',gridname='gauss_grid')
92 : call add_default ('q',2, ' ')
93 : call addfld ('u', (/ 'lev' /), 'A', 'm/s', 'U for scam',gridname='gauss_grid')
94 : call add_default ('u',2,' ')
95 : call addfld ('v', (/ 'lev' /), 'A', 'm/s', 'V for scam',gridname='gauss_grid')
96 : call add_default ('v',2,' ')
97 : call addfld ('t', (/ 'lev' /), 'A', 'K', 'Temperature for scam',gridname='gauss_grid')
98 : call add_default ('t',2,' ')
99 : call addfld ('Tg', horiz_only, 'A', 'K', 'Surface temperature (radiative) for scam',gridname='physgrid')
100 : call add_default ('Tg',2,' ')
101 : call addfld ('Ps', horiz_only, 'A', 'Pa', 'Ps for scam',gridname='gauss_grid')
102 : call add_default ('Ps',2,' ')
103 : call addfld ('divT3d', (/ 'lev' /), 'A', 'K', 'Dynamics Residual for T',gridname='gauss_grid')
104 : call add_default ('divT3d',2,' ')
105 : call addfld ('divU3d', (/ 'lev' /), 'A', 'K', 'Dynamics Residual for U',gridname='gauss_grid')
106 : call add_default ('divU3d',2,' ')
107 : call addfld ('divV3d', (/ 'lev' /), 'A', 'K', 'Dynamics Residual for V',gridname='gauss_grid')
108 : call add_default ('divV3d',2,' ')
109 : call addfld ('fixmas', horiz_only, 'A', 'percent','Mass fixer',gridname='gauss_grid')
110 : call add_default ('fixmas',2,' ')
111 : call addfld ('beta', horiz_only, 'A', 'percent','Mass fixer',gridname='gauss_grid')
112 : call add_default ('beta',2,' ')
113 : do m=1,pcnst
114 : call addfld (trim(cnst_name(m))//'_dten', (/ 'lev' /), 'A', 'kg/kg', &
115 : trim(cnst_name(m))//' IOP Dynamics Residual for '//trim(cnst_name(m)),gridname='gauss_grid')
116 : call add_default (trim(cnst_name(m))//'_dten',2,' ')
117 : call addfld (trim(cnst_name(m))//'_alph', horiz_only, 'A', 'kg/kg',trim(cnst_name(m))//' alpha constituent fixer', &
118 : gridname='gauss_grid')
119 : call add_default (trim(cnst_name(m))//'_alph',2,' ')
120 : call addfld (trim(cnst_name(m))//'_dqfx', (/ 'lev' /), 'A', 'kg/kg',trim(cnst_name(m))//' dqfx3 fixer', &
121 : gridname='gauss_grid')
122 : call add_default (trim(cnst_name(m))//'_dqfx',2,' ')
123 : end do
124 : call addfld ('shflx', horiz_only, 'A', 'W/m2', 'Surface sensible heat flux for scam',gridname='physgrid')
125 : call add_default ('shflx',2,' ')
126 : call addfld ('lhflx', horiz_only, 'A', 'W/m2', 'Surface latent heat flux for scam',gridname='physgrid')
127 : call add_default ('lhflx',2,' ')
128 : call addfld ('trefht', horiz_only, 'A', 'K', 'Reference height temperature',gridname='physgrid')
129 : call add_default ('trefht',2,' ')
130 : call addfld ('Tsair', horiz_only, 'A', 'K', 'Reference height temperature for scam',gridname='physgrid')
131 : call add_default ('Tsair',2,' ')
132 : call addfld ('phis', horiz_only, 'I', 'm2/s2','Surface geopotential for scam',gridname='physgrid')
133 : call add_default ('phis',2,' ')
134 : call addfld ('Prec', horiz_only, 'A', 'm/s', 'Total (convective and large-scale) precipitation rate for scam', &
135 : gridname='physgrid')
136 : call add_default ('Prec',2,' ')
137 : call addfld ('omega', (/ 'lev' /), 'A', 'Pa/s', 'Vertical velocity (pressure)',gridname='physgrid')
138 : call add_default ('omega',2,' ')
139 :
140 : end subroutine initialize_iop_history
141 : #endif
142 :
143 : end module history_defaults
|