22 |
! Host associated variables appearing and modified in this procedure : |
! Host associated variables appearing and modified in this procedure : |
23 |
! iml_dyn, jml_dyn, llm_dyn, ttm_dyn, fid_dyn, lon_ini, lat_ini, levdyn_ini |
! iml_dyn, jml_dyn, llm_dyn, ttm_dyn, fid_dyn, lon_ini, lat_ini, levdyn_ini |
24 |
|
|
25 |
USE ioipsl, only: flininfo, flinopen_nozoom, flinget |
USE flincom, only: flininfo, flinopen_nozoom, flinget |
26 |
use comgeom, only: aire_2d, apoln, apols |
use comgeom, only: aire_2d, apoln, apols |
27 |
use conf_dat2d_m, only: conf_dat2d |
use conf_dat2d_m, only: conf_dat2d |
28 |
use inter_barxy_m, only: inter_barxy |
use inter_barxy_m, only: inter_barxy |
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. |
143 |
|
|
144 |
USE ioipsl, only: flinget |
USE flincom, only: flinget |
145 |
use numer_rec, only: assert_eq, spline, splint |
use numer_rec, only: assert_eq, spline, splint |
146 |
use inter_barxy_m, only: inter_barxy |
use inter_barxy_m, only: inter_barxy |
147 |
use gr_int_dyn_m, only: gr_int_dyn |
use gr_int_dyn_m, only: gr_int_dyn |
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 |