CABLE Model Error: Wrong initialisation of zse_vec

I am facing an issue while running the offline version of the CABLE model. The error originates from the subroutine located in the CABLE-main/src/offline/cable_input.F90 file.

load_parameters(met,air,ssnow,veg,climate,bgc,soil,canopy,rough,rad, &
sum_flux,bal,logn,vegparmnew,casabiome,casapool, &
casaflux,sum_casapool, sum_casaflux,casamet,casabal,phen,POP,spinup,EMSOIL, &
TFRZ, LUC_EXPT, POPLUC).

While checking the error, I found that the Restart file is missing, due to which the CABLE model attempts to use default parameter values, which subsequently lead to errors in further calculations. I want to know how I can obtain or generate the required Restart file or resolve this issue in the absence of the Restart file.

The error logs are:

(gdb) run
Starting program: /home/alpha/Downloads/CABLE_July/CABLE-main/CABLE-main/bin/cable
[Thread debugging using libthread_db enabled]
Using host libthread_db library “/lib/x86_64-linux-gnu/libthread_db.so.1”.
Cannot process command line definition of namelist fie
using cable.nml as the namelsit
THE NAME LIST IS cable.nml
Use spatially-specific soil properties; 360 150
0
0
When choosing spatially-specific soil properties,
snow-free albedo is also overwritten by this data set.
Reading CABLE_PFTPARM namelist…
Reading CABLE_SOILPARM namelist…
Total number of patches (countPatch): 1
Entering Subroutine allocate_cable_vars
allocate patch fraction variable
Ending Subroutine allocate_cable_vars
iveg 1 2
patchfrac 1 1.00000000
Could neither find restart file ./
nor ./
Pre-loaded default initialisations are used.
Loaded some parameters from met input file: TumbaFluxnet.1.3_met.nc the rest are default values - check log file
ensuring consistency of ice points

Program received signal SIGFPE, Arithmetic exception.
0x0000555555598789 in cable_param_module::derived_parameters (soil=…, sum_flux=…, bal=…, ssnow=…, veg=…, rough=…) at /home/alpha/Downloads/CABLE_July/CABLE-main/CABLE-main/src/offline/cable_parameters.F90:1812
1812 soil_depth(:,klev) = soil_depth(:,klev-1) + soil%zse_vec(:,klev)

Hi Priyanka,

I think this problem is specifically to do with the “gridinfo” NetCDF file in our terminology. This contains a mixture of state and parameter variables, and is generally a sufficient starting point for running purely biophysical simulations (i.e. no CASA). Here’s a dump of the file to give you an idea of what is necessary:

Dataset: gadi/rp23/data/no_provenance/gridinfo/gridinfo_CSIRO_1x1.nc
Group: /

Dimensions
   longitude = 360
   latitude = 150
   patch = 1
   soil = 6
   rad = 3
   time = 12

Variables
  longitude   (360)
    Datatype:    Float32 (Float32)
    Dimensions:  longitude
    Attributes:
     units                = degrees_East

  latitude   (150)
    Datatype:    Float32 (Float32)
    Dimensions:  latitude
    Attributes:
     units                = degrees_North

  area   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     units                = m^2
     missing_value        = -99.0

  iveg   (360 × 150)
    Datatype:    Union{Missing, Int32} (Int32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = CSIRO classification of veg type
     missing_value        = -1

  patchfrac   (360 × 150 × 1)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × patch
    Attributes:
     long_name            = Patch fraction; 1.0 for 1x1 grid
     missing_value        = -1.0

  isoil   (360 × 150)
    Datatype:    Union{Missing, Int32} (Int32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = Zobler soil type
     missing_value        = -1

  SoilMoist   (360 × 150 × 6 × 12)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × soil × time
    Attributes:
     long_name            = Soil moisture profile from previous GSWP runs
     units                = m^3/m^3
     missing_value        = -1.0

  SoilTemp   (360 × 150 × 6 × 12)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × soil × time
    Attributes:
     long_name            = Soil temperature profile from previous GSWP runs
     units                = K
     missing_value        = -1.0

  SnowDepth   (360 × 150 × 12)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × time
    Attributes:
     units                = m
     missing_value        = -1.0

  Albedo   (360 × 150 × 3)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × rad
    Attributes:
     long_name            = ISLSCP2 snow-free bareground albedo
     missing_value        = -1.0

  LAI   (360 × 150 × 12)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude × time
    Attributes:
     long_name            = Leaf area index
     missing_value        = -1.0

  SoilOrder   (360 × 150)
    Datatype:    Union{Missing, Int32} (Int32)
    Dimensions:  longitude × latitude
    Attributes:
     missing_value        = -1

  Ndep   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = annual Nitrogen deposition rate
     units                = g N/m^2/year
     missing_value        = -99.0

  Nfix   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = annual Nitrogen fixation rate
     units                = g N/m^2/year
     missing_value        = -99.0

  Pwea   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = annual yield of Phosphorus from weathering
     units                = g P/m^2/year
     missing_value        = -99.0

  Pdust   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = annual yield of Phosphorus from dust deposition
     units                = g P/m^2/year
     missing_value        = -99.0

  clay   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = UM soil texture - clay fraction
     missing_value        = -1.0

  silt   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = UM soil texture - silt fraction
     missing_value        = -1.0

  sand   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = UM soil texture - sand fraction
     missing_value        = -1.0

  swilt   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = VOL SMC AT WILTING
     missing_value        = -1.0

  sfc   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = VOL SMC AT CRIT PT
     missing_value        = -1.0

  ssat   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = VOL SMC AT SATURATION
     missing_value        = -1.0

  bch   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = CLAPP-HORNBERGER B COEFFICIENT
     missing_value        = -1.0

  hyds   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = SAT SOIL CONDUCTIVITY
     units                = m/s
     missing_value        = -1.0

  sucs   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = SATURATED SOIL WATER SUCTION
     units                = m
     missing_value        = -1.0

  rhosoil   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = SOIL BULK DENSITY
     units                = kg/m3
     missing_value        = -1.0

  cnsd   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = THERMAL CONDUCTIVITY
     units                = W/m/K
     missing_value        = -1.0

  css   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = Soil specific heat capacity
     units                = J/kg/K
     missing_value        = -1.0

  albedo2   (360 × 150)
    Datatype:    Union{Missing, Float32} (Float32)
    Dimensions:  longitude × latitude
    Attributes:
     long_name            = UM SNOW-FREE ALBEDO OF SOIL
     missing_value        = -1.0

Unfortunately this is not well documented, and we don’t yet have provenance for this file.

Hi Priyanka,

I’m taking over from @lachlanswhyborn because I think that I encountered a related error a few days ago, and I have a fix. If I’m correct, it’s not a problem with the input files but a problem with the initialisation of zse_vec in the code.

The fix is in a branch we can’t merge in the main version yet for other reasons. So I’ll need to get the fix out in a different branch and merge in for this to work. It’ll take me a few days probably to get it all done.

Hi @clairecarouge, thank you for your response. I will wait for your fix to try out. Please let me know whenever it is ready and how I can access it.

@project2114 , I’ve applied the fix to CABLE. Although, I have been unable to reproduce your error exactly so it may not solve everything for you.

To use the updated version, you can run git pull within the CABLE directory. If it doesn’t work (because you have made local changes), you will need to do the following:

  • re-clone the repository in another directory with git clone
  • create a branch to put your local changes (you shouldn’t put any changes directly in the main branch).
  • copy your changes from your first local CABLE repository to the new one
  • delete the first local CABLE repository.

If this new version does not solve your problem, we will need more information about what you are running (input files, command and changes to the code, etc.).

Hi @clairecarouge, thanks for the update. I’ve pulled the latest changes, and CABLE is now running successfully in my setup. However, I’m currently trying to get the CASA-CNP module to run in cold start mode, and it seems it’s not yet initializing properly. I’m working through the configuration to ensure it spins up correctly.
I’ll report back once I’ve verified CASA-CNP is functioning as expected.

I’m glad to hear this has been solved. To inform other users, I will mark this request as solved and close the topic. Please open a different topic if you have issues with CASA-CNP.

Also, would you mind if I change the topic’s title to better reflect the issue (problem with zse_vec initialisation instead of restart file error)?

Ok, thanks for your support.
Yes, please feel free to change the topic’s title.