Changeset 3364 for trunk/LMDZ.GENERIC


Ignore:
Timestamp:
Jun 10, 2024, 4:38:06 PM (7 months ago)
Author:
bhatnags
Message:

Generic-PCM: Added dt_gm (Gent-McWilliams?) in the calculation for fluxgrdocean (GND) and in ocean_slab_get_vars.
SB

Location:
trunk/LMDZ.GENERIC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.GENERIC/changelog.txt

    r3360 r3364  
    19571957OpenMP fix in newsedim, add a missing THREADPRIVATE for "molrad" variable.
    19581958While at it make sedim and callsedim modules.
     1959
     1960== 10/06/2024 == SB
     1961Added dt_gm (Gent-McWilliams) in the calculation for fluxgrdocean (GND) and in
     1962ocean_slab_get_vars.
  • trunk/LMDZ.GENERIC/libf/phystd/ocean_slab_mod.F90

    r3352 r3364  
    10901090!
    10911091  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)
    10931093
    10941094! "Get some variables from module ocean_slab_mod"
     
    11011101    REAL, DIMENSION(ngrid,nslay), INTENT(OUT) :: dt_hdiff_loc ! [in W/m2]
    11021102    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]
    11031104    INTEGER :: i
    11041105
     
    11111112    dt_hdiff_loc(:,:)=0.
    11121113    dt_ekman_loc(:,:)=0.
     1114    dt_gm_loc(:,:)=0.
    11131115
    11141116!!      dt_hdiff_loc(:,i) = dt_hdiff(:,i)*slabh(i)*1000.*4228. !Convert en W/m2
     
    11251127        ENDDO
    11261128    ENDIF
     1129    IF (slab_gm) THEN
     1130        DO i=1,nslay
     1131           dt_gm_loc(:,i) = dt_gm(:,i)
     1132        ENDDO
     1133    ENDIF
    11271134
    11281135
  • trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90

    r3360 r3364  
    327327      real zdtrain_generic(ngrid,nlayer)                      ! Rain_generic routine.
    328328      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.
    330330      real zdtsw1(ngrid,nlayer), zdtlw1(ngrid,nlayer)         ! Callcorrk routine.
    331331      real zdtchim(ngrid,nlayer)                              ! Calchim routine.
     
    669669           ! ensure that "slab" variables match "physiq" ones
    670670           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)
    672672           
    673673         endif ! end of 'ok_slab_ocean'.
     
    689689                  fluxgrd(ig)=0.
    690690                  ! 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)
    692692                  do iq=1,nsoilmx
    693693                    tsoil(ig,iq)=tsurf(ig)
     
    19921992
    19931993            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)
    19951995                     
    19961996!! sea_ice defines the sea ice thickness in kg/m2
     
    21002100!!               fluxgrdocean(ig)=pctsrf_sic(ig)*flux_g(ig)+(1-pctsrf_sic(ig))*(dt_hdiff(ig,1)+dt_ekman(ig,1))
    21012101               ! 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)
    21032104               do iq=1,nsoilmx
    21042105                  tsoil(ig,iq)=tsurf(ig)
     
    23892390            ! fetch "ocean variables" to ensure they are stored
    23902391            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)
    23922393
    23932394            call physdem1("restartfi.nc",nsoilmx,ngrid,nlayer,nq, &
     
    24742475
    24752476         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))
    24802483            call wstats(ngrid,"tslab1","tslab1","K",2,tslab(:,1))
    24812484            call wstats(ngrid,"tslab2","tslab2","K",2,tslab(:,2))
     
    25292532         call writediagfi(ngrid,"tslab1","tslab1","K",2,tslab(:,1))
    25302533         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))
    25352540         call writediagfi(ngrid,"rnat","nature of the surface","",2,rnat)
    25362541         call writediagfi(ngrid,"sensibFlux","sensible heat flux","w.m^-2",2,sensibFlux)
     
    25632568      if(callrad.and.(.not.newtonian))then
    25642569
    2565          !call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent)
     2570         call writediagfi(ngrid,"ALB","Surface albedo"," ",2,albedo_equivalent)
    25662571         !call writediagfi(ngrid,"ALB_1st","First Band Surface albedo"," ",2,albedo(:,1))
    25672572         call writediagfi(ngrid,"ISR","incoming stellar rad.","W m-2",2,fluxtop_dn)
Note: See TracChangeset for help on using the changeset viewer.