Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

Problem about run time

Status
Not open for further replies.

MikeYuan

tfYuan
Member
Hello, I chose the compset IHistClm50BgcCropGs to spin-up 200 times for single point(res 1x1_brazil). After it finished, I found the last restart file included the information that the time has came to the year of 2050(file name:single_spinup_brazil01.clm2.r.2050-01-01-00000), does it mean I simulated 200years? However, from my perspective, the historical case merely runs from 1850 to 2014, therefore, it makes sense that the simulation should be ceased at the year of 2014, why it could continue to run until 2050? The doubt made me confused.

---------------------------------------------------------------------------------------------------------------------------------
Related file are attached below, any suggestions to answer the question will be really helpful!

Thank you.
Mike
 

Attachments

  • datm_in.txt
    1.5 KB · Views: 11
  • lnd_in.txt
    10.3 KB · Views: 18

oleson

Keith Oleson
CSEG and Liaisons
Staff member
If you spunup up for 200 years with repeated atmospheric forcing and your model start date was 1850, then your restart file at the end would be single_spinup_brazil01.clm2.r.2050-01-01-00000. From your lnd_in, it looks like you are then using that restart file for finidat to initialize your historical simulation (1850-2014). So I don't think there is any problem with that.
 

MikeYuan

tfYuan
Member
If you spunup up for 200 years with repeated atmospheric forcing and your model start date was 1850, then your restart file at the end would be single_spinup_brazil01.clm2.r.2050-01-01-00000. From your lnd_in, it looks like you are then using that restart file for finidat to initialize your historical simulation (1850-2014). So I don't think there is any problem with that.
Thanks for your reply,Mr.Oleson. But when I use the restart file for finidat to initialize my historical simulation, the RUN_SATARTDATE must be 2050, otherwise, it didn’t work and show the error. So for example, if I want to simulate the year of 1965, how should I do?
------------------------------error information below--------------------------------------------------
ERROR: ERROR in restFileMod.F90 at line 923.
The information about the line923 are following:
if (year /= rest_year) then
if (masterproc) then
write(iulog,*) 'ERROR: Current model year does not match year on initial conditions file (finidat)'
write(iulog,*) 'Current year: ', year
write(iulog,*) 'Year on initial conditions file: ', rest_year
write(iulog,*) ' '
write(iulog,*) 'This match is a requirement when both:'
write(iulog,*) '(a) The current run is a transient run, and'
write(iulog,*) '(b) The initial conditions file was generated from a transient run'
write(iulog,*) ' '
write(iulog,*) 'Possible solutions to this problem:'
write(iulog,*) '(1) Make sure RUN_STARTDATE is set correctly'
write(iulog,*) '(2) Make sure you are using the correct initial conditions file (finidat)'
write(iulog,*) '(3) If you are confident that you are using the correct start date and initial conditions file,'
write(iulog,*) ' yet are still experiencing this error, then you can bypass this check by setting:'
write(iulog,*) ' check_finidat_year_consistency = .false.'
write(iulog,*) ' in user_nl_clm'
write(iulog,*) ' '
end if
call endrun(msg=errMsg(sourcefile, __LINE__)) ! Lin923 --Mike
end if ! year /= rest_year
end if ! flanduse_timeseries_rest /= ' '
end if ! fpftdyn /= ' '
------------------------------------------------------------------------------------------------------------
Thank you.
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
It seems like your spinup was actually done in transient mode. I didn't notice this earlier, but according to your first post, you chose the IHistClm50BgcCropGs for spinup. If you want to spinup in preparation for a transient run then you would want to choose the I1850Clm50BgcCrop compset or something similar.
 

MikeYuan

tfYuan
Member
It seems like your spinup was actually done in transient mode. I didn't notice this earlier, but according to your first post, you chose the IHistClm50BgcCropGs for spinup. If you want to spinup in preparation for a transient run then you would want to choose the I1850Clm50BgcCrop compset or something similar.
Thanks you very much, Mr.Oleson.
Sure. Now, I chose the I1850CLM50BgcCrop to spin up for 15 years(10year for AD, 5year post). Then I pretended to use the IHistClm50BgcCrop to simulate while I use that restart file(POSTspinup_1850BgcCrop_brazil01.clm2.r.0006-01-01-00000.nc) from spin up(I1850CLM50BgcCrop compset) for finidat, but it didn't work and showed the following error, I have no idea about it, would you help me to see the problem, thanks.
In addtion, I wonder the difference between compset of I1850Clm* and I2000Clm*? From my opinion, if I want simulate the year before 2000, use the 1850compset to spin-up; if simulate the year after 2000, use the 2000compset to spin up?
------------------------------error information below--------------------------------------------------
ERROR: ERROR in ncdio_pio.F90.in at line 368
status = pio_inq_dimid (ncid, trim(dimname), dimid)
status = pio_inq_dimlen (ncid, dimid, dimlen)
if (dimlen /= value) then
write(iulog,*) subname//' ERROR: mismatch of input dimension ',dimlen, &
' with expected value ',value,' for variable ',trim(dimname)
if (present(msg)) then
write(iulog,'(a)') msg
end if
call shr_sys_abort(errMsg(sourcefile, __LINE__)) ! Lin368 --Mike
end if
end subroutine check_dim
------------------------------------------------------------------------------------------------------------
Thank you
Mike
 

Attachments

  • user_nl_clm.txt
    3.1 KB · Views: 10
  • lnd_in.txt
    10.3 KB · Views: 7

oleson

Keith Oleson
CSEG and Liaisons
Staff member
If you are starting a transient run from a year other than the year you spunup for, then you are likely to run into a problem because the number of landunit/columns/patches on the restart file may not match those on the landuse dataset.
Typically, we spinup for 1850 conditions, then use that file as initial conditions for a full transient (1850-2014) run. Since this is a single point run which is fast and cheap, I would just run the full transient instead of trying to start from some initial conditions which are not in equilibrium with your starting year.
 

MikeYuan

tfYuan
Member
If you are starting a transient run from a year other than the year you spunup for, then you are likely to run into a problem because the number of landunit/columns/patches on the restart file may not match those on the landuse dataset.
Typically, we spinup for 1850 conditions, then use that file as initial conditions for a full transient (1850-2014) run. Since this is a single point run which is fast and cheap, I would just run the full transient instead of trying to start from some initial conditions which are not in equilibrium with your starting year.
Thanks for your kind, Mr.Oleson. According to your advices, I fixed the problem by setting the use_init_interp = .true. and adjust the DATM_CLMNCEP_YR_. Now, I have a doubt that what is the difference between the 2000 and 1850 of compset? What the situation I should choose the compset2000? Moreover, if I wanna simulate the year behind 2014, for instance, simulating 2015-2200, how should I do?

I appreciate it,
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Setup the 2000 and 1850 compsets and then explore the differences between them. Generally, 2000 compsets are used for "present-day" simulations when you want to compare to observations. You could also spinup using a 2000 compset in preparation for a future transient (e.g., SSP) simulation. Or you could continue a future transient simulation (2015-2100) from the end of a historical simulation (2014).
 

MikeYuan

tfYuan
Member
Setup the 2000 and 1850 compsets and then explore the differences between them. Generally, 2000 compsets are used for "present-day" simulations when you want to compare to observations. You could also spinup using a 2000 compset in preparation for a future transient (e.g., SSP) simulation. Or you could continue a future transient simulation (2015-2100) from the end of a historical simulation (2014).
Thank you very much, Mr.Oleson.
If I'll compare the obsertations that are betwwen 2010-2013,
Should I firstly select the 2000 compsets to spin-up and then bring the Hist compset to simulate from 2010 to 2013?

I appreciate it,
Mike
 

MikeYuan

tfYuan
Member
That seems reasonable.
Hello, Mr.Oleson
If I want to simulate the year of 2011, in terms of process "spin-up", is it enough that spin up 10years by using 2000 compsets?
I tend to spin-up 10years, then use the Hist compset to run 1 year as simulating 2011. Is it right?

I appreciate it,
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Sufficient spinup time depends on whether you are in SP (satellite phenology) mode or BGC mode (where carbon and nitrogen are active).
It will also depend on how spunup the initial file was you used to start the spinup for the years you are spinning up over.
There is some documentation on spinup time-scales here:



You might want to plot some of the variables that are discussed in the documentation to see how stable your spinup is.
 

MikeYuan

tfYuan
Member
Sufficient spinup time depends on whether you are in SP (satellite phenology) mode or BGC mode (where carbon and nitrogen are active).
It will also depend on how spunup the initial file was you used to start the spinup for the years you are spinning up over.
There is some documentation on spinup time-scales here:



You might want to plot some of the variables that are discussed in the documentation to see how stable your spinup is.
Thanks for your suggestion.
Hello, Mr.Oleson. By the way , I wanna ask a question. If I got the variable in patch level from the output file, such as TOTPFTC. How to make the variable dvided by different PFT? The variable seemes like the strcture :[time | 12] x [lat | 192] x [lon | 288]. So I have no idea to present it from the 16 sort of PFT.
I appreciate it,
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
Variables are averaged up to the gridcell-level by default. You would need to specify an additional history file that outputs TOTPFTC at the pft-level.
For example, for a monthly average of pft-level TOTPFTC output on a "h1" history file,

hist_dov2xy(2) = .false.
hist_mfilt(2) = 1
hist_nhtfrq(2) = 0
hist_fincl2 = 'TOTVEGC'
hist_type1d_pertape(2) = 'PFTS'

Some explanation of these namelist items can be found here:

 

MikeYuan

tfYuan
Member
Variables are averaged up to the gridcell-level by default. You would need to specify an additional history file that outputs TOTPFTC at the pft-level.
For example, for a monthly average of pft-level TOTPFTC output on a "h1" history file,

hist_dov2xy(2) = .false.
hist_mfilt(2) = 1
hist_nhtfrq(2) = 0
hist_fincl2 = 'TOTVEGC'
hist_type1d_pertape(2) = 'PFTS'

Some explanation of these namelist items can be found here:

Thanks for your advices, Mr.Oleson.
Finally, I got my target variable based on pft-level by following your above suggestions.However, in fact, I want to get the value of the variable under each PFT , but the current pft level seems like a series of numbers including the coordinate information.
So how should I do ? May I convert it by using the 'pfts1d_lon','pfts1d_alt', and 'pfts1d_itype_veg'? But I noticed that the value of 'pfts1d_itype_veg' is in the range of 0-80 rather than '16', which is far more than the number of actual type. Now, I'm really confused about it.

Looking forward to your reply.
I appreciate it very much,
Mike
 

MikeYuan

tfYuan
Member
Thanks for your advices, Mr.Oleson.
Finally, I got my target variable based on pft-level by following your above suggestions.However, in fact, I want to get the value of the variable under each PFT , but the current pft level seems like a series of numbers including the coordinate information.
So how should I do ? May I convert it by using the 'pfts1d_lon','pfts1d_alt', and 'pfts1d_itype_veg'? But I noticed that the value of 'pfts1d_itype_veg' is in the range of 0-80 rather than '16', which is far more than the number of actual type. Now, I'm really confused about it.

Looking forward to your reply.
I appreciate it very much,
Mike
sorry, there is a mistake, 'pft 1d_lat', not 'pfts1d_alt'
 

MikeYuan

tfYuan
Member
Yes, you can convert from 1d to 2d using the pfts1d_lon, pfts1d_lat indices. The other pfts are various crop types.
The pfts are described in these two tables:


Thank you very much, Mr.Oleson.
May I understand it like this? In terms of the value of 'pfts1d_itype_veg', the number "1","2",..."15" represent PFT, the number "17","18","19",..."79" represent CFT, all right?

I appreciate it very much,
Mike
 

oleson

Keith Oleson
CSEG and Liaisons
Staff member
With the crop model active, as it appears to be in your case, pfts1d_itype_veg = 0,14 are the "natural" plant functional types (with 0 being bare soil and 14 being C3 grass), and pfts1d_itype_veg = 15,78 are the crop types (with 15 being C3 unmanaged rainfed crop, 16 being C3 unmanaged irrigated crop, and 17 being rainfed temperate corn, etc). However, 15 and 16 should not be present with the crop model active, so yes you can think of 17, 18, 19, ..., 79 representing CFT.
 

MikeYuan

tfYuan
Member
With the crop model active, as it appears to be in your case, pfts1d_itype_veg = 0,14 are the "natural" plant functional types (with 0 being bare soil and 14 being C3 grass), and pfts1d_itype_veg = 15,78 are the crop types (with 15 being C3 unmanaged rainfed crop, 16 being C3 unmanaged irrigated crop, and 17 being rainfed temperate corn, etc). However, 15 and 16 should be present with the crop model active, so yes you can think of 17, 18, 19, ..., 79 representing CFT.
Thanks for you detailed description,Mr.Oleson.
By the way, I wonder if I used IHistClm50BgcCrop, and I found that 'do_transient_pfts=.true.' in my lnd_in file, does it mean
the 'dynamic global vegetation model' is turned on, and the pft will change with the time?
I appreciate it very much,
Mike
 
Status
Not open for further replies.
Top