For example, I want to multiply the PAR in the inventory of a certain day by 2 times during the time period of 12:00-15:00.
M3Tools program m3combo can do general linear combinations of variables. Multiplying a single variable by a constant such as 2 is a special case of that. See https://www.cmascenter.org/ioapi/documentation/all_versions/html/M3COMBO.html
Sorry I don’t know much about this, I tried to use this program, but I don’t know what to write in COMBO_FILES COMBO_VBLES _VBLES _FILES
_COEFS _OFFSET . Can you give me some guidance or hints?
setenv <infile> /data4/sunzhixu/outdata/emis/finn/cn12/GLOB_chem.nc
setenv <outfile> /data4/sunzhixu/outdata/emis/finn/cn12/GLOB_chem_change.nc
setenv COMBO_FILES <Comma-delimited list of logical names for the input files>
setenv COMBO_VBLES <Comma-delimited list of names for the output variables>
setenv COMBO_UNITS PAR
For each output variable <name>,
setenv <name>_VBLES <list of input variable names>
setenv <name>_FILES <matching list of input file names>
setenv <name>_COEFS <matching list of REAL coefficients>
setenv <name>_OFFSET <matching list of REAL constant terms>
m3combo <and respond to the prompts>
Let’s back up a bit: what is it that you really want to do? Your original request was by no means clear…
Do you understand that
PAR = 2.0*PAR
is a special case of the general concept of a linear combination, where n=1
and c1=2.0
:
Y = c1*X1 + c2*X2 + ... + cn*Xn
??
What variables do you want in your output? …for what time period? Do you want to do an in-place substitution? …for only a part of the output time step sequence?
Quite possibly, the right solution would be to look at the m3combo code as a reference example and write your own Fortran for your specific needs.
I want a variable in this file to be multiplied by 2 during a certain period of time ( eg 12:00 to 15:00). Nothing else changes. I understand PAR = PAR *2, and the linear combination. But I don’t know what to write for some variables (like COMBO_FILEs).
You need COMBO_VBLES
to be the comma-list of all the variables in the file, and COMBO_UNITS
to be the matching list of units from FDESC3
. For each of those variables (say FOO), you need
setenv FOO_VBLES FOO
>
setenv FOO_OFFSET 0
You need two runs: one for the duration of the input file, with
setenv FOO_COEFS 1.0
for all the variables FOO, and another run for the time period of 12:00-15:00, similarly but with all coefficients 1.0 except PAR
setenv PAR_COEFS 2.0
The first run will copy all the data from the input file to the output file; the second will specifically replace PAR
by 2.0*PAR
for the specific period you request.