[ < ] | [ > ] | [Contents] | [Index] | [ ? ] |
When the model code is a subroutine, it can be called from another fortran program unit (or another program), and the model will be run each time the subroutine is called. This technique could be used, for example to perform optimization (see Adjoint model and optimisation with Miniker), or to run the model with different parameters.
[ < ] | [ > ] | [Contents] | [Index] | [ ? ] |
With cmz, one has to do a
sel monitor |
in the ‘selseq.kumac’ file and create the KEEP that call the model code. See Overview of additional features setting.
With make ‘monitor’ should be added to the SEL
variable in
the ‘Makefile’, for example:
SEL = monitor |
A file that call the principal subroutine should also be written, using
the prefered language of the user. The additional object files should
then be linked with the Miniker objects. To that aim they may be added
to the miniker_user_objects
variable.
[ < ] | [ > ] | [Contents] | [Index] | [ ? ] |
The model subroutine is called ‘principal’ and is called with the following arguments:
Where Cost is a real number, real
or double precision
,
and is set by the principal
subroutine. It holds the value of the cost function if such function has been
defined (the use and setting of a cost function is covered later,
see Cost function coding and adjoint modeling).
ncall is an integer which corresponds with the number of
call to principal
done so far, it should be initialized to 0 and
its value should not be changed, as it is changed in the principal
subroutine.
integer_flag is an integer that can be set by the user to be accessed
in the principal
subroutine. For example its value could be used to
set some flags in the ‘zinit’ sequence.
file_suffix is a character string, that is suffixed to the output files
names instead of ‘.data’. If the first character is the null character
‘char(0)’, the default suffix, ‘.data’ is appended.
info and idxerror are integer used for error reporting.
idxerror value is 0 if there was no error. It is negative for
an alert, positive for a very serious error. The precise value determines
where the error occured.
info is an integer holding more precise information about the
error. It is usually the information value from lapack.
The precise meaning of these error codes is in tab:error_codes.
Source of error or warning | info | idxerror |
---|---|---|
state matrix inversion in ker | inversion | 1 |
time advance system resolution in ker | system | 2 |
transfer propagator, (I - D) inversion | inversion | 3 |
kalman analysis state matrix advance in phase space, (I - D) inversion | inversion | 21 |
kalman analysis variance covariance matrix non positive | Choleski | 22 |
kalman analysis error matrix inversion | inversion | 23 |
kalman error matrix advance | system | 24 |
transfers determination linearity problem for transfers | -1 | |
transerts determination Newton D_loop does not converge | -2 |
table 3.1: Meaning of error codes returned by principal.
In general more information than the provided arguments has to be passed
to the principal
subroutine, in that case a common
block,
to be written in the ‘zinit’ sequence can be used.
[Contents] | [Index] | [ ? ] |
This document was generated by a tester on a sunny day using texi2html.