source: issm/trunk/src/c/ModelProcessorx/Control/CreateParametersControl.cpp@ 3725

Last change on this file since 3725 was 3725, checked in by Mathieu Morlighem, 15 years ago

minor

File size: 3.2 KB
Line 
1/*!\file: CreateParametersControl.cpp
2 * \brief driver for creating parameters dataset, for control analysis.
3 */
4
5#include "../../DataSet/DataSet.h"
6#include "../../toolkits/toolkits.h"
7#include "../../io/io.h"
8#include "../../EnumDefinitions/EnumDefinitions.h"
9#include "../../objects/objects.h"
10#include "../../shared/shared.h"
11#include "../../include/macros.h"
12#include "../ModelProcessorx.h"
13
14void CreateParametersControl(Parameters** pparameters,IoModel* iomodel,ConstDataHandle iomodel_handle){
15
16 int i;
17 double* control_parameter=NULL;
18
19 Parameters* parameters=NULL;
20
21 /*Get parameters: */
22 parameters=*pparameters;
23
24 parameters->AddObject(new BoolParam(ControlAnalysisEnum,iomodel->control_analysis));
25 if(iomodel->control_analysis){
26 parameters->AddObject(new StringParam(ControlTypeEnum,iomodel->control_type));
27
28 if (strcmp(iomodel->control_type,"drag")==0)
29 parameters->AddObject(new BoolParam(ExtrudeParamEnum,false));
30 else if (strcmp(iomodel->control_type,"B")==0)
31 parameters->AddObject(new BoolParam(ExtrudeParamEnum,true));
32 else
33 ISSMERROR("control_type %s not supported yet!",iomodel->control_type);
34
35 parameters->AddObject(new BoolParam(ControlSteadyEnum,false));
36 parameters->AddObject(new IntParam(NStepsEnum,iomodel->nsteps));
37 parameters->AddObject(new DoubleParam(TolXEnum,iomodel->tolx));
38 parameters->AddObject(new DoubleParam(EpsCmEnum,iomodel->eps_cm));
39 parameters->AddObject(new DoubleParam(MeanVelEnum,iomodel->meanvel));
40 parameters->AddObject(new DoubleParam(CmNoiseDmpEnum,iomodel->cm_noisedmp));
41 parameters->AddObject(new DoubleParam(CmMinDmpValueEnum,iomodel->cm_mindmp_value));
42 parameters->AddObject(new DoubleParam(CmMinDmpSlopeEnum,iomodel->cm_mindmp_slope));
43 parameters->AddObject(new DoubleParam(CmMaxDmpValueEnum,iomodel->cm_maxdmp_value));
44 parameters->AddObject(new DoubleParam(CmMaxDmpSlopeEnum,iomodel->cm_maxdmp_slope));
45 parameters->AddObject(new DoubleParam(CmMinEnum,iomodel->cm_min));
46 parameters->AddObject(new DoubleParam(CmMaxEnum,iomodel->cm_max));
47 parameters->AddObject(new BoolParam(CmGradientEnum,iomodel->cm_gradient));
48
49 /*Now, recover fit, optscal and maxiter as vectors: */
50 IoModelFetchData(&iomodel->fit,NULL,NULL,iomodel_handle,"fit");
51 IoModelFetchData(&iomodel->cm_jump,NULL,NULL,iomodel_handle,"cm_jump");
52 IoModelFetchData(&iomodel->optscal,NULL,NULL,iomodel_handle,"optscal");
53 IoModelFetchData(&iomodel->maxiter,NULL,NULL,iomodel_handle,"maxiter");
54
55 parameters->AddObject(new DoubleVecParam(FitEnum,iomodel->fit,iomodel->nsteps));
56 parameters->AddObject(new DoubleVecParam(CmJumpEnum,iomodel->cm_jump,iomodel->nsteps));
57 parameters->AddObject(new DoubleVecParam(OptScalEnum,iomodel->optscal,iomodel->nsteps));
58 parameters->AddObject(new DoubleVecParam(MaxIterEnum,iomodel->maxiter,iomodel->nsteps));
59
60 xfree((void**)&iomodel->fit);
61 xfree((void**)&iomodel->cm_jump);
62 xfree((void**)&iomodel->optscal);
63 xfree((void**)&iomodel->maxiter);
64
65 IoModelFetchData(&control_parameter,NULL,NULL,iomodel_handle,iomodel->control_type);
66 parameters->AddObject(new DoubleVecParam(ControlParameterEnum,control_parameter,iomodel->nsteps));
67 xfree((void**)&control_parameter);
68 }
69
70 /*Assign output pointer: */
71 *pparameters=parameters;
72}
Note: See TracBrowser for help on using the repository browser.