Prescribing JULES PFT

Hi there,

I am running a suite (u-dn669) belonging to the ISIMIP3a intercomparison. I am trying to prescribe the PFT, but it has failed with the following statement:

{MPI Task 1} [FATAL ERROR] init_ic: Land ice points and soil points are mutually exclusive

I ran this model before with your help, but I am now only changing the dataset from which the PFT is prescribed. I checked, and everything seems fine with the file: the correct number of PFT, lat, lon, and the variable (‘frac’). I also checked that since they are fractions, when they are summed, the result is 1.

I am unsure what the problem might be, but the model does not pass to Spinup 1.

Do you have any suggestions?

Best wishes,

Maria Paula

Hi Maria Paula

The error message occurs when checking the initial surface type fractions specified under [namelist:jules_frac] rather than the prescribed surface type fractions specified under [namelist:jules_prescribed_dataset(N)]. JULES doesn’t allow land ice to be mixed with other surface types. It looks as though you have some points in your initial surface type fraction file that specify nonzero fractions for both land ice and some other surface type. I’d check for that first.

Good luck
David

Hi David,

Thank you for your response. I checked my file, and as you said, some surface fractions were>0 when the ice fraction was >0. I already changed the file, and all surface fractions are =0 when ice>0 (=1), and ice=0 when the surface fractions are >0. I ran the model, and I still got the same error in spinup_01:

{MPI Task 8} [FATAL ERROR] init_ic: All points should be either soil or land ice points - have land_pts = 2255 and soil_pts + lice_pts = 2254
{MPI Task 0} [FATAL ERROR] init_ic: Land ice points and soil points are mutually exclusive

Is there some other requirement that my file may not meet?

Best wishes,

Maria Paula

Hi Maria Paula

Sorry for the delay in replying. I was away yesterday and at a meeting earlier today.

Another thing to check is the variable sm_sat in the ancillary file specified under [namelist:jules_soil_props]. This should be zero at land ice points and nonzero at other points.

David

Hi David,
Thank you for your ideas.
I have checked, and it definitely is something related to my desired file. I have other fields that do not fail or are at least not as quick as my file (I don’t wait until they are finished). When I was checking with other files, I identified that “[namelist:jules_prescribed_dataset(5)]” as “[namelist:jules_frac]” has prescribed data for PFT in ./app/jules/rose-app.conf. I know this is not exactly related to the error, but I feel that it is something important that I do not understand about the model. Do you happen to know when that “[namelist:jules_prescribed_dataset(5)]” is used and when “[namelist:jules_frac]”? Is it used when l_veg_compete == True or only when l_veg_compete == False? If you don’t know, do you have any advice on how to discover it?

Best wishes,

Maria Paula

Hi Maria Paula

There are two things to consider. Firstly what happens during program initialisation (which is where your errors are occurring) and secondly what happens during the main program loop. The file specified under [namelist:jules_prescribed_dataset(5)] only has an effect once the main program loop starts.

If l_veg_compete is false, initial surface type fractions are specified by [namelist:jules_frac]. If surface type fractions aren’t prescribed, these initial fractions will be used throughout the run.

If l_veg_compete is true, initial surface type fractions are specified by [namelist:jules_initial]. If surface type fractions aren’t prescribed, these initial fractions are used on the first timestep, and then the fractions will be updated by the vegetation competition code.

Even if surface type fractions are prescribed by something like [namelist:jules_prescribed_dataset(5)], the fractions are still initialised as described above.

If the surface type fractions are prescribed, then (regardless of the value of l_veg_compete) the fractions get overwritten by the prescribed values at the beginning of each timestep, but this only happens once the main program loop starts (and this isn’t happening in your runs).

You can find more information at 6.22. ancillaries.nml — Joint UK Land Environment Simulator (JULES) v7.8 User Guide, 6.35. initial_conditions.nml — Joint UK Land Environment Simulator (JULES) v7.8 User Guide, and 6.34. prescribed_data.nml — Joint UK Land Environment Simulator (JULES) v7.8 User Guide.

Best wishes
David