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* vx=NULL;
|
---|
23 | double* vy=NULL;
|
---|
24 | double* vz=NULL;
|
---|
25 |
|
---|
26 | /*recover parameters : */
|
---|
27 | parameters=*pparameters;
|
---|
28 |
|
---|
29 | count=parameters->Size();
|
---|
30 |
|
---|
31 | /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */
|
---|
32 | if (!model->ismacayealpattyn)return;
|
---|
33 |
|
---|
34 | /*Get vx and vy: */
|
---|
35 | ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat");
|
---|
36 | ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat");
|
---|
37 | ModelFetchData((void**)&vz,NULL,NULL,model_handle,"vz","Matrix","Mat");
|
---|
38 |
|
---|
39 | if(vx) for(i=0;i<model->numberofnodes;i++)vx[i]=vx[i]/model->yts;
|
---|
40 | if(vy) for(i=0;i<model->numberofnodes;i++)vy[i]=vy[i]/model->yts;
|
---|
41 | if(vz) for(i=0;i<model->numberofnodes;i++)vz[i]=vz[i]/model->yts;
|
---|
42 |
|
---|
43 | count++;
|
---|
44 | param= new Param(count,"vx",DOUBLEVEC);
|
---|
45 | if(vx) param->SetDoubleVec(vx,model->numberofnodes);
|
---|
46 | else param->SetDoubleVec(vx,0);
|
---|
47 | parameters->AddObject(param);
|
---|
48 |
|
---|
49 | count++;
|
---|
50 | param= new Param(count,"vy",DOUBLEVEC);
|
---|
51 | if(vy) param->SetDoubleVec(vy,model->numberofnodes);
|
---|
52 | else param->SetDoubleVec(vy,0);
|
---|
53 | parameters->AddObject(param);
|
---|
54 |
|
---|
55 | count++;
|
---|
56 | param= new Param(count,"vz",DOUBLEVEC);
|
---|
57 | if(vz) param->SetDoubleVec(vz,model->numberofnodes);
|
---|
58 | else param->SetDoubleVec(vz,0);
|
---|
59 | parameters->AddObject(param);
|
---|
60 |
|
---|
61 | xfree((void**)&vx);
|
---|
62 | xfree((void**)&vy);
|
---|
63 | xfree((void**)&vz);
|
---|
64 |
|
---|
65 | /*Assign output pointer: */
|
---|
66 | *pparameters=parameters;
|
---|
67 | }
|
---|
68 |
|
---|
69 |
|
---|