Changeset 3977 for trunk


Ignore:
Timestamp:
Nov 26, 2025, 5:06:13 PM (7 days ago)
Author:
jbclement
Message:

PEM:

  • All operations computed by the PEM on the PCM data (averages, minima) are now performed by XIOS with two dedicated file. One is for daily operation outputs ("Xoutdaily4pem*.nc") and the other for yearly operation outputs ("Xoutyearly4pem*.nc").
  • Deletion of the reshaping tool "reshape_XIOS_output" used to convert XIOS outputs onto the PCM grid. Thus, the PEM is now able to read directly the format of XIOS outputs.
  • Addition of subroutines to convert data between a lon x lat array and a vector.

JBC

Location:
trunk
Files:
2 added
2 deleted
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.COMMON/libf/evolution/changelog.txt

    r3967 r3977  
    797797== 20/11/2025 == JBC
    798798New management of stopping criteria: giving explicit names and collecting everything in the same place.
     799
     800== 26/11/2025 == JBC
     801- All operations computed by the PEM on the PCM data (averages, minima) are now performed by XIOS with two dedicated file. One is for daily operation outputs ("Xoutdaily4pem*.nc") and the other for yearly operation outputs ("Xoutyearly4pem*.nc").
     802- Deletion of the reshaping tool "reshape_XIOS_output" used to convert XIOS outputs onto the PCM grid. Thus, the PEM is now able to read directly the format of XIOS outputs.
     803- Addition of subroutines to convert data between a lon x lat array and a vector.
  • trunk/LMDZ.COMMON/libf/evolution/compute_tend_mod.F90

    r3498 r3977  
    1717!=======================================================================
    1818
    19 !   arguments:
    20 !   ----------
    21 !   INPUT
     19! Arguments
     20! ---------
    2221integer,                         intent(in) :: ngrid   ! # of grid points
    2322integer,                         intent(in) :: nslope  ! # of subslopes
    2423real, dimension(ngrid,nslope,2), intent(in) :: min_ice ! Minima of ice at each point for the PCM years
     24real, dimension(ngrid,nslope), intent(out) :: d_ice ! Difference between the minima = evolution of perennial ice
    2525
    26 !   OUTPUT
    27 real, dimension(ngrid,nslope), intent(out) :: d_ice ! Difference between the minima = evolution of perennial ice
    28 !=======================================================================
     26! Code
     27! ----
    2928! We compute the difference
    3029d_ice = min_ice(:,:,2) - min_ice(:,:,1)
  • trunk/LMDZ.COMMON/libf/evolution/deftank/PCMrun.job

    r3869 r3977  
    5959k=0
    6060if [ $(echo "$k > 0" | bc) -eq 1 ]; then # Only the last 2 years are taken for the PEM
    61     cp Xdiurnalave.nc data2reshape_Y${k}.nc
     61    cp Xoutdaily4pem.nc Xoutdaily4pem_Y${k}.nc
     62    cp Xoutyearly4pem.nc Xoutyearly4pem_Y${k}.nc
    6263fi
    63 mv Xdiurnalave.nc diags/data2reshape${iPCM}.nc
     64mv Xoutdaily4pem.nc diags/Xoutdaily4pem${iPCM}.nc
     65mv Xoutyearly4pem.nc diags/Xoutyearly4pem${iPCM}.nc
    6466cp restartfi.nc starts/restartfi${iPCM}.nc
    6567mv restartfi.nc startfi.nc
  • trunk/LMDZ.COMMON/libf/evolution/deftank/PEMrun.job

    r3869 r3977  
    2323exePEM="pem_64x48x32_phymars_seq.e"
    2424
    25 # Name of executable for reshaping PCM data with XIOS:
    26 exeReshape="reshape_XIOS_output_64x48x32_phymars_seq.e"
    27 
    2825# Argument for the PEM execution ("--auto-exit" for SLURM and PBS/TORQUE | "" when the script is not run as a job):
    2926arg_pem="--auto-exit"
     
    3229
    3330ulimit -s unlimited
    34 
    35 # Reshaping PCM data with XIOS
    36 echo "Reshaping PCM data with XIOS is starting."
    37 ./$exeReshape
    38 if [ ! -f "data_PCM_Y1.nc" ] || [ ! -f "data_PCM_Y2.nc" ]; then # Check if it ended abnormally
    39     echo "Error: the reshaping executable crashed!"
    40     exit 1
    41 fi
    4231
    4332# Running the PEM
  • trunk/LMDZ.COMMON/libf/evolution/deftank/README

    r3958 r3977  
    1717Installation:
    1818-------------
    19 The PEM can be downloaded alongside the "LMDZ.COMMON" repository of your trunk. The Fortran code is in the following directory: "trunk/LMDZ.COMMON/libf/evolution/". The two PEM programs are "pem.F90" and "reshape_XIOS_output.F90".
     19The PEM can be downloaded alongside the "LMDZ.COMMON" repository of your trunk. The Fortran code is in the following directory: "trunk/LMDZ.COMMON/libf/evolution/". The PEM main program is "pem.F90".
    2020
    2121Compilation:
     
    2626    2) [planet]    : mars to use the Mars planet physics package;
    2727    3) [dimensions]: 64x48x54 to define the grid you want to use  (longitude x latitude x atmospheric layers).
    28 To run the PEM, you need a dedicated reshaping tool with consistent options. To compile it, in "LMDZ_COMMON", do: ./makelmdz_fcm -arch [local] -p [planet] -d [dimensions] -j 8 reshape_XIOS_output
    29 To run the PEM, you also need a PCM working with XIOS and consistent options. To compile it, in "LMDZ.COMMON", do: ./makelmdz_fcm -arch [local] -p [planet] -parallel mpi_omp -io xios -d [dimensions] -j 8 gcm
     28To run the PEM, you need a PCM working with XIOS and consistent options. To compile it, in "LMDZ.COMMON", do: ./makelmdz_fcm -arch [local] -p [planet] -parallel mpi_omp -io xios -d [dimensions] -j 8 gcm
    3029After compilation, the executable file can be found in the "bin" sub-directory.
    3130
     
    4241-------------
    4342To run the PEM, you can create a folder in which you need the following files:
    44     > your executable files for the PCM, the PEM and the reshaping tool with consistent options;
     43    > your executable files for the PCM and the PEM with consistent options;
    4544    > the xml files for XIOS which can be found in the PCM deftank folder: "iodef.xml", "context_lmdz_physics.xml", "file_def_physics_mars.xml" and "field_def_physics_mars.xml";
    4645    > the def files you want to run the PCM: "run.def", "callphys.def", "traceur.def", etc.
     
    6362The PEM simulation generates the following files:
    6463    > the usual outputs of the PCM: "restartfi.nc", "restart.nc", "diagfi.nc", etc;
    65     > the XIOS outputs of the PCM, then reshaped: "Xdiurnalave.nc"/"data2reshape*.nc"/"data_PCM_Y*.nc";
     64    > the XIOS outputs of the PCM: "Xoutdaily4pem*.nc"/"Xoutyearly4pem*.nc";
    6665    > the outputs of the chained simulation: "launchPEM.log", "info_PEM.txt" and possibly "kill_launchPEM.sh";
    6766    > the usual outputs of the PEM: "restartfi.nc", "restart.nc"/"restart1D.txt" and "diagpem.nc".
     
    9998      > The headers correspond to the ADASTRA supercomputer and should be changed for other machines and job schedulers. In case of "processing scripts" launching mode, the headers are naturally omitted.
    10099      > The path to source the arch file should be adapted to the machine.
    101       > The name of the PEM and Reshaping executable files should be adapted.
     100      > The name of the PEM executable file should be adapted.
    102101      > The PEM executable can have an optional argument which should be specified according to the set-up ("--auto-exit" for SLURM and PBS/TORQUE | "" when the script is not run as a job).
    103102
  • trunk/LMDZ.COMMON/libf/evolution/deftank/clean.sh

    r3926 r3977  
    1111# Cleaning of files in the current folder
    1212rm -f Bands*.dat
    13 rm -f data2reshape*
    14 rm -f data_PCM_Y*
    1513rm -f info_PEM.txt
    1614find . -type f -name "PCMrun*.job" ! -name "PCMrun.job" -delete
     
    2119rm -f start*.nc
    2220rm -f used_*
    23 rm -f Xdiurnalave.nc
     21rm -f Xout*4pem*.nc
    2422rm -f xios_client_*
    2523rm -f diag*.nc
  • trunk/LMDZ.COMMON/libf/evolution/deftank/lib_launchPEM.sh

    r3958 r3977  
    7373modify_xml() {
    7474    tmp="tmp_file_def.xml"
    75     in_diurnalave=false
    76     in_diurnalave_s=false
     75    in_outdaily4pem=false
     76    in_outyearly4pem=false
     77    in_outdaily4pem_s=false
     78    in_outyearly4pem_s=false
    7779
    7880    sed -i 's/enabled="\.true\.\">/enabled=".false.">/g' file_def_physics_mars.xml
    7981
    8082    while IFS= read -r line; do
     83        # Detect file blocks
    8184        case "$line" in
    82             *'<file id="diurnalave"'*)
    83                 in_diurnalave=true
     85            *'<file id="outdaily4pem"'*)
     86                in_outdaily4pem=true
    8487                ;;
    85             *'<file id="diurnalave_s"'*)
    86                 in_diurnalave_s=true
     88            *'<file id="outyearly4pem"'*)
     89                in_outyearly4pem=true
     90                ;;
     91            *'<file id="outdaily4pem_s"'*)
     92                in_outdaily4pem_s=true
     93                ;;
     94            *'<file id="outyearly4pem_s"'*)
     95                in_outyearly4pem_s=true
    8796                ;;
    8897        esac
     
    9099        # Handle enabled attribute
    91100        if [[ $line == *'enabled="'* ]]; then
    92             if $in_diurnalave; then
     101            if $in_outdaily4pem || $in_outyearly4pem; then
    93102                if [[ $ns -eq 1 ]]; then
    94103                    line='              enabled=".true.">'
     
    96105                    line='              enabled=".false.">'
    97106                fi
    98             elif $in_diurnalave_s; then
     107            elif $in_outdaily4pem_s || $in_outyearly4pem_s; then
    99108                if [[ $ns -eq 1 ]]; then
    100109                    line='              enabled=".false.">'
     
    105114        fi
    106115
    107         # Detect slope variables
    108         if $in_diurnalave_s && [[ $line =~ slope([0-9]+) ]]; then
     116        # Handle slope variables
     117        if ( $in_outdaily4pem_s || $in_outyearly4pem_s ) && [[ $line =~ slope([0-9]+) ]]; then
    109118            slope_id="${BASH_REMATCH[1]}"
    110119            if (( 10#$slope_id > ns )); then
     
    122131        fi
    123132
     133
     134        # Leaving the file block
    124135        case "$line" in
    125136            *'</file>'*)
    126                 in_diurnalave=false
    127                 in_diurnalave_s=false
     137                in_outdaily4pem=false
     138                in_outyearly4pem=false
     139                in_outdaily4pem_s=false
     140                in_outyearly4pem_s=false
    128141                ;;
    129142        esac
     
    441454    cleanfiles diags/diagfi .nc $irelaunch
    442455    cleanfiles diags/diagsoil .nc $irelaunch
    443     cleanfiles diags/data2reshape .nc $irelaunch
     456    cleanfiles diags/Xoutdaily4pem .nc $irelaunch
     457    cleanfiles diags/Xoutyearly4pem .nc $irelaunch
    444458    cleanfiles logs/runPCM .log $irelaunch
    445459    cleanfiles starts/restart1D .txt $irelaunch
     
    473487        fi
    474488        if [ $irelaunch -eq $(($nPCM_ini - 1)) ]; then
    475             cp diags/data2reshape${irelaunch}.nc data2reshape_Y1.nc
     489            cp diags/Xoutdaily4pem${irelaunch}.nc Xoutdaily4pem_Y1.nc
     490            cp diags/Xoutyearly4pem${irelaunch}.nc Xoutyearly4pem_Y1.nc
    476491            cyclelaunch $1 $2 $nPCM_ini $iPCM
    477492        elif [ $irelaunch -eq $nPCM_ini ]; then
    478             cp diags/data2reshape$(($irelaunch - 1)).nc data2reshape_Y1.nc
    479             cp diags/data2reshape${irelaunch}.nc data2reshape_Y2.nc
     493            cp diags/Xoutdaily4pem$(($irelaunch - 1)).nc Xoutdaily4pem_Y1.nc
     494            cp diags/Xoutyearly4pem$(($irelaunch - 1)).nc Xoutyearly4pem_Y1.nc
     495            cp diags/Xoutdaily4pem${irelaunch}.nc Xoutdaily4pem_Y2.nc
     496            cp diags/Xoutyearly4pem${irelaunch}.nc Xoutyearly4pem_Y2.nc
    480497            submitPEM $1 # The next job is a PEM run
    481498        else
     
    501518        cp starts/restartpem$(($iPEM - 1)).nc startpem.nc
    502519        if [ $il -eq $(($nPCM - 1)) ]; then # Second to last PCM run
    503             cp diags/data2reshape${irelaunch}.nc data2reshape_Y1.nc
     520            cp diags/Xoutdaily4pem${irelaunch}.nc Xoutdaily4pem_Y1.nc
     521            cp diags/Xoutyearly4pem${irelaunch}.nc Xoutyearly4pem_Y1.nc
    504522            cyclelaunch $1 $2 $nPCM $(($il + 1))
    505523        elif [ $il -eq $nPCM ]; then # Last PCM run so the next job is a PEM run
    506             cp diags/data2reshape$(($irelaunch - 1)).nc data2reshape_Y1.nc
    507             cp diags/data2reshape${irelaunch}.nc data2reshape_Y2.nc
     524            cp diags/Xoutdaily4pem$(($irelaunch - 1)).nc Xoutdaily4pem_Y1.nc
     525            cp diags/Xoutyearly4pem$(($irelaunch - 1)).nc Xoutyearly4pem_Y1.nc
     526            cp diags/Xoutdaily4pem${irelaunch}.nc Xoutdaily4pem_Y2.nc
     527            cp diags/Xoutyearly4pem${irelaunch}.nc Xoutyearly4pem_Y2.nc
    508528            submitPEM $1
    509529        else
     
    527547    cleanfiles starts/restart .nc $(($iPCM - 1))
    528548    cleanfiles starts/restartfi .nc $(($iPCM - 1))
    529     cleanfiles diags/data2reshape .nc $(($iPCM - 1))
     549    cleanfiles diags/Xoutdaily4pem .nc $(($iPCM - 1))
     550    cleanfiles diags/Xoutyearly4pem .nc $(($iPCM - 1))
    530551    cleanfiles diags/diagpem .nc $irelaunch
    531552    cleanfiles diags/diagsoilpem .nc $irelaunch
  • trunk/LMDZ.COMMON/libf/evolution/pem.F90

    r3974 r3977  
    66!    I_d Read the PCM data and convert them to the physical grid
    77!    I_e Initialization of the PEM variable and soil
    8 !    I_f Compute tendencies
    9 !    I_g Compute global surface pressure
    10 !    I_h Read the "startpem.nc"
    11 !    I_i Compute orbit criterion
     8!    I_f Compute global surface pressure
     9!    I_g Read the "startpem.nc"
     10!    I_h Compute orbit criterion
    1211
    1312! II  Run
     
    6463use get_timelen_PCM_mod,        only: get_timelen_PCM
    6564use pemetat0_mod,               only: pemetat0
    66 use read_data_PCM_mod,          only: read_data_PCM
     65use read_XIOS_data,             only: read_PCM_data
    6766use recomp_tend_mod,            only: recomp_tend_co2, recomp_tend_h2o
    6867use compute_soiltemp_mod,       only: compute_tsoil_pem, shift_tsoil2surf
     
    8685use tracer_mod,                 only: noms, igcm_h2o_ice, igcm_co2, mmol, igcm_h2o_vap ! Tracer names and molar masses
    8786use mod_phys_lmdz_para,         only: is_parallel, is_sequential, is_mpi_root, is_omp_root, is_master
     87use planete_h,                  only: year_day
    8888use surfini_mod,                only: surfini
    8989use comcstfi_h,                 only: mugaz
     
    156156real, dimension(:,:),    allocatable  :: h2o_ice              ! h2o ice in the PEM
    157157real, dimension(:,:),    allocatable  :: d_h2oice             ! physical point x slope field: Tendency of evolution of perennial h2o ice
    158 real, dimension(:,:,:),  allocatable  :: min_h2o_ice          ! Minima of h2o ice at each point for the PCM years [kg/m^2]
    159158real                                  :: h2oice_ini_surf      ! Initial surface of sublimating h2o ice
    160159logical, dimension(:,:), allocatable  :: is_h2oice_sublim_ini ! Logical array to know if h2o ice is sublimating
     
    179178real,    dimension(:,:), allocatable :: d_co2ice_ini           ! physical point x slope field: Tendency of evolution of perennial co2 ice over a year in the PCM
    180179logical, dimension(:,:), allocatable :: is_co2ice_ini          ! Was there co2 ice initially in the PEM?
    181 real,  dimension(:,:,:), allocatable :: min_co2_ice            ! Minimum of co2 ice at each point for the first year [kg/m^2]
    182180real                                 :: co2ice_sublim_surf_ini ! Initial surface of sublimating co2 ice
    183181logical, dimension(:,:), allocatable :: is_co2ice_sublim_ini   ! Logical array to know if co2 ice is sublimating
     
    442440!------------------------
    443441! First we read the evolution of water and co2 ice (and the mass mixing ratio) over the first year of the PCM run, saving only the minimum value
    444 call get_timelen_PCM("data_PCM_Y1.nc",timelen)
     442call get_timelen_PCM("Xoutdaily4pem_Y1.nc",timelen)
    445443
    446444allocate(vmr_co2_PCM(ngrid,timelen),q_co2_PEM_phys(ngrid,timelen),q_h2o_PEM_phys(ngrid,timelen))
    447445allocate(ps_timeseries(ngrid,timelen),ps_avg(ngrid))
    448 allocate(min_co2_ice(ngrid,nslope,2),min_h2o_ice(ngrid,nslope,2))
    449446allocate(tsurf_avg_yr1(ngrid,nslope),tsurf_avg(ngrid,nslope))
    450447allocate(tsoil_avg(ngrid,nsoilmx,nslope),tsoil_timeseries(ngrid,nsoilmx,nslope,timelen))
    451448allocate(watersurf_density_avg(ngrid,nslope),watersoil_density_timeseries(ngrid,nsoilmx,nslope,timelen))
    452 
    453 call read_data_PCM("data_PCM_Y1.nc","data_PCM_Y2.nc",timelen,iim,jjm_value,ngrid,nslope,vmr_co2_PCM,ps_timeseries,ps_avg,tsurf_avg_yr1,tsurf_avg, &
    454                    tsoil_avg,tsoil_timeseries,min_co2_ice,min_h2o_ice,q_co2_PEM_phys,q_h2o_PEM_phys,watersurf_density_avg,watersoil_density_timeseries)
     449allocate(d_co2ice(ngrid,nslope),d_h2oice(ngrid,nslope),d_co2ice_ini(ngrid,nslope))
     450
     451call read_PCM_data(ngrid,nslope,nsoilmx,timelen,ps_avg,tsurf_avg,tsurf_avg_yr1,tsoil_avg,tsoil_timeseries,watersurf_density_avg,d_h2oice,d_co2ice,ps_timeseries,q_h2o_PEM_phys,q_co2_PEM_phys,watersoil_density_timeseries)
     452vmr_co2_PCM = q_co2_PEM_phys/(A*q_co2_PEM_phys + B)/m_co2
     453d_co2ice_ini = d_co2ice
    455454
    456455! Compute the deviation from the average
     
    488487!------------------------
    489488! I   Initialization
    490 !    I_f Compute tendencies
    491 !------------------------
    492 allocate(d_co2ice(ngrid,nslope),d_h2oice(ngrid,nslope),d_co2ice_ini(ngrid,nslope))
    493 call compute_tend(ngrid,nslope,min_co2_ice,d_co2ice)
    494 call compute_tend(ngrid,nslope,min_h2o_ice,d_h2oice)
    495 d_co2ice_ini = d_co2ice
    496 deallocate(min_co2_ice,min_h2o_ice)
    497 
    498 !------------------------
    499 ! I   Initialization
    500 !    I_g Compute global surface pressure
     489!    I_f Compute global surface pressure
    501490!------------------------
    502491total_surface = sum(cell_area)
     
    508497!------------------------
    509498! I   Initialization
    510 !    I_h Read the "startpem.nc"
     499!    I_g Read the "startpem.nc"
    511500!------------------------
    512501write(*,*) '> Reading "startpem.nc"'
     
    594583!------------------------
    595584! I   Initialization
    596 !    I_i Compute orbit criterion
     585!    I_h Compute orbit criterion
    597586!------------------------
    598587n_myear_leg = Max_iter_pem
  • trunk/LMDZ.COMMON/libf/evolution/stopping_crit_mod.F90

    r3967 r3977  
    243243type(stopFlags), intent(inout) :: stopCrit ! Stopping criterion
    244244real, intent(out) :: S_atm_2_h2o, S_h2o_2_atm, S_atm_2_h2oice, S_h2oice_2_atm ! Variables to conserve H2O
    245 
    246245! Locals
    247246! ------
    248247integer :: i, islope ! Loop
    249 
    250 !=======================================================================
    251 if (stopCrit%stop_code() > 0) return
     248!=======================================================================
     249! Checks to escape the subroutine
     250if (ngrid == 1 .or. stopCrit%stop_code() > 0) then
     251    S_atm_2_h2o = 1.
     252    S_h2o_2_atm = S_atm_2_h2o
     253    S_atm_2_h2oice = 1.
     254    S_h2oice_2_atm = S_atm_2_h2oice
     255    return
     256endif
    252257
    253258! We compute the amount of water going out from the atmosphere (S_atm_2_h2o) and going into the atmophere (S_h2o_2_atm)
     
    280285! Since relative atmospheric water is kept constant, we need to equate condensing reservoirs to the sublimating ones.
    281286! It is not possible if one of them is missing.
    282 if (abs(S_atm_2_h2oice) < 1.e-10 .or. abs(S_h2oice_2_atm) < 1.e-10) then
     287if ((abs(S_atm_2_h2oice) < 1.e-10 .or. abs(S_h2oice_2_atm) < 1.e-10)) then
    283288    write(*,*) "Reason of stopping: there is no sublimating or condensing h2o ice!"
    284289    write(*,*) "This can be due to the absence of h2o ice in the PCM run."
  • trunk/LMDZ.COMMON/libf/evolution/surf_temp.F90

    r3933 r3977  
    2525real, dimension(ngrid)                              :: tmp
    2626
     27! Check to escape the subroutine
     28if (ngrid == 1) return
     29
    2730write(*,*) "> Updating surface temperature where ice disappeared"
    28 
    2931! Convert from reduced grid to lon-lat grid
    3032#ifndef CPP_1D
     
    3537    call gr_fi_dyn(1,ngrid,iim_input + 1,jjm_input + 1,merge(1.,0.,co2ice_disappeared(:,islope)),co2ice_disappeared_ll(:,:,islope))
    3638enddo
    37 #else
    38     tsurf_ll(1,1,:) = tsurf_avg(1,:)
    39     co2ice_ll(1,1,:) = co2_ice(1,:)
    40     mask_co2ice_ini(1,1,:) = merge(1.,0.,is_co2ice_ini(1,:))
    41     co2ice_disappeared_ll(1,1,:) = merge(1.,0.,co2ice_disappeared(1,:))
    4239#endif
    4340
     
    9491    where (tmp > 0.5) co2ice_disappeared(:,islope) = .true.
    9592enddo
    96 #else
    97     tsurf_avg(1,:) = tsurf_ll(1,1,:)
    98     where(co2ice_disappeared_ll(1,1,:) > 0.5) co2ice_disappeared(1,:) = .true.
    9993#endif
    10094
  • trunk/LMDZ.MARS/deftank/file_def_physics_mars.xml

    r3611 r3977  
    66    <!-- Definition of output files -->
    77    <file_definition>
    8         <!-- FILE 1 : Instantaneous outputs; Here output_freq in physics time steps -->
     8        <!-- FILE 1: Instantaneous outputs; output_freq is every physics time steps -->
    99        <file id="histins"
    1010              name="Xhistins"
     
    5151        </file>
    5252
    53         <!-- FILE 2 :diurnal averages outputs; output_freq is every day -->
    54         <file id="diurnalave_"
    55               name="Xdiurnalave_"
     53        <!-- FILE 2: diurnal averages outputs; output_freq is every day -->
     54        <file id="diurnalave"
     55              name="Xdiurnalave"
    5656              output_freq="1d"
    5757              time_units="days"
     
    8181        </file>
    8282
    83         <!-- FILE 3 :diurnal averages outputs for PEM without sub-slope; output_freq is every day -->
    84         <file id="diurnalave"
    85               name="Xdiurnalave"
     83        <!-- FILE 3: DAILY outputs for the PEM WITHOUT slope -->
     84        <file id="outdaily4pem"
     85              name="Xoutdaily4pem"
    8686              output_freq="1d"
    8787              type="one_file"
     
    8989              enabled=".true.">
    9090
    91             <!-- VARS 0D -->
    92             <field_group operation="average"
    93                          freq_op="1ts">
    94                 <field field_ref="Ls" />
    95             </field_group>
    96 
    97             <field_group operation="average"
    98                          freq_op="1ts">
    99                 <field field_ref="area" operation="once" />
    100                 <field field_ref="ps" />
    101                 <field field_ref="tsurf" />
    102                 <field field_ref="waterdensity_surface" />
     91            <!-- Daily average -->
     92            <field_group operation="average"
     93                         freq_op="1ts">
     94                <field field_ref="ps" />
    10395                <field field_ref="h2o_layer1" />
    10496                <field field_ref="co2_layer1" />
    105                 <field field_ref="fluxsurf_dn_sw" name="ISR" />
    106                 <field field_ref="fluxtop_dn_sw" name="insolation" />
    107             </field_group>
    108 
     97                <field field_ref="soiltemp" />
     98                <field field_ref="waterdensity_soil" />
     99            </field_group>
     100        </file>
     101
     102        <!-- FILE 4: YEARLY outputs for the PEM WITHOUT sub-slope -->
     103        <file id="outyearly4pem"
     104              name="Xoutyearly4pem"
     105              output_freq="1y"
     106              type="one_file"
     107              time_units="days"
     108              enabled=".true.">
     109
     110            <!-- Yearly average -->
     111            <field_group operation="average"
     112                         freq_op="1ts">
     113                <field field_ref="ps" />
     114                <field field_ref="tsurf" />
     115                <field field_ref="soiltemp" />
     116                <field field_ref="waterdensity_surface" />
     117            </field_group>
     118
     119            <!-- Yearly minimum -->
    109120            <field_group operation="minimum"
    110121                         freq_op="1ts">
     
    114125                <field field_ref="perennial_co2ice" />
    115126            </field_group>
    116 
    117             <!-- VARS soil -->
    118             <field_group operation="average"
    119                          freq_op="1ts">
    120                 <field field_ref="soiltemp" />
    121                 <field field_ref="waterdensity_soil" />
    122             </field_group>
    123         </file>
    124 
    125         <!-- FILE 4 :diurnal averages outputs for PEM with sub-slopes; output_freq is every day -->
    126         <file id="diurnalave_s"
    127               name="Xdiurnalave"
     127        </file>
     128
     129        <!-- FILE 5: DAILY outputs for the PEM WITH sub-slopes -->
     130        <file id="outdaily4pem_s"
     131              name="Xoutdaily4pem"
    128132              output_freq="1d"
    129133              type="one_file"
     
    131135              enabled=".false.">
    132136
    133             <!-- VARS 0D -->
    134             <field_group operation="average"
    135                          freq_op="1ts">
    136                 <field field_ref="Ls" />
    137             </field_group>
    138 
    139             <field_group operation="average"
    140                          freq_op="1ts">
    141                 <field field_ref="area" operation="once" />
    142                 <field field_ref="ps" />
     137            <!-- Daily average -->
     138            <field_group operation="average"
     139                         freq_op="1ts">
     140                <field field_ref="ps" name="ps_day_mean" />
     141                <field field_ref="h2o_layer1" />
     142                <field field_ref="co2_layer1" />
     143                <field field_ref="soiltemp_slope01" />
     144                <field field_ref="soiltemp_slope02" />
     145                <field field_ref="soiltemp_slope03" />
     146                <field field_ref="soiltemp_slope04" />
     147                <field field_ref="soiltemp_slope05" />
     148                <field field_ref="soiltemp_slope06" />
     149                <field field_ref="soiltemp_slope07" />
     150                <field field_ref="waterdensity_soil_slope01" />
     151                <field field_ref="waterdensity_soil_slope02" />
     152                <field field_ref="waterdensity_soil_slope03" />
     153                <field field_ref="waterdensity_soil_slope04" />
     154                <field field_ref="waterdensity_soil_slope05" />
     155                <field field_ref="waterdensity_soil_slope06" />
     156                <field field_ref="waterdensity_soil_slope07" />
     157            </field_group>
     158        </file>
     159
     160        <!-- FILE 6: YEARLY outputs for the PEM WITH sub-slope -->
     161        <file id="outyearly4pem_s"
     162              name="Xoutyearly4pem"
     163              output_freq="1y"
     164              type="one_file"
     165              time_units="days"
     166              enabled=".false.">
     167
     168            <!-- Yearly average -->
     169            <field_group operation="average"
     170                         freq_op="1ts">
     171                <field field_ref="ps" name="ps_year_mean" />
    143172                <field field_ref="tsurf_slope01" />
    144173                <field field_ref="tsurf_slope02" />
     
    148177                <field field_ref="tsurf_slope06" />
    149178                <field field_ref="tsurf_slope07" />
     179                <field field_ref="soiltemp_slope01" />
     180                <field field_ref="soiltemp_slope02" />
     181                <field field_ref="soiltemp_slope03" />
     182                <field field_ref="soiltemp_slope04" />
     183                <field field_ref="soiltemp_slope05" />
     184                <field field_ref="soiltemp_slope06" />
     185                <field field_ref="soiltemp_slope07" />
    150186                <field field_ref="waterdensity_surface_slope01" />
    151187                <field field_ref="waterdensity_surface_slope02" />
     
    155191                <field field_ref="waterdensity_surface_slope06" />
    156192                <field field_ref="waterdensity_surface_slope07" />
    157                 <field field_ref="h2o_layer1" />
    158                 <field field_ref="co2_layer1" />
    159                 <field field_ref="fluxsurf_dn_sw" name="ISR" />
    160                 <field field_ref="fluxtop_dn_sw" name="insolation" />
    161             </field_group>
    162 
     193            </field_group>
     194
     195            <!-- Yearly minimum -->
    163196            <field_group operation="minimum"
    164197                         freq_op="1ts">
     
    193226                <field field_ref="perennial_co2ice_slope07" />
    194227            </field_group>
    195 
    196             <!-- VARS soil -->
    197             <field_group operation="average"
    198                          freq_op="1ts">
    199                 <field field_ref="soiltemp_slope01" />
    200                 <field field_ref="soiltemp_slope02" />
    201                 <field field_ref="soiltemp_slope03" />
    202                 <field field_ref="soiltemp_slope04" />
    203                 <field field_ref="soiltemp_slope05" />
    204                 <field field_ref="soiltemp_slope06" />
    205                 <field field_ref="soiltemp_slope07" />
    206                 <field field_ref="waterdensity_soil_slope01" />
    207                 <field field_ref="waterdensity_soil_slope02" />
    208                 <field field_ref="waterdensity_soil_slope03" />
    209                 <field field_ref="waterdensity_soil_slope04" />
    210                 <field field_ref="waterdensity_soil_slope05" />
    211                 <field field_ref="waterdensity_soil_slope06" />
    212                 <field field_ref="waterdensity_soil_slope07" />
    213             </field_group>
    214228        </file>
    215229
Note: See TracChangeset for help on using the changeset viewer.