DEFINITION MODULE TallyMonit;
(*******************************************************************
Module TallyMonit (Version 1.0)
Copyright (c) 2006 by Dimitrios Gyalistras and ETH Zurich.
Purpose Procedures for automated monitoring
and filing of ISIS variables and grids.
Remarks Uses modules Grids, Tallies and FileInfos.
Programming
o Design
Dimitrios Gyalistras 30/03/2006
o Implementation
Dimitrios Gyalistras 30/03/2006
ETH Zurich
Systems Ecology
CHN E 35.1
Universitaetstrasse 16
8092 Zurich
SWITZERLAND
URLs:
<mailto:RAMSES@env.ethz.ch>
<http://www.sysecol.ethz.ch>
<http://www.sysecol.ethz.ch/SimSoftware/RAMSES>
Last revision of definition: 21/06/2006 DG & AF
*******************************************************************)
FROM SYSTEM IMPORT ADDRESS;
FROM DMFiles IMPORT TextFile;
IMPORT Errors;
FROM Grids IMPORT GridData;
FROM Tallies IMPORT Tally;
(***********************)
(*##### Types #####*)
(***********************)
CONST
notDone = Errors.onlyAnInsert;
(*
The procedures exported below return errCode = Errors.allOk if the
call to the procedure was succesfull, and resCode = notDone if not.
*)
CONST
tallyMonitIntAttrVal = -9999;
(*
Tally objects declared by this module are marked with the
above integer attribute value. These objects should not
be modified in order to guarantee correct functioning of
this module. To learn about a Tally object's current
integer attribute value use procedure
Tallies.TallyIntAttr.
*)
TYPE
TalliedObject = ADDRESS;
(*****************************************************)
(*##### Procedures for automated monitoring #####*)
(*****************************************************)
PROCEDURE InitSimRuns ( outFilesSetId : ARRAY OF CHAR;
numRuns : INTEGER;
numMonitEventsPerRun : INTEGER;
outFNamesPrfx : ARRAY OF CHAR;
VAR monitoredVarsList : ARRAY OF CHAR;
VAR skippedVarsList : ARRAY OF CHAR;
VAR resCode : INTEGER;
VAR errTxt : ARRAY OF CHAR );
(*
Initializes automated monitoring of multiple simulation runs.
This includes the following actions:
1. Preparation of information on requested output files.
This information is retrieved from the currently loaded
data frames for the output files set named "outFilesSetId".
See also procedure "FileInfos.DeclareFileInfosFromDataFrames".
2. Preparation of all tallies needed to produce ASCII text
(matrix) formatted file output after termination of all
simulation runs (see procedure "TermSimRuns" below).
3. Preparation of all output files needed to produce binary/
lola formatted output during the simulation runs (see
procedure "DoMonitoring" below).
Variable "monitoredVarsList" returns for each output file from the
specified output files set "outFilesSetId" a list of all variables
that are ready to be be monitored when procedure "DoMonitoring"
(see below) is called. Variable "skippedVarsList" returns for each
output file a list of all variables that can not be monitored,
because no corresponding objects (output variables or grids) could
be identified by "InitSimRuns". The identifiers of output files
and variables in the two *VarsList variables are separated by the
special characters "|" and ",", respectively.
(to be continued)
*)
PROCEDURE DoMonitoring( runNr : INTEGER;
simTime : REAL;
monitEventNr : INTEGER );
PROCEDURE TermSimRuns( outFNamesPrfx : ARRAY OF CHAR;
matrixDescr : ARRAY OF CHAR );
(**********************************************************)
(*##### Support of explicit monitoring by client #####*)
(**********************************************************)
TYPE
TallyingP = PROCEDURE ( Tally, (* tally *)
INTEGER, (* i1 = runNr *)
INTEGER, (* i2 = monitEventNr *)
TalliedObject, (* tallied object attribute *)
LONGINT ); (* tallied object attribute *)
PROCEDURE SetTallyingP( varId : ARRAY OF CHAR;
adrAttr : TalliedObject;
liAttr : LONGINT;
tp : TallyingP );
PROCEDURE GetTallyingP( varId : ARRAY OF CHAR;
VAR adrAttr : TalliedObject;
VAR liAttr : LONGINT;
VAR tp : TallyingP );
PROCEDURE GiveUpTallyingP( varId: ARRAY OF CHAR );
TYPE
GridDataMonitP = PROCEDURE ( VAR TextFile, (* outFile *)
GridData, (* gridData *)
INTEGER, (* dataLayerNr *)
LONGINT, (* date *)
LONGINT ); (* time *)
PROCEDURE SetGridDataMonitP( varId : ARRAY OF CHAR;
gdmp : GridDataMonitP );
PROCEDURE GetGridDataMonitP( varId : ARRAY OF CHAR;
VAR gdmp : GridDataMonitP );
PROCEDURE GiveUpGridDataMonitP( varId: ARRAY OF CHAR );
END TallyMonit.