-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Obspack start+count exceeds dimension bound error #2170
Comments
Thanks for writing @alli-moon. Would you be able to run the following command and post the output here? $ ncdump -cts filename.nc where Also if we can get this script to work, would you mind if we could include it in the GCPy package? That would be a useful tool for others in the GC community. |
@alli-moon, I was able to run your python code locally and was able to generate some sample files. They have this format (i.e. output of netcdf ObsPack_config_20220531 {
dimensions:
obs = UNLIMITED ; // (24 currently)
string_of_200chars = 200 ;
calendar_ = 6 ;
string_of_500chars = 500 ;
variables:
int64 obs(obs) ;
obs:_Storage = "chunked" ;
obs:_ChunkSizes = 512 ;
obs:_Endianness = "little" ;
double latitude(obs) ;
latitude:_FillValue = -1.e+34 ;
latitude:units = "degrees_north" ;
latitude:long_name = "Sample latitude" ;
latitude:_Storage = "chunked" ;
latitude:_ChunkSizes = 778LL ;
latitude:_Endianness = "little" ;
latitude:_Storage = "chunked" ;
latitude:_ChunkSizes = 24 ;
latitude:_Endianness = "little" ;
double longitude(obs) ;
longitude:_FillValue = -1.e+34 ;
longitude:units = "degrees_east" ;
longitude:long_name = "Sample latitude" ;
longitude:_Storage = "chunked" ;
longitude:_ChunkSizes = 778LL ;
longitude:_Endianness = "little" ;
longitude:_Storage = "chunked" ;
longitude:_ChunkSizes = 24 ;
longitude:_Endianness = "little" ;
double altitude(obs) ;
altitude:_FillValue = -1.e+34 ;
altitude:units = "meters" ;
altitude:long_name = "sample altitude in meters above sea level" ;
altitude:comment = "Altitude is surface elevation plus sample intake height in meters above sea level" ;
altitude:_Storage = "chunked" ;
altitude:_ChunkSizes = 778LL ;
altitude:_Endianness = "little" ;
altitude:_Storage = "chunked" ;
altitude:_ChunkSizes = 24 ;
altitude:_Endianness = "little" ;
int time(obs) ;
time:_FillValue = -999999999 ; // "1938-04-24 22:13:21"
time:units = "Seconds since 1970-01-01 00:00:00 UTC" ;
time:long_name = "Seconds since 1970-01-01 00:00:00 UTC" ;
time:_Storage = "chunked" ;
time:_ChunkSizes = 778LL ; // "1970-01-01 00:12:58"
time:_DeflateLevel = 5LL ; // "1970-01-01 00:00:05"
time:_Endianness = "little" ;
time:_Storage = "chunked" ;
time:_ChunkSizes = 24 ;
time:_Endianness = "little" ;
char obspack_id(obs, string_of_200chars) ;
obspack_id:long_name = "Unique ObsPack observation id" ;
obspack_id:comment = "Unique observation id string that includes obs_id, dataset_id and obspack_num." ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1LL, 200LL ;
obspack_id:_DeflateLevel = 5LL ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1, 200 ;
byte CT_sampling_strategy(obs) ;
CT_sampling_strategy:_FillValue = -9b ;
CT_sampling_strategy:long_name = "model sampling strategy" ;
CT_sampling_strategy:values = "How to sample model. 1=4-hour avg; 2=1-hour avg; 3=90-min avg; 4=instantaneous" ;
CT_sampling_strategy:_ChunkSizes = 778LL ;
CT_sampling_strategy:_DeflateLevel = 5LL ;
CT_sampling_strategy:_Endianness = "little" ;
CT_sampling_strategy:_Storage = "chunked" ;
CT_sampling_strategy:_ChunkSizes = 24 ;
byte calendar_(calendar_) ;
calendar_:_Storage = "contiguous" ;
short string_of_200chars(string_of_200chars) ;
string_of_200chars:_Storage = "contiguous" ;
string_of_200chars:_Endianness = "little" ;
short string_of_500chars(string_of_500chars) ;
string_of_500chars:_Storage = "contiguous" ;
string_of_500chars:_Endianness = "little" ;
// global attributes:
:units = "degrees_north" ;
:_FillValue = -1.e+34 ;
:long_name = "Sample latitude" ;
:_Storage = "chunked" ;
:_ChunkSizes = 778LL ;
:_Endianness = "little" ;
:_NCProperties = "version=2,netcdf=4.8.1,hdf5=1.12.1" ;
:_SuperblockVersion = 2 ;
:_IsNetcdf4 = 1 ;
:_Format = "netCDF-4" ;
data:
obs = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23 ;
calendar_ = 0, 1, 2, 3, 4, 5 ;
// global attributes:
:units = "degrees_north" ;
:_FillValue = -1.e+34 ;
:long_name = "Sample latitude" ;
:_Storage = "chunked" ;
:_ChunkSizes = 778LL ;
:_Endianness = "little" ;
:_NCProperties = "version=2,netcdf=4.8.1,hdf5=1.12.1" ;
:_SuperblockVersion = 2 ;
:_IsNetcdf4 = 1 ;
:_Format = "netCDF-4" ;
data:
obs = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, 23 ;
calendar_ = 0, 1, 2, 3, 4, 5 ;
string_of_200chars = 0, 1, 2, ... 200
string_of_500chars = 0, 1, 2, ... 500 I happen to have a sample netcdf obspack_co2_1_GLOBALVIEWplus_v4.1_2018-10-29.20080417 {
dimensions:
obs = UNLIMITED ; // (3834 currently)
calendar_components = 6 ;
string_of_200chars = 200 ;
variables:
int obs(obs) ;
obs:long_name = "obs" ;
obs:_Storage = "chunked" ;
obs:_ChunkSizes = 1024 ;
obs:_Endianness = "little" ;
int time(obs) ;
time:units = "Seconds since 1970-01-01 00:00:00 UTC" ;
time:_FillValue = -999999999 ; // "1938-04-24 22:13:21"
time:long_name = "Seconds since 1970-01-01 00:00:00 UTC" ;
time:_Storage = "chunked" ;
time:_ChunkSizes = 959 ;
time:_DeflateLevel = 5 ;
time:_Endianness = "little" ;
int model_sample_window_start(obs) ;
model_sample_window_start:units = "Seconds since 1970-01-01 00:00:00 UTC" ;
model_sample_window_start:_FillValue = -999999999 ; // "1938-04-24 22:13:21"
model_sample_window_start:long_name = "Model sampling window start time" ;
model_sample_window_start:_Storage = "chunked" ;
model_sample_window_start:_ChunkSizes = 959 ;
model_sample_window_start:_DeflateLevel = 5 ;
model_sample_window_start:_Endianness = "little" ;
int model_sample_window_end(obs) ;
model_sample_window_end:units = "Seconds since 1970-01-01 00:00:00 UTC" ;
model_sample_window_end:_FillValue = -999999999 ; // "1938-04-24 22:13:21"
model_sample_window_end:long_name = "Model sampling window end time" ;
model_sample_window_end:_Storage = "chunked" ;
model_sample_window_end:_ChunkSizes = 959 ;
model_sample_window_end:_DeflateLevel = 5 ;
model_sample_window_end:_Endianness = "little" ;
float latitude(obs) ;
latitude:units = "degrees_north" ;
latitude:_FillValue = -1.e+34f ;
latitude:long_name = "Sample latitude" ;
latitude:_Storage = "chunked" ;
latitude:_ChunkSizes = 959 ;
latitude:_DeflateLevel = 5 ;
latitude:_Endianness = "little" ;
float longitude(obs) ;
longitude:units = "degrees_east" ;
longitude:_FillValue = -1.e+34f ;
longitude:long_name = "Sample longitude" ;
longitude:_Storage = "chunked" ;
longitude:_ChunkSizes = 959 ;
longitude:_DeflateLevel = 5 ;
longitude:_Endianness = "little" ;
float altitude(obs) ;
altitude:units = "meters" ;
altitude:_FillValue = -1.e+34f ;
altitude:long_name = "sample altitude in meters above sea level" ;
altitude:comment = "Altitude is elevation plus sample intake height in meters above sea level." ;
altitude:_Storage = "chunked" ;
altitude:_ChunkSizes = 959 ;
altitude:_DeflateLevel = 5 ;
altitude:_Endianness = "little" ;
float value(obs) ;
value:units = "mol mol-1" ;
value:_FillValue = -1.e+34f ;
value:long_name = "measured mole fraction of carbon dioxide in air" ;
value:comment = "Mole per mole of dry air." ;
value:_Storage = "chunked" ;
value:_ChunkSizes = 959 ;
value:_DeflateLevel = 5 ;
value:_Endianness = "little" ;
double time_decimal(obs) ;
time_decimal:units = "years" ;
time_decimal:_FillValue = -1.e+34 ;
time_decimal:long_name = "sample decimal year" ;
time_decimal:comment = "Decimal time in UTC." ;
time_decimal:_Storage = "chunked" ;
time_decimal:_ChunkSizes = 480 ;
time_decimal:_DeflateLevel = 5 ;
time_decimal:_Endianness = "little" ;
int time_components(obs, calendar_components) ;
time_components:_FillValue = -9 ;
time_components:long_name = "Calendar time components as integers. Times and dates are UTC." ;
time_components:order = "year, month, day, hour, minute, second" ;
time_components:comment = "Calendar time components as integers. Times and dates are UTC." ;
time_components:_Storage = "chunked" ;
time_components:_ChunkSizes = 1, 6 ;
time_components:_DeflateLevel = 5 ;
time_components:_Endianness = "little" ;
char obspack_id(obs, string_of_200chars) ;
obspack_id:long_name = "Unique ObsPack observation id" ;
obspack_id:comment = "Unique observation id string that includes obs_id, dataset_id and obspack_num." ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1, 200 ;
obspack_id:_DeflateLevel = 5 ;
int obs_flag(obs) ;
obs_flag:units = "binary" ;
obs_flag:_FillValue = -9 ;
obs_flag:long_name = "obspack flag" ;
obs_flag:comment = "Determined by data provider (1: large spatial scale representation; 0: local/regional influence)" ;
obs_flag:_Storage = "chunked" ;
obs_flag:_ChunkSizes = 959 ;
obs_flag:_DeflateLevel = 5 ;
obs_flag:_Endianness = "little" ;
int CT_sampling_strategy(obs) ;
CT_sampling_strategy:_FillValue = -9 ;
CT_sampling_strategy:long_name = "model sampling strategy" ;
CT_sampling_strategy:values = "How to sample model. 1=4-hour avg; 2=1-hour avg; 3=90-min avg; 4=instantaneous" ;
CT_sampling_strategy:_Storage = "chunked" ;
CT_sampling_strategy:_ChunkSizes = 959 ;
CT_sampling_strategy:_DeflateLevel = 5 ;
CT_sampling_strategy:_Endianness = "little" ;
float CT_MDM(obs) ;
CT_MDM:units = "mol mol-1" ;
CT_MDM:_FillValue = -1.e+34f ;
CT_MDM:long_name = "CT2018 PROVISIONAL model-data mismatch, version 1" ;
CT_MDM:warning = "Provisional CT2018 model-data-mismatch, subject to revision" ;
CT_MDM:_Storage = "chunked" ;
CT_MDM:_ChunkSizes = 959 ;
CT_MDM:_DeflateLevel = 5 ;
CT_MDM:_Endianness = "little" ;
float CT_RMSE(obs) ;
CT_RMSE:units = "mol mol-1" ;
CT_RMSE:_FillValue = -1.e+34f ;
CT_RMSE:long_name = "CT2018 PROVISIONAL RMSE, version 1" ;
CT_RMSE:source = "RMSE from which CT2018 model-data-mismatch is generated." ;
CT_RMSE:_Storage = "chunked" ;
CT_RMSE:_ChunkSizes = 959 ;
CT_RMSE:_DeflateLevel = 5 ;
CT_RMSE:_Endianness = "little" ;
int CT_assim(obs) ;
CT_assim:units = "NA" ;
CT_assim:_FillValue = -9 ;
CT_assim:long_name = "assimilation flag (0=assim,1=no,2=withheld)" ;
CT_assim:values = "0=assimilate; 1=do-not-assimilate; 2=assimilable but withheld for cross-validation" ;
CT_assim:_Storage = "chunked" ;
CT_assim:_ChunkSizes = 959 ;
CT_assim:_DeflateLevel = 5 ;
CT_assim:_Endianness = "little" ;
int CT_may_reject(obs) ;
CT_may_reject:_FillValue = -9 ;
CT_may_reject:long_name = "may_reject EnKF flag" ;
CT_may_reject:values = "CT internal EnKF flag, logical: 0 (FALSE)=may not reject; 1 (TRUE)=may reject" ;
CT_may_reject:_Storage = "chunked" ;
CT_may_reject:_ChunkSizes = 959 ;
CT_may_reject:_DeflateLevel = 5 ;
CT_may_reject:_Endianness = "little" ;
int CT_may_localize(obs) ;
CT_may_localize:_FillValue = -9 ;
CT_may_localize:long_name = "may_localize EnKF flag" ;
CT_may_localize:values = "CT internal EnKF flag, logical: 0 (FALSE)=may not localize; 1 (TRUE)=may localize" ;
CT_may_localize:_Storage = "chunked" ;
CT_may_localize:_ChunkSizes = 959 ;
CT_may_localize:_DeflateLevel = 5 ;
CT_may_localize:_Endianness = "little" ;
// global attributes:
:notes = "This file contains CarbonTracker time averaged mole fraction information at select sampling locations derived from observations subset from ObsPack." ;
:warning = "Site moves already applied. Latitude/longitude here may not be that of real site location." ;
:disclaimer = "CarbonTracker is an open product of the NOAA Earth System Research Laboratory using data from the Global Monitoring Division greenhouse as observational network and collaborating institutions. Model results including figures and tabular material found on the CarbonTracker website may be used for non-commercial purposes without restriction, but we request that the following acknowledgement text be included in documents or publications made using CarbonTracker results: CarbonTracker results provided by NOAA/ESRL, Boulder, Colorado, USA, http://carbontracker.noaa.gov Since we expect to continuously update the CarbonTracker product, it is important to identify which version you are using. To provide accurate citation, please include the version of the CarbonTracker release in any use of these results. The CarbonTracker team welcomes special requests for data products not offered by default on this website, and encourages proposals for collaborative activities. Contact us at [email protected]." ;
:email = "[email protected]" ;
:url = "http://carbontracker.noaa.gov" ;
:institution = "NOAA Earth System Research Laboratory" ;
:conventions = "CF-1.5" ;
:history = "Created on Wed Oct 31 2018 03:41:19 UTC\nby script \'Time-stamp: <tfe05:/home/Andy.Jacobson/co2/input/co2_obs/obspacks/obspack_co2_1_GLOBALVIEWplus_v4.1_2018-10-29/data/andy/collate_into_dailies.r: 30 Oct 2018 (Tue) 23:39:08 UTC>\'" ;
:output_flask_inwindow = "4" ;
:time_window_start = "2008-04-17 00:00:00 UTC" ;
:time_window_end = "2008-04-18 00:00:00 UTC" ;
:_SuperblockVersion = 2 ;
:_IsNetcdf4 = 1 ;
:_Format = "netCDF-4" ;
data:
data:
obs = 1, 2, 3, 4, ...
} GEOS-Chem only needs to read in the latitude, longitude, altitude, obspack_id, time fields. I think your file has double longitude and latitude whereas GEOS-Chem is expecting to read in float. In !----------------------------------------------------------------------
! Variables for the ObsPack diagnostic
! NOTE: ObsPack archives point data, so don't register these
! as the ObsPack file format won't be COARDS-compliant!
!----------------------------------------------------------------------
! ObsPack File variables
LOGICAL :: Do_ObsPack
INTEGER :: ObsPack_fId
CHARACTER(LEN=1024) :: ObsPack_InFile
CHARACTER(LEN=1024) :: ObsPack_OutFile
! ObsPack Inputs
INTEGER :: ObsPack_nObs
CHARACTER(LEN=200), POINTER :: ObsPack_Id (: )
INTEGER, POINTER :: ObsPack_nSamples (: )
INTEGER, POINTER :: ObsPack_Strategy (: )
REAL(f4), POINTER :: ObsPack_Latitude (: )
REAL(f4), POINTER :: ObsPack_Longitude (: )
REAL(f4), POINTER :: ObsPack_Altitude (: ) You may also have a similar issue the obs dimension, which in your file is int64 (i.e. INTEGER*8) but GEOS_Chem assumes and int32 aka INTEGER. |
Hi @yantosca, We added the following lines to the script.
Here is one of the resulting netCDF files:
We still get the same error when the simulation begins time stepping on May 31st. Do you have any other recommendations? |
Thanks for your patience @alli-moon. I am able to replicate this issue on my end. Stay tuned for advice. |
Hi @alli-moon. The issue is in the |
It could be that python is not saving out 200 characters per string and that is messing up the count. |
Hi @alli-moon. I found a couple more things. First, the obspack_mod.F90 module was still using some references to the netCDF-F77 interface instead of the netCDF-F90 interface. I'll need to push a bugfix branch to get the fixes into 14.3.1 Secondly, the netCDF assumes that you are reading a string as an array of bytes. I was able to test this with: CHARACTER(LEN=1) :: test(200,24)
...
!----------------------------
! Read ID string
!----------------------------
st2d = (/ 1, 1 /)
ct2d = (/ CHAR_LEN_OBS, nObs /)
varName = 'obspack_id'
!CALL NcRd( State_Diag%ObsPack_Id, fId, TRIM(varName), st2d, ct2d )
CALL NcRd( test, fId, TRIM(varName), st2d, ct2d )
print*, '### read obspack_id'
print*, test(:,1)
stop which prints out: 2022-05-31_0030_BermudaTudorHill_GC-MODEL I think the solution is to read the obspack_id variable into a temporary array and then pack the string into |
This merge brings PR #2188 (ObsPack bug fixes: (1) Use netCDF-F90 library routines (2) Read obspack_id variable into a character array, by @yantosca) into the GEOS-Chem "no-diff-to-benchmark" development stream. This PR fixes a number of issues in ObsPack I/O as originally described in issue #2170. Signed-off-by: Bob Yantosca <[email protected]>
@alli-moon: I have pushed fixes for this issue into the |
Hi @yantosca , |
Hi @alli-moon, yes, I did have to make a modification to the script. Here it is! |
Hi @yantosca, I am attaching my geos_chem_config, Obspack_config, and the script to generate the input files. I am also including the obspack_mod.F90 in case the patch did not get installed correctly. Could you please take a look to see if you can figure out the issue / reproduce the error with my files? Thanks! Bermuda_Generate_ObsPack_bugfix.txt |
Thanks @alli-moon. I've reopened this issue for now. I used your netCDF file and was able to reproduce your error. Will dig a bit further. |
Hi again @alli-moon. I think I see the difference. In your Python code you have: i_config_ds = i_config_ds.assign_coords(i_coords)
i_config_ds.obspack_id.encoding.update({"char_dim_name": "string_of_200chars"}) which produces a variable with these dimensions: char obspack_id(obs, string_of_200chars) ;
obspack_id:long_name = "Unique ObsPack observation id" ;
obspack_id:comment = "Unique observation id string that includes obs_id, dataset_id and obspack_num." ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1, 200 ; In my python code I have # Name the char dim name as 'string_of_200chars' to make GEOS-Chem happy.
# See the xarray GitHub link above for more info on
# .update({'char_dim_name': 'xxxxx'})
#i_config_ds.obspack_id.encoding.update({
# "char_dim_name": "string_of_200chars"
#})
i_config_ds = i_config_ds.assign_coords(i_coords) so I get char obspack_id(obs, string200) ;
obspack_id:long_name = "Unique ObsPack observation id" ;
obspack_id:comment = "Unique observation id string that includes obs_id, dataset_id and obspack_num." ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1, 200 ;
byte CT_sampling_strategy(obs) ;
CT_sampling_strategy:_FillValue = -9b ;
CT_sampling_strategy:long_name = "model sampling strategy" ;
CT_sampling_strategy:values = "How to sample model. 1=4-hour avg; 2=1-hour avg; 3=90-min avg; 4=instantaneous" ; I'm not 100% sure why, but letting Python set the dimension for the string width seems to work, but if you try to declare that manually, it doesn't. |
@alli-moon, maybe Python (or xarray) has some special handling baked in for this, I don't know... |
Hi @yantosca , ` |
Hi @alli-moon, thanks for your patience. I took your most recent Obspack_config_20220531.nc file and was able to read it successfully with the updates in these modules: You can Here is the GEOS-Chem log file from my simulation (I used the default species CO, NO, O3). And here is the netCDF dump of the file generated by GEOS-Chem netcdf GEOSChem.ObsPack.20220531_0000z {
dimensions:
obs = UNLIMITED ; // (24 currently)
species = 3 ;
char_len_obs = 200 ;
variables:
char obspack_id(obs, char_len_obs) ;
obspack_id:long_name = "obspack_id" ;
obspack_id:units = "1" ;
obspack_id:_Storage = "chunked" ;
obspack_id:_ChunkSizes = 1, 200 ;
obspack_id:_NoFill = "true" ;
int nsamples(obs) ;
nsamples:long_name = "no. of model samples" ;
nsamples:units = "1" ;
nsamples:comment = "Number of discrete model samples in average" ;
nsamples:_Storage = "chunked" ;
nsamples:_ChunkSizes = 1024 ;
nsamples:_Endianness = "little" ;
nsamples:_NoFill = "true" ;
int averaging_interval(obs) ;
averaging_interval:long_name = "Amount of model time over which this observation is averaged" ;
averaging_interval:units = "seconds" ;
averaging_interval:_Storage = "chunked" ;
averaging_interval:_ChunkSizes = 1024 ;
averaging_interval:_Endianness = "little" ;
averaging_interval:_NoFill = "true" ;
int averaging_interval_start(obs) ;
averaging_interval_start:long_name = "Start of averaging interval" ;
averaging_interval_start:units = "seconds since 1970-01-01 00:00:00 UTC" ;
averaging_interval_start:calendar = "standard" ;
averaging_interval_start:_Storage = "chunked" ;
averaging_interval_start:_ChunkSizes = 1024 ;
averaging_interval_start:_Endianness = "little" ;
averaging_interval_start:_NoFill = "true" ;
int averaging_interval_end(obs) ;
averaging_interval_end:long_name = "End of averaging interval" ;
averaging_interval_end:units = "seconds since 1970-01-01 00:00:00 UTC" ;
averaging_interval_end:calendar = "standard" ;
averaging_interval_end:_Storage = "chunked" ;
averaging_interval_end:_ChunkSizes = 1024 ;
averaging_interval_end:_Endianness = "little" ;
averaging_interval_end:_NoFill = "true" ;
float lon(obs) ;
lon:long_name = "longitude" ;
lon:units = "degrees_east" ;
lon:_Storage = "chunked" ;
lon:_ChunkSizes = 1024 ;
lon:_Endianness = "little" ;
lon:_NoFill = "true" ;
float lat(obs) ;
lat:long_name = "latitude" ;
lat:units = "degrees_north" ;
lat:_Storage = "chunked" ;
lat:_ChunkSizes = 1024 ;
lat:_Endianness = "little" ;
lat:_NoFill = "true" ;
float u(obs) ;
u:long_name = "Zonal component of wind" ;
u:units = "m s^-1" ;
u:_Storage = "chunked" ;
u:_ChunkSizes = 1024 ;
u:_Endianness = "little" ;
u:_NoFill = "true" ;
float v(obs) ;
v:long_name = "Meridional component of wind" ;
v:units = "m s^-1" ;
v:_Storage = "chunked" ;
v:_ChunkSizes = 1024 ;
v:_Endianness = "little" ;
v:_NoFill = "true" ;
float blh(obs) ;
blh:long_name = "Boundary layer height" ;
blh:units = "m" ;
blh:_Storage = "chunked" ;
blh:_ChunkSizes = 1024 ;
blh:_Endianness = "little" ;
blh:_NoFill = "true" ;
float q(obs) ;
q:long_name = "mass_fraction_of_water_inair" ;
q:units = "g water (kg air)^-1" ;
q:_Storage = "chunked" ;
q:_ChunkSizes = 1024 ;
q:_Endianness = "little" ;
q:_NoFill = "true" ;
float pressure(obs) ;
pressure:long_name = "pressure" ;
pressure:units = "hPa" ;
pressure:_Storage = "chunked" ;
pressure:_ChunkSizes = 1024 ;
pressure:_Endianness = "little" ;
pressure:_NoFill = "true" ;
float temperature(obs) ;
temperature:long_name = "temperature" ;
temperature:units = "K" ;
temperature:_Storage = "chunked" ;
temperature:_ChunkSizes = 1024 ;
temperature:_Endianness = "little" ;
temperature:_NoFill = "true" ;
float CO(obs) ;
CO:long_name = "Carbon monoxide" ;
CO:units = "mol mol-1" ;
CO:_FillValue = -1.e+34f ;
CO:_Storage = "chunked" ;
CO:_ChunkSizes = 1024 ;
CO:_Endianness = "little" ;
CO:_NoFill = "true" ;
float NO(obs) ;
NO:long_name = "Nitrogen oxide" ;
NO:units = "mol mol-1" ;
NO:_FillValue = -1.e+34f ;
NO:_Storage = "chunked" ;
NO:_ChunkSizes = 1024 ;
NO:_Endianness = "little" ;
NO:_NoFill = "true" ;
float O3(obs) ;
O3:long_name = "Ozone" ;
O3:units = "mol mol-1" ;
O3:_FillValue = -1.e+34f ;
O3:_Storage = "chunked" ;
O3:_ChunkSizes = 1024 ;
O3:_Endianness = "little" ;
O3:_NoFill = "true" ;
// global attributes:
:history = "GEOS-Chem simulation at 2024/03/18 17:52" ;
:conventions = "CF-1.4" ;
:references = "www.geos-chem.org; wiki.geos-chem.org" ;
:model_start_date = "2022/05/31 00:00:00 UTC" ;
:model_end_date = "2022/06/01 00:00:00 UTC" ;
:_NCProperties = "version=2,netcdf=4.8.0,hdf5=1.10.7" ;
:_SuperblockVersion = 2 ;
:_IsNetcdf4 = 0 ;
:_Format = "netCDF-4 classic model" ;
data:
} |
Hi @yantosca , |
Hi @alli-moon! Yes, I believe I've forgotten Headers/charpak_mod.F90. That has a couple of functions that converts a character array to a string and back. |
Hi @alli-moon! Were you able to resolve this issue? I wasn't able to reproduce your error with the obspack file that I produced (and with the modification in charpak_mod.F90). |
Hi @yantosca, |
Thanks @alli-moon. Sorry it didn't fix your issue. I'll close this issue for now. You can also look into subsetting the History diagnostics with LON_RANGE and LAT_RANGE. For example, if you don't need the southern hemisphere you can cut all that out and only save the northern hemisphere. |
Name and Institution (Required)
Name: Alli Moon
Institution: University of Washington
Confirm you have reviewed the following documentation
Description of your issue or question
Please provide as much detail as possible. Always include the GEOS-Chem version number and any relevant configuration and log files.
Hi there,
I am having issues trying to run Obspack in version 14.2.3. We previously successfully used a Python script to generate the obspack input files in version 13.4.1. We are trying to get hourly output from a specific grid box during two field campaigns, and then generate monthly averages for the whole globe during the rest of the simulation. The error occurs when Obspack is activated during the simulation in version 14.2.3. It produces the following error message when Obspack is activated 6 months into the simulation:
The error says
After many attempts to debug, the script below is the current version we have for 14.2.3. We are still not able to get the simulation to run when Obspack is activated. I am just including the summer info for simplicity but we run the same loop using SAMPLING_DATES_WINTER to generate the input files for that campaign. Can you please help us figure out what we need to change for the simulation to run?
Thank you for your time,
Alli
The text was updated successfully, but these errors were encountered: