9 use fv3jedi_lm_utils_mod,
only: fv3jedi_traj => fv3jedi_lm_traj, deallocate_traj
19 public :: fv3jedi_traj
29 subroutine set(self, state)
32 type(fv3jedi_traj),
intent(inout) :: self
35 integer :: isc,iec,jsc,jec,npz
38 real(kind=
kind_real),
allocatable,
dimension(:,:,:) :: u_tmp
39 real(kind=
kind_real),
allocatable,
dimension(:,:,:) :: v_tmp
41 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: phis
42 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: frocean
43 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: frland
44 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: varflt
45 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: ustar
46 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: bstar
47 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: zpbl
48 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: cm
49 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: ct
50 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: cq
51 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: kcbl
52 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: tsm
53 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: khl
54 real(kind=
kind_real),
pointer,
dimension(:,:,:) :: khu
63 allocate(self%u (isc:iec, jsc:jec, npz))
64 allocate(self%v (isc:iec, jsc:jec, npz))
65 allocate(self%ua (isc:iec, jsc:jec, npz))
66 allocate(self%va (isc:iec, jsc:jec, npz))
67 allocate(self%t (isc:iec, jsc:jec, npz))
68 allocate(self%delp (isc:iec, jsc:jec, npz))
69 allocate(self%qv (isc:iec, jsc:jec, npz))
70 allocate(self%qi (isc:iec, jsc:jec, npz))
71 allocate(self%ql (isc:iec, jsc:jec, npz))
72 allocate(self%o3 (isc:iec, jsc:jec, npz))
73 allocate(self%w (isc:iec, jsc:jec, npz))
74 allocate(self%delz (isc:iec, jsc:jec, npz))
75 allocate(self%qls (isc:iec, jsc:jec, npz))
76 allocate(self%qcn (isc:iec, jsc:jec, npz))
77 allocate(self%cfcn (isc:iec, jsc:jec, npz))
78 allocate(self%phis (isc:iec, jsc:jec))
79 allocate(self%frocean(isc:iec, jsc:jec))
80 allocate(self%frland (isc:iec, jsc:jec))
81 allocate(self%varflt (isc:iec, jsc:jec))
82 allocate(self%ustar (isc:iec, jsc:jec))
83 allocate(self%bstar (isc:iec, jsc:jec))
84 allocate(self%zpbl (isc:iec, jsc:jec))
85 allocate(self%cm (isc:iec, jsc:jec))
86 allocate(self%ct (isc:iec, jsc:jec))
87 allocate(self%cq (isc:iec, jsc:jec))
88 allocate(self%kcbl (isc:iec, jsc:jec))
89 allocate(self%ts (isc:iec, jsc:jec))
90 allocate(self%khl (isc:iec, jsc:jec))
91 allocate(self%khu (isc:iec, jsc:jec))
94 self%u = 0.0_kind_real
95 self%v = 0.0_kind_real
96 self%ua = 0.0_kind_real
97 self%va = 0.0_kind_real
98 self%t = 0.0_kind_real
99 self%delp = 0.0_kind_real
100 self%qv = 0.0_kind_real
101 self%qi = 0.0_kind_real
102 self%ql = 0.0_kind_real
103 self%o3 = 0.0_kind_real
104 self%w = 0.0_kind_real
105 self%delz = 0.0_kind_real
106 self%qls = 0.0_kind_real
107 self%qcn = 0.0_kind_real
108 self%cfcn = 0.0_kind_real
109 self%phis = 0.0_kind_real
110 self%frocean = 0.0_kind_real
111 self%frland = 0.0_kind_real
112 self%varflt = 0.0_kind_real
113 self%ustar = 0.0_kind_real
114 self%bstar = 0.0_kind_real
115 self%zpbl = 0.0_kind_real
116 self%cm = 0.0_kind_real
117 self%ct = 0.0_kind_real
118 self%cq = 0.0_kind_real
119 self%kcbl = 0.0_kind_real
120 self%ts = 0.0_kind_real
121 self%khl = 0.0_kind_real
122 self%khu = 0.0_kind_real
125 allocate(u_tmp(isc:iec , jsc:jec+1, npz))
126 allocate(v_tmp(isc:iec+1, jsc:jec , npz))
128 call state%get_field(
'ud' , u_tmp )
129 call state%get_field(
'vd' , v_tmp )
130 call state%get_field(
't' , self%t )
131 call state%get_field(
'delp', self%delp )
132 call state%get_field(
'sphum' , self%qv )
134 self%u = u_tmp(isc:iec, jsc:jec, :)
135 self%v = v_tmp(isc:iec, jsc:jec, :)
137 deallocate(u_tmp, v_tmp)
140 if (state%has_field(
'ua' ))
call state%get_field(
'ua' , self%ua )
141 if (state%has_field(
'va' ))
call state%get_field(
'va' , self%va )
142 if (state%has_field(
'ice_wat'))
call state%get_field(
'ice_wat', self%qi )
143 if (state%has_field(
'liq_wat'))
call state%get_field(
'liq_wat', self%ql )
144 if (state%has_field(
'o3mr' ))
call state%get_field(
'o3mr' , self%o3 )
145 if (state%has_field(
'w' ))
call state%get_field(
'w' , self%w )
146 if (state%has_field(
'delz' ))
call state%get_field(
'delz' , self%delz)
147 if (state%has_field(
'qls' ))
call state%get_field(
'qls' , self%qls )
148 if (state%has_field(
'qcn' ))
call state%get_field(
'qcn' , self%qcn )
149 if (state%has_field(
'cfcn' ))
call state%get_field(
'cfcn' , self%cfcn)
152 if (state%has_field(
'phis'))
then
153 call state%get_field(
'phis', phis)
154 self%phis = phis(:,:,1)
156 if (state%has_field(
'frocean'))
then
157 call state%get_field(
'frocean', frocean)
158 self%frocean = frocean(:,:,1)
160 if (state%has_field(
'frland'))
then
161 call state%get_field(
'frland', frland)
162 self%frland = frland(:,:,1)
164 if (state%has_field(
'varflt'))
then
165 call state%get_field(
'varflt', varflt)
166 self%varflt = varflt(:,:,1)
168 if (state%has_field(
'ustar'))
then
169 call state%get_field(
'ustar', ustar)
170 self%ustar = ustar(:,:,1)
172 if (state%has_field(
'bstar'))
then
173 call state%get_field(
'bstar', bstar)
174 self%bstar = bstar(:,:,1)
176 if (state%has_field(
'zpbl'))
then
177 call state%get_field(
'zpbl', zpbl)
178 self%zpbl = zpbl(:,:,1)
180 if (state%has_field(
'cm'))
then
181 call state%get_field(
'cm', cm)
184 if (state%has_field(
'ct'))
then
185 call state%get_field(
'ct', ct)
188 if (state%has_field(
'cq'))
then
189 call state%get_field(
'cq', cq)
192 if (state%has_field(
'kcbl'))
then
193 call state%get_field(
'kcbl', kcbl)
194 self%kcbl = kcbl(:,:,1)
196 if (state%has_field(
'tsm'))
then
197 call state%get_field(
'tsm', tsm)
200 if (state%has_field(
'khl'))
then
201 call state%get_field(
'khl', khl)
202 self%khl = khl(:,:,1)
204 if (state%has_field(
'khu'))
then
205 call state%get_field(
'khu', khu)
206 self%khu = khu(:,:,1)
216 type(fv3jedi_traj),
pointer :: self
218 call deallocate_traj(self)