Changeset 4179
- Timestamp:
- Apr 10, 2026, 5:31:47 PM (101 minutes ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 6 edited
- 1 moved
-
changelog.txt (modified) (1 diff)
-
libf/dynphy_lonlat/phygeneric/lect_start_archive.F (modified) (1 diff)
-
libf/phygeneric/phyetat0_mod.F90 (modified) (1 diff)
-
libf/phygeneric/physiq_mod.F90 (modified) (1 diff)
-
libf/phygeneric/soil.F (modified) (2 diffs)
-
libf/phygeneric/soil_settings.F (modified) (2 diffs)
-
libf/phygeneric/util_linear_interpolation.F90 (moved) (moved from trunk/LMDZ.GENERIC/libf/phygeneric/interp_line.F) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/changelog.txt
r4178 r4179 2268 2268 == 10/04/2026 == EM 2269 2269 Code cleanup: remove unused surface_nature.F and scopyi.F 2270 2271 == 10/04/2026 == EM 2272 Clean up code: put inter_line.F in a module util_linear_interpolation.F90 and 2273 also turn soil.F and soil_settings.F into modules. -
trunk/LMDZ.GENERIC/libf/dynphy_lonlat/phygeneric/lect_start_archive.F
r3893 r4179 14 14 USE comvert_mod, ONLY: ap,bp,aps,bps,preff 15 15 USE comconst_mod, ONLY: kappa,g,pi 16 USE util_linear_interpolation_mod, ONLY: interp_line 16 17 17 18 c======================================================================= -
trunk/LMDZ.GENERIC/libf/phygeneric/phyetat0_mod.F90
r3773 r4179 32 32 USE ocean_slab_mod, ONLY: nslay 33 33 use callkeys_mod, only: CLFvarying,surfalbedo,surfemis, callsoil 34 use soil_settings_mod, only: soil_settings 34 35 use nonoro_gwd_ran_mod, only: du_nonoro_gwd, dv_nonoro_gwd, & 35 36 east_gwstress, west_gwstress -
trunk/LMDZ.GENERIC/libf/phygeneric/physiq_mod.F90
r4168 r4179 35 35 use comsaison_h, only: mu0, fract, dist_star, declin, right_ascen 36 36 use comsoil_h, only: nsoilmx, layer, mlayer, inertiedat 37 use soil_mod, only: soil 37 38 use geometry_mod, only: latitude, longitude, cell_area, & 38 39 cell_area_for_lonlat_outputs -
trunk/LMDZ.GENERIC/libf/phygeneric/soil.F
r3485 r4179 1 module soil_mod 2 3 implicit none 4 5 contains 6 1 7 subroutine soil(ngrid,nsoil,firstcall,lastcall, 2 8 & therm_i, … … 222 228 enddo 223 229 224 end 225 230 end subroutine soil 231 232 end module soil_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/soil_settings.F
r3893 r4179 1 module soil_settings_mod 2 3 implicit none 4 5 contains 6 1 7 subroutine soil_settings(nid,ngrid,nsoil,tsurf,tsoil,indextime) 2 8 3 ! use netcdf4 9 use comsoil_h, only: layer, mlayer, inertiedat, volcapa, 5 10 & lay1_soil, alpha_soil 11 use util_linear_interpolation_mod, only: interp_line 6 12 use iostart, only: inquire_field_ndims, get_var, get_field, 7 13 & inquire_field, inquire_dimension_length … … 364 370 xmax = MAXVAL(tsoil) 365 371 write(*,*)'Soil temperature <tsoil>:',xmin,xmax 366 end 372 373 end subroutine soil_settings 374 375 end module soil_settings_mod -
trunk/LMDZ.GENERIC/libf/phygeneric/util_linear_interpolation.F90
r4178 r4179 1 subroutine interp_line(x1,y1,len1,x2,y2,len2) 1 module util_linear_interpolation_mod 2 3 implicit none 4 5 contains 6 7 subroutine interp_line(x1,y1,len1,x2,y2,len2) 2 8 implicit none 3 9 !----------------------------------------------------------------------- … … 10 16 ! the nearby x1(:) point 11 17 ! 12 c-----------------------------------------------------------------------18 !----------------------------------------------------------------------- 13 19 ! arguments 14 20 ! --------- 15 21 ! inputs: 16 real x1(len1) ! ordered list of abscissas17 real y1(len1) ! values at x1(:)18 integer len1 ! length of x1(:) and y1(:)19 real x2(len2) !ordered list of abscissas at which interpolation is done20 integer len2 ! length of x2(:) and y2(:)22 real,intent(in) :: x1(len1) ! ordered list of abscissas 23 real,intent(in) :: y1(len1) ! values at x1(:) 24 integer,intent(in) :: len1 ! length of x1(:) and y1(:) 25 real,intent(in) :: x2(len2) ! ordered list of abscissas at which interpolation is done 26 integer,intent(in) :: len2 ! length of x2(:) and y2(:) 21 27 ! outputs: 22 real y2(len2) ! interpolated values28 real,intent(out) :: y2(len2) ! interpolated values 23 29 !----------------------------------------------------------------------- 24 30 25 31 ! local variables: 26 integer i,j32 integer :: i,j 27 33 28 34 29 35 do i=1,len2 30 36 ! check if x2(i) lies outside of the interval covered by x1() 31 if(((x2(i).le.x1(1)).and.(x2(i).le.x1(len1))).or. 32 &((x2(i).ge.x1(1)).and.(x2(i).ge.x1(len1)))) then37 if(((x2(i).le.x1(1)).and.(x2(i).le.x1(len1))).or. & 38 ((x2(i).ge.x1(1)).and.(x2(i).ge.x1(len1)))) then 33 39 ! set y2(i) to y1(1) or y1(len1) 34 40 if (abs(x2(i)-x1(1)).lt.abs(x2(i)-x1(len1))) then … … 43 49 ! find the nearest neigbours and do a linear interpolation 44 50 do j=1,len1-1 45 if(((x2(i).ge.x1(j)).and.(x2(i).le.x1(j+1))).or. 46 &((x2(i).le.x1(j)).and.(x2(i).ge.x1(j+1)))) then47 y2(i)=((x2(i)-x1(j))/(x1(j+1)-x1(j)))*y1(j+1)+ 48 &((x2(i)-x1(j+1))/(x1(j)-x1(j+1)))*y1(j)51 if(((x2(i).ge.x1(j)).and.(x2(i).le.x1(j+1))).or. & 52 ((x2(i).le.x1(j)).and.(x2(i).ge.x1(j+1)))) then 53 y2(i)=((x2(i)-x1(j))/(x1(j+1)-x1(j)))*y1(j+1)+ & 54 ((x2(i)-x1(j+1))/(x1(j)-x1(j+1)))*y1(j) 49 55 endif 50 56 enddo 51 57 endif 52 58 53 enddo 59 enddo ! of do i=1,len2 54 60 55 end 61 end subroutine interp_line 62 63 end module util_linear_interpolation_mod
Note: See TracChangeset
for help on using the changeset viewer.
