Changeset 548
- Timestamp:
- 05/21/09 08:19:30 (16 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/ModelProcessorx/Thermal/CreateParametersThermal.cpp
r503 r548 24 24 double* vz=NULL; 25 25 double* pressure=NULL; 26 double* temperature=NULL; 27 double* melting=NULL; 26 28 27 29 /*recover parameters : */ … … 30 32 count=parameters->Size(); 31 33 32 /*Now, is the flag macayaealpattyn on? otherwise, do nothing: */ 33 if (!model->ismacayealpattyn)return; 34 35 /*Get vx and vy: */ 34 /*Get vx vy and vz: */ 36 35 ModelFetchData((void**)&vx,NULL,NULL,model_handle,"vx","Matrix","Mat"); 37 36 ModelFetchData((void**)&vy,NULL,NULL,model_handle,"vy","Matrix","Mat"); … … 76 75 xfree((void**)&pressure); 77 76 77 /* get initial temperature and melting if transient*/ 78 if(strcmp(model->sub_analysis_type,"transient")==0){ 79 80 /*Get melting and temperature: */ 81 ModelFetchData((void**)&melting,NULL,NULL,model_handle,"melting","Matrix","Mat"); 82 if(melting) for(i=0;i<model->numberofnodes;i++)melting[i]=melting[i]/model->yts; //m/s instead of m/yr 83 ModelFetchData((void**)&temperature,NULL,NULL,model_handle,"temperature","Matrix","Mat"); 84 85 count++; 86 param= new Param(count,"melting",DOUBLEVEC); 87 if(melting) param->SetDoubleVec(melting,model->numberofnodes); 88 else param->SetDoubleVec(melting,0); 89 parameters->AddObject(param); 90 91 count++; 92 param= new Param(count,"temperature",DOUBLEVEC); 93 if(temperature) param->SetDoubleVec(temperature,model->numberofnodes); 94 else throw ErrorException(__FUNCT__,exprintf("Missing initial temperature")); 95 parameters->AddObject(param); 96 97 /*Free melting and temperature: */ 98 xfree((void**)&melting); 99 xfree((void**)&temperature); 100 } 78 101 79 102 /*Assign output pointer: */ 80 103 *pparameters=parameters; 81 104 } 82 83 -
issm/trunk/src/c/ProcessParamsx/ProcessParamsx.cpp
r503 r548 24 24 double* vy=NULL; 25 25 double* vz=NULL; 26 27 double* u_g=NULL; 28 29 /*thermal*/ 26 30 double* pressure=NULL; 27 28 double* u_g=NULL; 31 double* temperature=NULL; 32 double* melting=NULL; 33 34 double* p_g=NULL; 35 double* t_g=NULL; 36 double* melting_g=NULL; 29 37 30 38 /*control: */ … … 38 46 39 47 double* u_g_obs=NULL; 40 double* p_g=NULL;41 42 48 43 49 /*diverse: */ 44 50 int numberofnodes; 45 51 int analysis_type; 52 int sub_analysis_type; 46 53 int count; 47 54 48 55 parameters->FindParam((void*)&analysis_type,"analysis_type"); 56 parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type"); 49 57 count=parameters->Size(); 50 58 … … 162 170 param=(Param*)parameters->FindParamObject("pressure"); 163 171 parameters->DeleteObject((Object*)param); 172 173 if(sub_analysis_type==TransientAnalysisEnum()){ 174 175 parameters->FindParam((void*)&temperature,"temperature"); 176 parameters->FindParam((void*)&melting,"melting"); 177 178 /*Now, from temperature and melting, build t_g and melting_g, correctly partitioned: */ 179 t_g=(double*)xcalloc(numberofnodes,sizeof(double)); 180 melting_g=(double*)xcalloc(numberofnodes,sizeof(double)); 181 182 for(i=0;i<numberofnodes;i++){ 183 t_g[(int)(partition[i])]=temperature[i]; 184 melting_g[(int)(partition[i])]=melting[i]; 185 } 186 187 /*Now, create new parameter: */ 188 count++; 189 param= new Param(count,"t_g",DOUBLEVEC); 190 param->SetDoubleVec(t_g,numberofnodes); 191 parameters->AddObject(param); 192 193 count++; 194 param= new Param(count,"melting_g",DOUBLEVEC); 195 param->SetDoubleVec(melting_g,numberofnodes); 196 parameters->AddObject(param); 197 198 /*erase old parameter: */ 199 param=(Param*)parameters->FindParamObject("temperature"); 200 parameters->DeleteObject((Object*)param); 201 202 param=(Param*)parameters->FindParamObject("melting"); 203 parameters->DeleteObject((Object*)param); 204 } 164 205 } 165 206 … … 174 215 xfree((void**)&vy_obs); 175 216 xfree((void**)&pressure); 217 xfree((void**)&temperature); 218 xfree((void**)&melting); 176 219 xfree((void**)&control_parameter); 177 220 xfree((void**)&u_g_obs); 178 221 xfree((void**)&p_g); 222 xfree((void**)&t_g); 223 xfree((void**)&melting_g); 179 224 180 225 }
Note:
See TracChangeset
for help on using the changeset viewer.