1 | /*!\file: CreateParametersMelting.cpp
|
---|
2 | * \brief driver for creating parameters dataset, for diagnostic horiz analysis.
|
---|
3 | */
|
---|
4 |
|
---|
5 | #undef __FUNCT__
|
---|
6 | #define __FUNCT__ "CreateParametersMelting"
|
---|
7 |
|
---|
8 | #include "../../DataSet/DataSet.h"
|
---|
9 | #include "../../toolkits/toolkits.h"
|
---|
10 | #include "../../EnumDefinitions/EnumDefinitions.h"
|
---|
11 | #include "../../objects/objects.h"
|
---|
12 | #include "../../shared/shared.h"
|
---|
13 | #include "../Model.h"
|
---|
14 |
|
---|
15 | void CreateParametersMelting(DataSet** pparameters,Model* model,ConstDataHandle model_handle){
|
---|
16 |
|
---|
17 | Param* param = NULL;
|
---|
18 | DataSet* parameters=NULL;
|
---|
19 | int count;
|
---|
20 | int i;
|
---|
21 |
|
---|
22 | double* melting=NULL;
|
---|
23 |
|
---|
24 | /*recover parameters : */
|
---|
25 | parameters=*pparameters;
|
---|
26 |
|
---|
27 | count=parameters->Size();
|
---|
28 |
|
---|
29 | /* get initial melting if transient*/
|
---|
30 | if(strcmp(model->sub_analysis_type,"transient")==0){
|
---|
31 |
|
---|
32 | /*Get melting: */
|
---|
33 | ModelFetchData((void**)&melting,NULL,NULL,model_handle,"melting","Matrix","Mat");
|
---|
34 | if(melting) {
|
---|
35 | for(i=0;i<model->numberofnodes;i++)melting[i]=melting[i]/model->yts; //m/s instead of m/yr
|
---|
36 | }
|
---|
37 | else{
|
---|
38 | for(i=0;i<model->numberofnodes;i++)melting[i]=0;
|
---|
39 | }
|
---|
40 |
|
---|
41 | count++;
|
---|
42 | param= new Param(count,"m_g",DOUBLEVEC);
|
---|
43 | if(melting) param->SetDoubleVec(melting,model->numberofnodes);
|
---|
44 | else param->SetDoubleVec(melting,0);
|
---|
45 | parameters->AddObject(param);
|
---|
46 |
|
---|
47 | /*Free melting: */
|
---|
48 | xfree((void**)&melting);
|
---|
49 | }
|
---|
50 |
|
---|
51 | /*Assign output pointer: */
|
---|
52 | *pparameters=parameters;
|
---|
53 | }
|
---|