136 |
|
|
137 |
!******************************** |
!******************************** |
138 |
|
|
139 |
function start_inter_3d(varname, lon_in2, lat_in2, pls_in) |
subroutine start_inter_3d(varname, lon_in2, lat_in2, pls_in, var3d) |
140 |
|
|
141 |
! This procedure gets a 3D variable from a file and does the |
! This procedure gets a 3D variable from a file and does the |
142 |
! interpolations needed. |
! interpolations needed. |
150 |
CHARACTER(len=*), intent(in):: varname |
CHARACTER(len=*), intent(in):: varname |
151 |
REAL, intent(in):: lon_in2(:), lat_in2(:) |
REAL, intent(in):: lon_in2(:), lat_in2(:) |
152 |
REAL, intent(in):: pls_in(:, :, :) |
REAL, intent(in):: pls_in(:, :, :) |
153 |
|
REAL, intent(out):: var3d(:, :, :) |
|
REAL start_inter_3d(size(lon_in2), size(pls_in, 2), size(pls_in, 3)) |
|
154 |
|
|
155 |
! LOCAL: |
! LOCAL: |
156 |
INTEGER iml, jml, lml |
INTEGER iml, jml, lml |
166 |
|
|
167 |
print *, "Call sequence information: start_inter_3d" |
print *, "Call sequence information: start_inter_3d" |
168 |
|
|
169 |
iml = assert_eq(size(pls_in, 1), size(lon_in2), "start_inter_3d iml") |
iml = assert_eq(size(pls_in, 1), size(lon_in2), size(var3d, 1), & |
170 |
jml = size(pls_in, 2) |
"start_inter_3d iml") |
171 |
lml = size(pls_in, 3) |
jml = assert_eq(size(pls_in, 2), size(var3d, 2), "start_inter_3d jml") |
172 |
|
lml = assert_eq(size(pls_in, 3), size(var3d, 3), "start_inter_3d lml") |
173 |
|
|
174 |
print *, "iml = ", iml, ", jml = ", jml |
print *, "iml = ", iml, ", jml = ", jml |
175 |
print *, 'Going into flinget to extract the 3D field.' |
print *, "varname = ", varname |
|
print *, "fid_dyn = ", fid_dyn, ", varname = ", varname |
|
176 |
print *, "iml_dyn = ", iml_dyn, ", jml_dyn = ", jml_dyn, & |
print *, "iml_dyn = ", iml_dyn, ", jml_dyn = ", jml_dyn, & |
177 |
", llm_dyn = ", llm_dyn, ", ttm_dyn = ", ttm_dyn |
", llm_dyn = ", llm_dyn, ", ttm_dyn = ", ttm_dyn |
178 |
|
print *, 'Going into flinget to extract the 3D field.' |
179 |
CALL flinget(fid_dyn, varname, iml_dyn, jml_dyn, llm_dyn, ttm_dyn, 1, 1, & |
CALL flinget(fid_dyn, varname, iml_dyn, jml_dyn, llm_dyn, ttm_dyn, 1, 1, & |
180 |
var_ana3d) |
var_ana3d) |
181 |
|
|
196 |
ay(:) = var_tmp3d(ii, ij, llm_dyn:1:-1) |
ay(:) = var_tmp3d(ii, ij, llm_dyn:1:-1) |
197 |
yder(:) = SPLINE(ax, ay) |
yder(:) = SPLINE(ax, ay) |
198 |
do il=1, lml |
do il=1, lml |
199 |
start_inter_3d(ii, ij, il) & |
var3d(ii, ij, il) = SPLINT(ax, ay, yder, pls_in(ii, ij, il)) |
|
= SPLINT(ax, ay, yder, pls_in(ii, ij, il)) |
|
200 |
END do |
END do |
201 |
ENDDO |
ENDDO |
202 |
ENDDO |
ENDDO |
203 |
start_inter_3d(iml, :, :) = start_inter_3d(1, :, :) |
var3d(iml, :, :) = var3d(1, :, :) |
204 |
|
|
205 |
END function start_inter_3d |
END subroutine start_inter_3d |
206 |
|
|
207 |
END MODULE startdyn |
END MODULE startdyn |