Changeset 3364
- Timestamp:
- Jun 10, 2024, 4:38:06 PM (7 months ago)
- Location:
- trunk/LMDZ.GENERIC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/changelog.txt
r3360 r3364 1957 1957 OpenMP fix in newsedim, add a missing THREADPRIVATE for "molrad" variable. 1958 1958 While at it make sedim and callsedim modules. 1959 1960 == 10/06/2024 == SB 1961 Added dt_gm (Gent-McWilliams) in the calculation for fluxgrdocean (GND) and in 1962 ocean_slab_get_vars. -
trunk/LMDZ.GENERIC/libf/phystd/ocean_slab_mod.F90
r3352 r3364 1090 1090 ! 1091 1091 SUBROUTINE ocean_slab_get_vars(ngrid, tslab_loc, tice_loc, seaice_loc, & 1092 flux_g_loc, dt_hdiff_loc,dt_ekman_loc )1092 flux_g_loc, dt_hdiff_loc,dt_ekman_loc,dt_gm_loc) 1093 1093 1094 1094 ! "Get some variables from module ocean_slab_mod" … … 1101 1101 REAL, DIMENSION(ngrid,nslay), INTENT(OUT) :: dt_hdiff_loc ! [in W/m2] 1102 1102 REAL, DIMENSION(ngrid,nslay), INTENT(OUT) :: dt_ekman_loc ! [in W/m2] 1103 REAL, DIMENSION(ngrid,nslay), INTENT(OUT) :: dt_gm_loc ! [in W/m2] 1103 1104 INTEGER :: i 1104 1105 … … 1111 1112 dt_hdiff_loc(:,:)=0. 1112 1113 dt_ekman_loc(:,:)=0. 1114 dt_gm_loc(:,:)=0. 1113 1115 1114 1116 !! dt_hdiff_loc(:,i) = dt_hdiff(:,i)*slabh(i)*1000.*4228. !Convert en W/m2 … … 1125 1127 ENDDO 1126 1128 ENDIF 1129 IF (slab_gm) THEN 1130 DO i=1,nslay 1131 dt_gm_loc(:,i) = dt_gm(:,i) 1132 ENDDO 1133 ENDIF 1127 1134 1128 1135 -
trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90
r3360 r3364 327 327 real zdtrain_generic(ngrid,nlayer) ! Rain_generic routine. 328 328 real dtmoist(ngrid,nlayer) ! Moistadj routine. 329 real dt_ekman(ngrid,nslay), dt_hdiff(ngrid,nslay) ! Slab_ocean routine.329 real dt_ekman(ngrid,nslay), dt_hdiff(ngrid,nslay), dt_gm(ngrid,nslay) ! Slab_ocean routine. 330 330 real zdtsw1(ngrid,nlayer), zdtlw1(ngrid,nlayer) ! Callcorrk routine. 331 331 real zdtchim(ngrid,nlayer) ! Calchim routine. … … 669 669 ! ensure that "slab" variables match "physiq" ones 670 670 call ocean_slab_get_vars(ngrid, tslab, tsea_ice, sea_ice, flux_g, & 671 dt_hdiff, dt_ekman )671 dt_hdiff, dt_ekman, dt_gm) 672 672 673 673 endif ! end of 'ok_slab_ocean'. … … 689 689 fluxgrd(ig)=0. 690 690 ! Dividing by cell area to have flux in W/m2 691 fluxgrdocean(ig)=flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1) )/cell_area(ig)691 fluxgrdocean(ig)=flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1)+dt_gm(ig,1))/cell_area(ig) 692 692 do iq=1,nsoilmx 693 693 tsoil(ig,iq)=tsurf(ig) … … 1992 1992 1993 1993 call ocean_slab_get_vars(ngrid, tslab, tsea_ice, sea_ice, flux_g, & 1994 dt_hdiff, dt_ekman )1994 dt_hdiff, dt_ekman, dt_gm) 1995 1995 1996 1996 !! sea_ice defines the sea ice thickness in kg/m2 … … 2100 2100 !! fluxgrdocean(ig)=pctsrf_sic(ig)*flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1)) 2101 2101 ! Dividing by cell area to have flux in W/m2 2102 fluxgrdocean(ig)=flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1))/cell_area(ig) 2102 fluxgrdocean(ig)=flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1)+dt_gm(ig,1))/cell_area(ig) 2103 ! fluxgrdocean(ig)=(flux_g(ig)-fluxabs_sw(ig))+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1)+dt_gm(ig,1))/cell_area(ig) 2103 2104 do iq=1,nsoilmx 2104 2105 tsoil(ig,iq)=tsurf(ig) … … 2389 2390 ! fetch "ocean variables" to ensure they are stored 2390 2391 call ocean_slab_get_vars(ngrid, tslab, tsea_ice, sea_ice, flux_g, & 2391 dt_hdiff, dt_ekman )2392 dt_hdiff, dt_ekman, dt_gm) 2392 2393 2393 2394 call physdem1("restartfi.nc",nsoilmx,ngrid,nlayer,nq, & … … 2474 2475 2475 2476 if (ok_slab_ocean) then 2476 call wstats(ngrid,"dt_hdiff1","dt_hdiff1","K/s",2,dt_hdiff(:,1)) 2477 call wstats(ngrid,"dt_hdiff2","dt_hdiff2","K/s",2,dt_hdiff(:,2)) 2478 call wstats(ngrid,"dt_ekman1","dt_ekman1","K/s",2,dt_ekman(:,1)) 2479 call wstats(ngrid,"dt_ekman2","dt_ekman2","K/s",2,dt_ekman(:,2)) 2477 call wstats(ngrid,"dt_hdiff1","dt_hdiff1","W m-2",2,dt_hdiff(:,1)) 2478 call wstats(ngrid,"dt_hdiff2","dt_hdiff2","W m-2",2,dt_hdiff(:,2)) 2479 call wstats(ngrid,"dt_ekman1","dt_ekman1","W m-2",2,dt_ekman(:,1)) 2480 call wstats(ngrid,"dt_ekman2","dt_ekman2","W m-2",2,dt_ekman(:,2)) 2481 call wstats(ngrid,"dt_gm1","dt_gm1","W m-2",2,dt_gm(:,1)) 2482 call wstats(ngrid,"dt_gm2","dt_gm2","W m-2",2,dt_gm(:,2)) 2480 2483 call wstats(ngrid,"tslab1","tslab1","K",2,tslab(:,1)) 2481 2484 call wstats(ngrid,"tslab2","tslab2","K",2,tslab(:,2)) … … 2529 2532 call writediagfi(ngrid,"tslab1","tslab1","K",2,tslab(:,1)) 2530 2533 call writediagfi(ngrid,"tslab2","tslab2","K",2,tslab(:,2)) 2531 call writediagfi(ngrid,"dt_hdiff1","dt_hdiff1","K/s",2,dt_hdiff(:,1)) 2532 call writediagfi(ngrid,"dt_hdiff2","dt_hdiff2","K/s",2,dt_hdiff(:,2)) 2533 call writediagfi(ngrid,"dt_ekman1","dt_ekman1","K/s",2,dt_ekman(:,1)) 2534 call writediagfi(ngrid,"dt_ekman2","dt_ekman2","K/s",2,dt_ekman(:,2)) 2534 call writediagfi(ngrid,"dt_hdiff1","dt_hdiff1","W m-2",2,dt_hdiff(:,1)) 2535 call writediagfi(ngrid,"dt_hdiff2","dt_hdiff2","W m-2",2,dt_hdiff(:,2)) 2536 call writediagfi(ngrid,"dt_ekman1","dt_ekman1","W m-2",2,dt_ekman(:,1)) 2537 call writediagfi(ngrid,"dt_ekman2","dt_ekman2","W m-2",2,dt_ekman(:,2)) 2538 call writediagfi(ngrid,"dt_gm1","dt_gm1","W m-2",2,dt_gm(:,1)) 2539 call writediagfi(ngrid,"dt_gm2","dt_gm2","W m-2",2,dt_gm(:,2)) 2535 2540 call writediagfi(ngrid,"rnat","nature of the surface","",2,rnat) 2536 2541 call writediagfi(ngrid,"sensibFlux","sensible heat flux","w.m^-2",2,sensibFlux) … … 2563 2568 if(callrad.and.(.not.newtonian))then 2564 2569 2565 !call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent)2570 call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent) 2566 2571 !call writediagfi(ngrid,"ALB_1st","First Band Surface albedo"," ",2,albedo(:,1)) 2567 2572 call writediagfi(ngrid,"ISR","incoming stellar rad.","W m-2",2,fluxtop_dn)
Note: See TracChangeset
for help on using the changeset viewer.