--- trunk/libf/dyn3d/startdyn.f90 2008/02/27 13:16:39 3 +++ trunk/libf/dyn3d/startdyn.f90 2009/12/14 15:25:16 23 @@ -136,24 +136,21 @@ !******************************** - function start_inter_3d(varname, lon_in2, lat_in2, pls_in) + subroutine start_inter_3d(varname, lon_in2, lat_in2, pls_in, var3d) ! This procedure gets a 3D variable from a file and does the ! interpolations needed. USE ioipsl, only: flinget - use nrutil, only: assert_eq - + use numer_rec, only: assert_eq, spline, splint use inter_barxy_m, only: inter_barxy - use interpolation, only: spline, splint use gr_int_dyn_m, only: gr_int_dyn use conf_dat3d_m, only: conf_dat3d CHARACTER(len=*), intent(in):: varname REAL, intent(in):: lon_in2(:), lat_in2(:) REAL, intent(in):: pls_in(:, :, :) - - REAL start_inter_3d(size(lon_in2), size(pls_in, 2), size(pls_in, 3)) + REAL, intent(out):: var3d(:, :, :) ! LOCAL: INTEGER iml, jml, lml @@ -169,15 +166,16 @@ print *, "Call sequence information: start_inter_3d" - iml = assert_eq(size(pls_in, 1), size(lon_in2), "start_inter_3d iml") - jml = size(pls_in, 2) - lml = size(pls_in, 3) + iml = assert_eq(size(pls_in, 1), size(lon_in2), size(var3d, 1), & + "start_inter_3d iml") + jml = assert_eq(size(pls_in, 2), size(var3d, 2), "start_inter_3d jml") + lml = assert_eq(size(pls_in, 3), size(var3d, 3), "start_inter_3d lml") print *, "iml = ", iml, ", jml = ", jml - print *, 'Going into flinget to extract the 3D field.' - print *, "fid_dyn = ", fid_dyn, ", varname = ", varname + print *, "varname = ", varname print *, "iml_dyn = ", iml_dyn, ", jml_dyn = ", jml_dyn, & ", llm_dyn = ", llm_dyn, ", ttm_dyn = ", ttm_dyn + print *, 'Going into flinget to extract the 3D field.' CALL flinget(fid_dyn, varname, iml_dyn, jml_dyn, llm_dyn, ttm_dyn, 1, 1, & var_ana3d) @@ -198,13 +196,13 @@ ay(:) = var_tmp3d(ii, ij, llm_dyn:1:-1) yder(:) = SPLINE(ax, ay) do il=1, lml - start_inter_3d(ii, ij, il) & + var3d(ii, ij, il) & = SPLINT(ax, ay, yder, pls_in(ii, ij, il)) END do ENDDO ENDDO - start_inter_3d(iml, :, :) = start_inter_3d(1, :, :) + var3d(iml, :, :) = var3d(1, :, :) - END function start_inter_3d + END subroutine start_inter_3d END MODULE startdyn