source: issm/trunk/src/c/ModelProcessorx/Melting/CreateParametersMelting.cpp@ 2333

Last change on this file since 2333 was 2333, checked in by Eric.Larour, 15 years ago

Big commit: created Numpar, new object to hold solution parameters necessary
in elements. This lead to creating FetchParams and WriteParams, which now writes
a DataSet* parameters to a matlab workspace structure and vice versa. We now always have
a DataSet* parametes inside the x code. Introduced also a new configuration phase for the paramters
dataset. Also, rewrote the io/ using overloaded functions IoModelFetchData, FetchData and WriteData.
Much cleaner and less error prone, as arguments are consistently checked.

File size: 1.4 KB
Line 
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 "../IoModel.h"
14
15void CreateParametersMelting(DataSet** pparameters,IoModel* iomodel,ConstDataHandle iomodel_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 /*if 2d: return*/
28 if (strcmp(iomodel->meshtype,"2d")==0)goto cleanup_and_return;
29
30 count=parameters->Size();
31
32 /* get initial melting if transient*/
33 if(iomodel->dt){
34
35 /*Get melting: */
36 IoModelFetchData(&melting,NULL,NULL,iomodel_handle,"melting");
37 if(melting) {
38 for(i=0;i<iomodel->numberofnodes;i++)melting[i]=melting[i]/iomodel->yts; //m/s instead of m/yr
39 }
40 else{
41 for(i=0;i<iomodel->numberofnodes;i++)melting[i]=0;
42 }
43
44 count++;
45 param= new Param(count,"m_g",DOUBLEVEC);
46 if(melting) param->SetDoubleVec(melting,iomodel->numberofnodes);
47 else param->SetDoubleVec(melting,0);
48 parameters->AddObject(param);
49
50 /*Free melting: */
51 xfree((void**)&melting);
52 }
53
54 cleanup_and_return:
55
56 /*Assign output pointer: */
57 *pparameters=parameters;
58}
Note: See TracBrowser for help on using the repository browser.