Ecological Landscape Modeling: Models Pages

multi_run.h File Reference

Header file for multiple simulation runs per program execution. More...

#include "globals.h"

Include dependency graph for multi_run.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

int numRuns (int SParmNum, int NumSRunsPerSet)
 Determine the number of simulation runs per program execution.
int SensiParm_list (char *sparm_name)
 Get the parameter list for a multi-parameter sensitivity analysis.
void alloc_mem_runs (int SParmNum)
 Allocate memory for data structs used in multiple-run sensitivity analyses.

Variables

ProgAttrProgExec
ProgAttr ** RunList
char * ModelPath
char * ProjName


Detailed Description

Header file for multiple simulation runs per program execution.

This defines or declares variables & functions that are global to MultiRun.c.

Note: documented with Doxygen, which expects specific syntax within special comments.

The Everglades Landscape Model (ELM).
last updated: Feb 2005

Definition in file multi_run.h.


Function Documentation

int numRuns ( int  SParmNum,
int  NumSRunsPerSet 
)

Determine the number of simulation runs per program execution.

Parameters:
SParmNum the number of parameters to be evaluated in a sensitivity analysis
NumSRunsPerSet The number of simulation runs per set of parameter-evaluations (currently using one low-parameter, one high-parameter value)
Returns:
numberRuns The number of simulation runs per program execution

Definition at line 32 of file MultiRun.c.

Referenced by main().

00033 {
00034    int numberRuns;
00035       
00036    numberRuns = (1+NumSRunsPerSet*SParmNum);
00037         
00038    return numberRuns;
00039 }

int SensiParm_list ( char *  sparm_name  ) 

Get the parameter list for a multi-parameter sensitivity analysis.

This does not check to ensure that a parameter in the list is actually a parameter found in the model. If there is a typo in a parameter in this input list, the program will merely make a set of runs with all-nominal values of the intended parameter. Therefore: use the list of parameters that is generated from the GlobalParms.xls and HabParms_defs.xls (OpenOffice) workbooks. Yes, we can/will provide some checking at some point.

Parameters:
sparm_name Name of the sensitivity parameter being varied for this run
Returns:
SParmNum the number of parameters to be evaluated in a sensitivity analysis

Definition at line 55 of file MultiRun.c.

References modelFileName, ModelPath, msgStr, ProgExec, ProjName, RunList, prog_attr::S_ParmName, prog_attr::S_ParmRelVal, usrErr(), and WriteMsg().

Referenced by main().

00056 {
00057    FILE *SParm_listFile;
00058    char filename[20];
00059    char modelFileName[300];
00060    char ss[422], *line;
00061    int SParmNum = 0;
00062    
00063    if (strcmp(sparm_name,"ALL")!=0) return(1) ;
00064    
00065    sprintf(filename,"SensiParm_list"); 
00066    sprintf( modelFileName, "%s/%s/Data/%s", ModelPath, ProjName, filename );
00067 
00068 /* Open file with list of parameters for Sensitivity Analysis */
00069  if ( ( SParm_listFile = fopen( modelFileName, "r" ) ) ==  NULL )
00070  {
00071      printf( "Can't open %s file!\n", modelFileName ) ;
00072      exit(-1) ;
00073  }
00074 
00075     sprintf(msgStr, "Sensitivity Analysis Parameters: ") ;
00076     WriteMsg(msgStr,1); 
00077     usrErr(msgStr);
00078    
00079     fgets( ss, 420, SParm_listFile );
00080     fgets( ss, 420, SParm_listFile ); 
00081     fgets( ss, 420, SParm_listFile ); /* skip header lines */
00082    
00083     while ( fgets( ss, 420, SParm_listFile ) != NULL && !feof( SParm_listFile ) )
00084     {
00085                 /* Allocate memory  for next parm set (initially, we have already gotten the info for the nominal run into the struct w/ SParmNum = 0) */
00086     if ( (ProgExec = ( ProgAttr *) malloc( (size_t) sizeof( ProgAttr ))) == NULL ) {
00087         sprintf(msgStr, "Failed to allocate memory for next struct defining multiple simulation runs.\n ") ;
00088         usrErr(msgStr);
00089         exit( -2 ) ;
00090     }
00091         line = ss;
00092         sscanf (line, "%s", &ProgExec->S_ParmName);
00093 
00094         SParmNum++; /* count the number of parms to be evaluated in sensi */
00095         RunList[SParmNum] = ProgExec;
00096         ProgExec->S_ParmRelVal = 0; /* init to 0 for all */
00097         
00098         sprintf(msgStr, "%d: %s", SParmNum, ProgExec->S_ParmName) ;
00099         WriteMsg(msgStr,1); 
00100         usrErr(msgStr);
00101     
00102 
00103      
00104     } /* end of reading basin lines */
00105     
00106     fclose(SParm_listFile);
00107     return (SParmNum);
00108 
00109 }

Here is the call graph for this function:

void alloc_mem_runs ( int  SParmNum  ) 

Allocate memory for data structs used in multiple-run sensitivity analyses.

Parameters:
SParmNum the number of parameters to be evaluated in a sensitivity analysis

Definition at line 116 of file MultiRun.c.

References msgStr, ProgExec, RunList, and usrErr().

Referenced by get_parmf().

00117 {
00118     if ( (ProgExec = ( ProgAttr *) malloc( (size_t) sizeof( ProgAttr ))) == NULL ) {
00119         sprintf(msgStr, "Failed to allocate memory for first struct defining (possibly multiple) simulation run(s).\n ") ;
00120         usrErr(msgStr);
00121         exit( -2 ) ;
00122     }
00123         /* allocate memory for array of pointers to simulation run attributes */
00124     if ( (RunList = ( ProgAttr **) malloc( (size_t) sizeof( ProgAttr *) * (SParmNum+1) ) ) == NULL )
00125     {
00126         printf( "Failed to allocate memory for RunList of simulation attributes \n " ); 
00127         exit( -2 );
00128     }
00129 
00130 
00131 }

Here is the call graph for this function:


Variable Documentation

Definition at line 87 of file generic_driver.h.

Referenced by alloc_mem_runs(), get_parmf(), main(), and SensiParm_list().

char* ModelPath

Environment variables used in model

ModelPath environment variable, base pathname for executable and input data
ProjName environment variable, the name of the model project
DriverPath environment variable, base pathname for source code
OS_TYPE environment variable, the type of operating system being used (informational purpose only, not used in code)

Definition at line 40 of file driver_utilities.h.

char * ProjName

Definition at line 40 of file driver_utilities.h.


Generated on Sat Jan 7 14:04:35 2012 for ELM source code by  doxygen 1.5.6