Tech:ETP

ETP Solver - Equivalent Thermal Parameters solver

Synopsis
glsolver("etp") throw(const char*);

Description
The data structure for the ETP solver is as follows:

struct etp { double t; // the time solution to the ETP equation double a; // the a parameter double n; // the n parameter double b; // the b parameter double m; // the m parameter double c; // the c parameter double p; // the precision of the solution double *e; // the pointer to the error estimate };

To use the ETP solver in a module, you must define the macro USE_GLSOLVERS in each source file that will makes solver call, including the init.cpp file (which loads and initializes the solver):


 * 1) define USE_GLSOLVERS
 * 2) include "gridlabd.h"

When the module is initialized, you must load the ETP solver (which will automatically initialize it).

glsolver *etp_solver; EXPORT CLASS *init(CALLBACKS *fntable, MODULE *module, int argc, char *argv[]) {  if ( set_callback(fntable)==NULL ) return NULL; etp_solver = new glsolver("etp"); // ...  return first_class; }

To set/get parameters for the ETP solver, use the set/get calls:

int iteration_limit; if ( etp_solver->get("max_iterations",&iteration_limit,NULL)==0 ) gl_error("unable to get iteration limit"); if ( etp_solver->set("max_iterations",iteration_limit,NULL)==0 ) gl_error("unable to set iteration limit");

To call the ETP solver, you must construct the ETP data structure required by the solver. For example:

struct { double t,a,n,b,m,c,p,*e; } etp = {0,0.1,-0.1,0.2,-0.2,0.3,1e-6,NULL}; if ( etp_solver->solve((void*)&etp)==0 || isnan(t) ) gl_error("no solution found");

max_iterations

 * Use this set/get parameter to control the maximum number of iterations used by the solver.

Version
The general solvers library was introduced in.