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

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

if thermal and 2d, do not throw error, ust return empty datasets

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((void**)&melting,NULL,NULL,iomodel_handle,"melting","Matrix","Mat");
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.