Ignore:
Timestamp:
Jul 16, 2025, 3:25:48 PM (3 days ago)
Author:
jbclement
Message:

PEM:

  • Making the computation of CO2 mass balance more robust, especially regarding 'CO2cond_ps'.
  • Small correction about the dust tendency management for the layering algorithm.
  • Small improvement of the visualization in "visu_evol_layering.py".
  • File "log_launchPEM.txt" renamed into "launchPEM.log".

JBC

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/pem.F90

    r3850 r3851  
    291291! Loop variables
    292292integer :: i, l, ig, nnq, t, islope, ig_loop, islope_loop, isoil, icap
     293real    :: totmass_ini
    293294logical :: num_str
    294295
     
    995996
    996997    ! Checking mass balance for CO2
    997     totmass_co2ice = 0.
    998     totmass_atmco2 = 0.
    999     do ig = 1,ngrid
    1000         totmass_atmco2 = totmass_atmco2 + cell_area(ig)*ps_avg(ig)/g
    1001         do islope = 1,nslope
    1002             totmass_co2ice = totmass_co2ice + co2_ice(ig,islope)*cell_area(ig)*subslope_dist(ig,islope)/cos(pi*def_slope_mean(islope)/180.)
    1003         enddo
    1004     enddo
    1005     write(*,'(a,f8.3,a)') " > Relative total CO2 mass balance = ", 100.*(totmass_atmco2 + totmass_co2ice + totmass_adsco2 - totmass_atmco2_ini - totmass_co2ice_ini - totmass_adsco2_ini)/(totmass_atmco2_ini + totmass_co2ice_ini + totmass_adsco2_ini), ' %'
    1006     if ((totmass_atmco2 + totmass_co2ice + totmass_adsco2 - totmass_atmco2_ini - totmass_co2ice_ini - totmass_adsco2_ini)/(totmass_atmco2_ini + totmass_co2ice_ini + totmass_adsco2_ini) > 0.01) then
    1007         write(*,*) '  /!\ Warning: mass balance is not conseved!'
    1008         write(*,'(a,f8.3,a)') '       Atmospheric CO2 mass balance = ', 100.*(totmass_atmco2 - totmass_atmco2_ini)/totmass_atmco2_ini, ' %'
    1009         write(*,'(a,f8.3,a)') '       CO2 ice mass balance         = ', 100.*(totmass_co2ice - totmass_co2ice_ini)/totmass_co2ice_ini, ' %'
    1010         write(*,'(a,f8.3,a)') '       Adsorbed CO2 mass balance    = ', 100.*(totmass_adsco2 - totmass_adsco2_ini)/totmass_adsco2_ini, ' %'
     998    if (abs(CO2cond_ps - 1.) < 1.e-10) then
     999        totmass_co2ice = 0.
     1000        totmass_atmco2 = 0.
     1001        do ig = 1,ngrid
     1002            totmass_atmco2 = totmass_atmco2 + cell_area(ig)*ps_avg(ig)/g
     1003            do islope = 1,nslope
     1004                totmass_co2ice = totmass_co2ice + co2_ice(ig,islope)*cell_area(ig)*subslope_dist(ig,islope)/cos(pi*def_slope_mean(islope)/180.)
     1005            enddo
     1006        enddo
     1007        totmass_ini = max(totmass_atmco2_ini + totmass_co2ice_ini + totmass_adsco2_ini,1.e-10)
     1008        write(*,'(a,f8.3,a)') " > Relative total CO2 mass balance = ", 100.*(totmass_atmco2 + totmass_co2ice + totmass_adsco2 - totmass_atmco2_ini - totmass_co2ice_ini - totmass_adsco2_ini)/totmass_ini, ' %'
     1009        if ((totmass_atmco2 + totmass_co2ice + totmass_adsco2 - totmass_atmco2_ini - totmass_co2ice_ini - totmass_adsco2_ini)/totmass_ini > 0.01) then
     1010            write(*,*) '  /!\ Warning: mass balance is not conseved!'
     1011            totmass_ini = max(totmass_atmco2_ini,1.e-10)
     1012            write(*,'(a,f8.3,a)') '       Atmospheric CO2 mass balance = ', 100.*(totmass_atmco2 - totmass_atmco2_ini)/totmass_ini, ' %'
     1013            totmass_ini = max(totmass_co2ice_ini,1.e-10)
     1014            write(*,'(a,f8.3,a)') '       CO2 ice mass balance         = ', 100.*(totmass_co2ice - totmass_co2ice_ini)/totmass_ini, ' %'
     1015            totmass_ini = max(totmass_adsco2_ini,1.e-10)
     1016            write(*,'(a,f8.3,a)') '       Adsorbed CO2 mass balance    = ', 100.*(totmass_adsco2 - totmass_adsco2_ini)/totmass_ini, ' %'
     1017        endif
    10111018    endif
    10121019
Note: See TracChangeset for help on using the changeset viewer.