Changeset 1881
- Timestamp:
- 08/25/09 13:04:05 (16 years ago)
- Location:
- issm/trunk/src/c
- Files:
-
- 2 added
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/Makefile.am
r1864 r1881 23 23 ./objects/Model.h\ 24 24 ./objects/Model.cpp\ 25 ./objects/FemModel.h\ 26 ./objects/FemModel.cpp\ 25 27 ./objects/Material.h\ 26 28 ./objects/Material.cpp\ … … 318 320 ./objects/Model.h\ 319 321 ./objects/Model.cpp\ 322 ./objects/FemModel.h\ 323 ./objects/FemModel.cpp\ 320 324 ./objects/Material.h\ 321 325 ./objects/Material.cpp\ -
issm/trunk/src/c/ModelProcessorx/IoModel.h
r1864 r1881 11 11 #include "../toolkits/toolkits.h" 12 12 13 #define RIFTINFOSIZE 1 013 #define RIFTINFOSIZE 11 14 14 15 15 struct IoModel { -
issm/trunk/src/c/Qmux/DakotaResponses.cpp
r1842 r1881 20 20 char* response_descriptor=NULL; 21 21 int numberofnodes; 22 FemModel* fem=NULL;23 22 extern int my_rank; 24 23 25 /*recover first model: */26 fem=model->DiagnosticHorizontal();27 28 24 /*some data needed across the responses: */ 29 found=fem->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 30 if(!found)throw ErrorException(__FUNCT__," could not find numberofnodes in fem model"); 31 25 model->FindParam(&numberofnodes,"numberofnodes"); 32 26 33 27 for(i=0;i<numresponses;i++){ -
issm/trunk/src/c/Qmux/Qmux.cpp
r1840 r1881 76 76 #ifdef _PARALLEL_ 77 77 /*Recover dakota_input_file, dakota_output_file and dakota_error_file, in the parameters dataset in parallel */ 78 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&dakota_input_file,"qmuinname");79 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&dakota_output_file,"qmuoutname");80 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&dakota_error_file,"qmuerrname");78 model->FindParam(&dakota_input_file,"qmuinname"); 79 model->FindParam(&dakota_output_file,"qmuoutname"); 80 model->FindParam(&dakota_error_file,"qmuerrname"); 81 81 #endif 82 82 -
issm/trunk/src/c/Qmux/SpawnCoreParallel.cpp
r1841 r1881 58 58 59 59 /*some parameters needed: */ 60 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&debug,"debug");60 model->FindParam(&debug,"debug"); 61 61 62 62 /*First off, recover the response descriptors for the response functions: */ 63 param=(Param*)model-> DiagnosticHorizontal()->parameters->FindParamObject("responsedescriptors");63 param=(Param*)model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum())->parameters->FindParamObject("responsedescriptors"); 64 64 if(!param)throw ErrorException(__FUNCT__," could not find response descriptors!"); 65 65 … … 67 67 68 68 /*Recover partitioning for dakota: */ 69 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_npart,"qmu_npart");70 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_part,"qmu_part");69 model->FindParam(&qmu_npart,"qmu_npart"); 70 model->FindParam(&qmu_part,"qmu_part"); 71 71 #ifdef _DEBUG_ 72 72 for(i=0;i<numresponses;i++){ … … 116 116 117 117 /*Modify core inputs to reflect the dakota variables inputs: */ 118 inputs->UpdateFromDakota(variables,variables_descriptors,numvariables,model-> DiagnosticHorizontal()->parameters,qmu_part,qmu_npart); //diagnostic horiz model is the one holding the parameters for Dakota.118 inputs->UpdateFromDakota(variables,variables_descriptors,numvariables,model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum())->parameters,qmu_part,qmu_npart); //diagnostic horiz model is the one holding the parameters for Dakota. 119 119 120 120 /*Run the analysis core solution sequence, with the updated inputs: */ -
issm/trunk/src/c/io/io.h
r1844 r1881 8 8 #include "../objects/NodeSets.h" 9 9 #include "../DataSet/DataSet.h" 10 #include "../include/types.h" 10 11 11 /*Define abstract type for I/O: */ 12 #ifdef _SERIAL_ 13 #include <mex.h> 14 typedef const mxArray* ConstDataHandle; //serially, we are reading data from a matlab array. 15 typedef mxArray* DataHandle; 16 #else 17 typedef FILE* ConstDataHandle; //in parallel, we are reading data from a file. 18 typedef FILE* DataHandle; 19 #endif 20 12 class DataSet; 21 13 22 14 void FetchData(void** pdata,int* pM,int* pN,ConstDataHandle data_handle,char* data_type,char* sub_data_type); … … 45 37 /*File I/O: */ 46 38 FILE* pfopen(char* filename,char* format); 47 void *pfclose(FILE* fid,char* filename);39 void pfclose(FILE* fid,char* filename); 48 40 49 41 #endif /* _IMDB_H */ -
issm/trunk/src/c/issm.h
r1844 r1881 16 16 #include "include/macros.h" 17 17 #include "include/globals.h" 18 #include "include/types.h" 18 19 19 20 /*Modules: */ -
issm/trunk/src/c/objects/FemModel.h
r246 r1881 8 8 #include "../toolkits/toolkits.h" 9 9 #include "../DataSet/DataSet.h" 10 #include "../parallel/parallel.h" 10 11 11 12 class DataSet; 13 struct OptArgs; 12 14 13 structFemModel{15 class FemModel{ 14 16 15 DataSet* elements; 16 DataSet* nodes; 17 DataSet* constraints; 18 DataSet* loads; 19 DataSet* materials; 20 DataSet* parameters; 17 friend Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel); 18 friend void diagnostic_core(DataSet* results,Model* model, ParameterInputs* inputs); 19 friend void prognostic_core(DataSet* results,Model* model, ParameterInputs* inputs); 20 friend void control_core(DataSet* results,Model* model, ParameterInputs* inputs); 21 friend void thermal_core(DataSet* results,Model* model, ParameterInputs* inputs); 22 friend void thermal_core_nonlinear(Vec* ptg,double* pmelting_offset,FemModel* fem,ParameterInputs* inputs,int analysis_type,int sub_analysis_type); 23 friend void steadystate_core(DataSet* results,Model* model, ParameterInputs* inputs); 24 friend void diagnostic_core_nonlinear(Vec* pug,Mat* pK_ff0,Mat* pK_fs0, DataSet* loads, FemModel* fem,ParameterInputs* inputs,int analysis_type,int sub_analysis_type); 25 friend void diagnostic_core_linear(Vec* ppg,FemModel* fem,ParameterInputs* inputs,int analysis_type,int sub_analysis_type); 26 friend void transient_core(DataSet* results,Model* model, ParameterInputs* inputs); 27 friend void transient_core_2d(DataSet* results,Model* model, ParameterInputs* inputs); 28 friend void transient_core_3d(DataSet* results,Model* model, ParameterInputs* inputs); 29 friend double objectivefunctionC(double search_scalar,OptArgs* optargs); 30 friend int GradJSearch(double* search_vector,FemModel* femmodel,int step); 31 friend void OutputResults(DataSet* results,char* filename); 32 friend void WriteLockFile(char* filename); 33 friend void ControlInitialization(Model* model, ParameterInputs* inputs); 34 friend void ControlTemporaryResults(Model* model,double* param_g,double* J,int n,ParameterInputs* inputs); 35 friend void CreateFemModel(FemModel* femmodel,ConstDataHandle MODEL,int analysis_type,int sub_analysis_type); 36 friend void ProcessResults(DataSet** presults,Model* model,int analysis_type); 37 friend void SpawnCoreParallel(double* responses, int numresponses, double* variables, char** variables_descriptors,int numvariables, Model* model,ParameterInputs* inputs,int analysis_type,int sub_analysis_type,int counter); 21 38 22 Vec partition; 23 Vec tpartition; 24 Vec yg; 25 Mat Rmg; 26 NodeSets* nodesets; 27 Vec ys; 28 Vec ys0; 29 Mat Gmn; 39 private: 40 DataSet* elements; 41 DataSet* nodes; 42 DataSet* constraints; 43 DataSet* loads; 44 DataSet* materials; 45 DataSet* parameters; 46 47 Vec partition; 48 Vec tpartition; 49 Vec yg; 50 Mat Rmg; 51 NodeSets* nodesets; 52 Vec ys; 53 Vec ys0; 54 Mat Gmn; 55 56 public: 57 58 FemModel(); 59 ~FemModel(); 60 FemModel(DataSet* elements,DataSet* nodes,DataSet* constraints,DataSet* loads,DataSet* materials,DataSet* parameters, 61 Vec partition,Vec tpartition,Vec yg,Mat Rmg,Mat Gmn,NodeSets* nodesets,Vec ys,Vec ys0); 62 63 void Echo(); 64 void DeepEcho(); 65 66 int FindParam(void* pparameter,char* parametername); 67 DataSet* get_elements(void); 68 DataSet* get_nodes(void); 69 DataSet* get_constraints(void); 70 DataSet* get_loads(void); 71 DataSet* get_materials(void); 72 DataSet* get_parameters(void); 73 Vec get_partition(void); 74 Vec get_tpartition(void); 75 Vec get_yg(void); 76 Mat get_Rmg(void); 77 NodeSets* get_nodesets(void); 78 Vec get_ys(void); 79 Vec get_ys0(void); 80 Mat get_Gmn(void); 81 82 30 83 31 84 }; 32 85 86 33 87 #endif -
issm/trunk/src/c/objects/Model.cpp
r1843 r1881 2 2 * \brief: implementation of the Model object 3 3 */ 4 5 #include "./objects.h" 6 #include "../io/io.h" 7 #include "../shared/shared.h" 8 #include "../include/macros.h" 9 #include "../issm.h" 4 10 5 11 #ifdef HAVE_CONFIG_H … … 13 19 14 20 Model::Model(){ 15 return; 21 22 femmodels=new DataSet(0); 23 active=NULL; 24 16 25 } 17 26 18 27 Model::~Model(){ 19 /*none of the FemModels are copied, just pointers -> no dynamic allocation.*/ 20 return; 28 29 delete femmodels; 30 /*do not delete active, it just points to one of the femmodels!*/ 21 31 } 22 32 … … 26 36 void Model::Echo(void){ 27 37 28 printf("Model:\n"); 29 printf(" diagnostichorizontal: %p\n",diagnostichorizontal); 30 printf(" diagnosticvertical: %p\n",diagnosticvertical); 31 printf(" diagnosticstokes: %p\n",diagnosticstokes); 32 printf(" diagnostichutter: %p\n",diagnostichutter); 33 printf(" slope: %p\n",slope); 34 printf(" prognostic: %p\n",prognostic); 35 printf(" thermal: %p\n",thermal); 36 printf(" melting: %p\n",melting); 37 printf(" active: %p\n",active); 38 printf("Models echo: \n"); 39 printf(" number of fem models: %i\n",femmodels->Size()); 38 40 39 41 } … … 43 45 void Model::DeepEcho(void){ 44 46 45 printf("Model:\n"); 46 printf(" diagnostichorizontal: %p\n",diagnostichorizontal); 47 printf(" diagnosticvertical: %p\n",diagnosticvertical); 48 printf(" diagnosticstokes: %p\n",diagnosticstokes); 49 printf(" diagnostichutter: %p\n",diagnostichutter); 50 printf(" slope: %p\n",slope); 51 printf(" prognostic: %p\n",prognostic); 52 printf(" thermal: %p\n",thermal); 53 printf(" melting: %p\n",melting); 54 printf(" active: %p\n",active); 55 56 } 57 58 FemModel* Model::DiagnosticHorizontal(void){ 59 return diagnostichorizontal; 60 } 61 FemModel* Model::DiagnosticVertical(void){ 62 return diagnosticvertical; 63 } 64 FemModel* Model::DiagnosticStokes(void){ 65 return diagnosticstokes; 66 } 67 FemModel* Model::DiagnosticHutter(void){ 68 return diagnostichutter; 69 } 70 FemModel* Model::Slope(void){ 71 return slope; 72 } 73 FemModel* Model::Prognostic(void){ 74 return prognostic; 75 } 76 FemModel* Model::Thermal(void){ 77 return thermal; 78 } 79 FemModel* Model::Melting(void){ 80 return melting; 81 } 82 FemModel* Model::Active(void){ 83 return active; 47 femmodels->Echo(); 48 84 49 } 85 50 86 void Model::SetActive(FemModel* femmodel){ 51 #undef __FUNCT__ 52 #define __FUNCT__ "Model::AddFormulation" 53 void Model::AddFormulation(ConstDataHandle MODEL, int analysis_type,int sub_analysis_type){ 54 55 /*FemModel: */ 56 FemModel* femmodel=NULL; 57 DataSet* elements=NULL; 58 DataSet* nodes=NULL; 59 DataSet* constraints=NULL; 60 DataSet* loads=NULL; 61 DataSet* materials=NULL; 62 DataSet* parameters=NULL; 63 Vec partition=NULL; 64 Vec tpartition=NULL; 65 Vec yg=NULL; 66 Mat Rmg=NULL; 67 Mat Gmn=NULL; 68 NodeSets* nodesets=NULL; 69 Vec ys=NULL; 70 Vec ys0=NULL; 71 72 /*intermediary: */ 73 IoModel* iomodel=NULL; 74 75 _printf_(" fill model with matlab workspace data\n"); 76 IoModelInit(&iomodel,MODEL); 77 78 _printf_(" specifying analysis\n"); 79 if (analysis_type!=0){ 80 iomodel->analysis_type=analysis_type; 81 } 82 if (sub_analysis_type!=0){ 83 iomodel->sub_analysis_type=sub_analysis_type; 84 } 85 86 _printf_(" create datasets:\n"); 87 CreateDataSets(&elements,&nodes,&materials,&constraints,&loads,¶meters,iomodel,MODEL); 88 89 _printf_(" create degrees of freedom: \n"); 90 Dofx( &partition,&tpartition,elements,nodes, parameters); 91 92 _printf_(" create single point constraints: \n"); 93 SpcNodesx( &yg, nodes,constraints); 94 95 _printf_(" create rigid body constraints:\n"); 96 MpcNodesx( &Rmg, nodes,constraints); 97 98 _printf_(" create node sets:\n"); 99 BuildNodeSetsx(&nodesets, nodes); 100 101 _printf_(" reducing single point constraints vector:\n"); 102 Reducevectorgtosx(&ys,&ys0, yg,nodesets); 103 104 _printf_(" normalizing rigid body constraints matrix:\n"); 105 NormalizeConstraintsx(&Gmn, Rmg,nodesets); 106 107 _printf_(" configuring element and loads:\n"); 108 ConfigureObjectsx(elements, loads, nodes, materials); 109 110 _printf_(" process parameters:\n"); 111 ProcessParamsx( parameters, partition); 112 113 _printf_(" free ressources:\n"); 114 DeleteIoModel(&iomodel); 115 116 /*Use all the data created to create an femmodel: */ 117 femmodel=new FemModel(elements,nodes,constraints,loads,materials,parameters, 118 partition,tpartition,yg,Rmg,Gmn,nodesets,ys,ys0); 119 120 /*Add to femmodels in model: */ 121 femmodels->AddObject((Object*)femmodel); 122 123 } 124 125 126 #undef __FUNCT__ 127 #define __FUNCT__ "Model::FindParam" 128 129 int Model::FindParam(int* pparameter,char* parametername){ 130 131 FemModel* femmodel=NULL; 132 133 /*no analysis_type or sub_analysis_type, find the parameter in the first dataset we find: */ 134 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 135 136 /*recover first femmodel: */ 137 femmodel=(FemModel*)femmodels->GetObjectByOffset(0); 138 139 if(!femmodel)return 0; 140 141 femmodel->FindParam((void*)pparameter,parametername); 142 143 } 144 int Model::FindParam(double* pparameter,char* parametername){ 145 146 FemModel* femmodel=NULL; 147 148 /*no analysis_type or sub_analysis_type, find the parameter in the first dataset we find: */ 149 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 150 151 /*recover first femmodel: */ 152 femmodel=(FemModel*)femmodels->GetObjectByOffset(0); 153 154 if(!femmodel)return 0; 155 156 femmodel->FindParam((void*)pparameter,parametername); 157 158 159 } 160 int Model::FindParam(double** pparameter,char* parametername){ 161 162 FemModel* femmodel=NULL; 163 164 /*no analysis_type or sub_analysis_type, find the parameter in the first dataset we find: */ 165 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 166 167 /*recover first femmodel: */ 168 femmodel=(FemModel*)femmodels->GetObjectByOffset(0); 169 170 if(!femmodel)return 0; 171 172 femmodel->FindParam((void*)pparameter,parametername); 173 174 175 } 176 int Model::FindParam(char** pparameter,char* parametername){ 177 178 FemModel* femmodel=NULL; 179 180 /*no analysis_type or sub_analysis_type, find the parameter in the first dataset we find: */ 181 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 182 183 /*recover first femmodel: */ 184 femmodel=(FemModel*)femmodels->GetObjectByOffset(0); 185 186 if(!femmodel)return 0; 187 188 femmodel->FindParam((void*)pparameter,parametername); 189 190 } 191 192 int Model::FindParam(int* pparameter,char* parametername,int analysis_type,int sub_analysis_type){ 193 194 FemModel* femmodel=NULL; 195 196 /*find the correct formulation: */ 197 femmodel=this->GetFormulation(analysis_type,sub_analysis_type); 198 199 if(!femmodel)return 0; 200 201 /*extract our parameter from the found formulation: */ 202 femmodel->FindParam((void*)pparameter,parametername); 203 } 204 205 int Model::FindParam(double* pparameter,char* parametername,int analysis_type,int sub_analysis_type){ 206 207 FemModel* femmodel=NULL; 208 209 /*find the correct formulation: */ 210 femmodel=this->GetFormulation(analysis_type,sub_analysis_type); 211 212 if(!femmodel)return 0; 213 214 /*extract our parameter from the found formulation: */ 215 femmodel->FindParam((void*)pparameter,parametername); 216 } 217 218 219 int Model::FindParam(double** pparameter,char* parametername,int analysis_type,int sub_analysis_type){ 220 221 FemModel* femmodel=NULL; 222 223 /*find the correct formulation: */ 224 femmodel=this->GetFormulation(analysis_type,sub_analysis_type); 225 226 if(!femmodel)return 0; 227 228 /*extract our parameter from the found formulation: */ 229 femmodel->FindParam((void*)pparameter,parametername); 230 } 231 232 int Model::FindParam(char** pparameter,char* parametername,int analysis_type,int sub_analysis_type){ 233 234 FemModel* femmodel=NULL; 235 236 /*find the correct formulation: */ 237 femmodel=this->GetFormulation(analysis_type,sub_analysis_type); 238 239 if(!femmodel)return 0; 240 241 /*extract our parameter from the found formulation: */ 242 femmodel->FindParam((void*)pparameter,parametername); 243 } 244 245 int Model::FindParam(int* pparameter,char* parametername,int analysis_type){ 246 247 FemModel* femmodel=NULL; 248 249 /*find the correct formulation: */ 250 femmodel=this->GetFormulation(analysis_type); 251 252 if(!femmodel)return 0; 253 254 /*extract our parameter from the found formulation: */ 255 femmodel->FindParam((void*)pparameter,parametername); 256 } 257 258 int Model::FindParam(double* pparameter,char* parametername,int analysis_type){ 259 260 FemModel* femmodel=NULL; 261 262 /*find the correct formulation: */ 263 femmodel=this->GetFormulation(analysis_type); 264 265 if(!femmodel)return 0; 266 267 /*extract our parameter from the found formulation: */ 268 femmodel->FindParam((void*)pparameter,parametername); 269 } 270 271 272 int Model::FindParam(double** pparameter,char* parametername,int analysis_type){ 273 274 FemModel* femmodel=NULL; 275 276 /*find the correct formulation: */ 277 femmodel=this->GetFormulation(analysis_type); 278 279 if(!femmodel)return 0; 280 281 /*extract our parameter from the found formulation: */ 282 femmodel->FindParam((void*)pparameter,parametername); 283 } 284 285 int Model::FindParam(char** pparameter,char* parametername,int analysis_type){ 286 287 FemModel* femmodel=NULL; 288 289 /*find the correct formulation: */ 290 femmodel=this->GetFormulation(analysis_type); 291 292 if(!femmodel)return 0; 293 294 /*extract our parameter from the found formulation: */ 295 femmodel->FindParam((void*)pparameter,parametername); 296 } 297 298 #undef __FUNCT__ 299 #define __FUNCT__ "Model::GetFormulation" 300 301 FemModel* Model::GetFormulation(int analysis_type,int sub_analysis_type){ 302 303 int i; 304 FemModel* femmodel=NULL; 305 int femmodel_analysis_type; 306 int femmodel_sub_analysis_type; 307 int found=0; 308 309 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 310 311 /*find femmodel with correct analysis_type and sub_analysis_type: */ 312 for(i=0;i<femmodels->Size();i++){ 313 314 femmodel=(FemModel*)femmodels->GetObjectByOffset(i); 315 femmodel->FindParam((void*)&femmodel_analysis_type,"analysis_type"); 316 femmodel->FindParam((void*)&femmodel_sub_analysis_type,"sub_analysis_type"); 317 318 if((analysis_type==femmodel_analysis_type) && (sub_analysis_type==femmodel_sub_analysis_type)){ 319 found=1; 320 break; 321 } 322 } 323 324 if(!found)return NULL; 325 else return femmodel; 326 } 327 328 #undef __FUNCT__ 329 #define __FUNCT__ "Model::GetFormulation" 330 331 FemModel* Model::GetFormulation(int analysis_type){ 332 333 int i; 334 FemModel* femmodel=NULL; 335 int femmodel_analysis_type; 336 int femmodel_sub_analysis_type; 337 int found=0; 338 339 if (!femmodels->Size())throw ErrorException(__FUNCT__," no fem models were found!"); 340 341 /*find femmodel with correct analysis_type and sub_analysis_type: */ 342 for(i=0;i<femmodels->Size();i++){ 343 344 femmodel=(FemModel*)femmodels->GetObjectByOffset(i); 345 femmodel->FindParam((void*)&femmodel_analysis_type,"analysis_type"); 346 347 if((analysis_type==femmodel_analysis_type)){ 348 found=1; 349 break; 350 } 351 } 352 353 if(!found)return NULL; 354 else return femmodel; 355 } 356 357 358 FemModel* Model::GetActiveFormulation(){return active;} 359 360 361 void* Model::SetActiveFormulation(FemModel* femmodel){ 87 362 active=femmodel; 88 363 } 364 -
issm/trunk/src/c/objects/Model.h
r1843 r1881 6 6 #define _MODEL_H_ 7 7 8 #include "../include/types.h" 9 8 10 struct FemModel; 11 class DataSet; 12 9 13 class Model{ 10 14 11 15 private: 12 16 13 /*femmodels for each formulation:*/ 14 FemModel* diagnostichorizontal; 15 FemModel* diagnosticvertical; 16 FemModel* diagnosticstokes; 17 FemModel* diagnostichutter; 18 FemModel* slope; 19 FemModel* prognostic; 20 FemModel* thermal; 21 FemModel* melting; 17 /*femmodels for each formulation: dynamic, can have as many*/ 18 DataSet* femmodels; 22 19 23 /*active one:*/20 /*active femmodel: points to a FemModel in the femmodels dataset*/ 24 21 FemModel* active; 25 22 … … 31 28 void Echo(); 32 29 void DeepEcho(); 33 FemModel* DiagnosticHorizontal(void); 34 FemModel* DiagnosticVertical(void); 35 FemModel* DiagnosticStokes(void); 36 FemModel* DiagnosticHutter(void); 37 FemModel* Slope(void); 38 FemModel* Prognostic(void); 39 FemModel* Thermal(void); 40 FemModel* Melting(void); 41 FemModel* Active(void); 42 void SetActive(FemModel* femmodel); 30 31 void AddFormulation(ConstDataHandle MODEL, int analysis_type,int sub_analysis_type); 32 33 /*all overloaded forms of the FindParam routine: */ 34 int FindParam(int* pparameter,char* parametername); 35 int FindParam(double* pparameter,char* parametername); 36 int FindParam(double** pparameter,char* parametername); 37 int FindParam(char** pparameter,char* parametername); 38 39 int FindParam(int* pparameter,char* parametername,int analysis_type,int sub_analysis_type); 40 int FindParam(double* pparameter,char* parametername,int analysis_type,int sub_analysis_type); 41 int FindParam(double** pparameter,char* parametername,int analysis_type,int sub_analysis_type); 42 int FindParam(char** pparameter,char* parametername,int analysis_type,int sub_analysis_type); 43 44 int FindParam(int* pparameter,char* parametername,int analysis_type); 45 int FindParam(double* pparameter,char* parametername,int analysis_type); 46 int FindParam(double** pparameter,char* parametername,int analysis_type); 47 int FindParam(char** pparameter,char* parametername,int analysis_type); 48 49 FemModel* GetFormulation(int analysis_type,int sub_analysis_type); 50 FemModel* GetFormulation(int analysis_type); 51 52 FemModel* GetActiveFormulation(); 53 void* SetActiveFormulation(FemModel* femmodel); 43 54 44 55 }; -
issm/trunk/src/c/objects/OptArgs.h
r1843 r1881 24 24 #else 25 25 26 #include "./FemModel.h"27 26 #include "./ParameterInputs.h" 28 27 class ParameterInputs; -
issm/trunk/src/c/objects/Riftfront.cpp
r1843 r1881 268 268 nodesin=(DataSet*)pnodesin; 269 269 materialsin=(DataSet*)pmaterialsin; 270 270 271 271 /*Link this load with its nodes: */ 272 272 ResolvePointers((Object**)nodes,node_ids,node_offsets,MAX_RIFTFRONT_GRIDS,nodesin); -
issm/trunk/src/c/parallel/ControlInitialization.cpp
r1854 r1881 52 52 int dof3[1]={3}; 53 53 54 /*first recover parameters common to all solutions:*/ 55 model->FindParam(&debug,"debug"); 56 model->FindParam(&dim,"dim"); 57 model->FindParam(&ishutter,"ishutter"); 58 model->FindParam(&ismacayealpattyn,"ismacayealpattyn"); 59 model->FindParam(&numberofnodes,"numberofnodes"); 60 model->FindParam(&isstokes,"isstokes"); 61 model->FindParam(&stokesreconditioning,"stokesreconditioning"); 62 54 63 /*recover fem models: */ 55 fem_dh=model->DiagnosticHorizontal(); 56 fem_dv=model->DiagnosticVertical(); 57 fem_ds=model->DiagnosticStokes(); 58 fem_dhu=model->DiagnosticHutter(); 59 fem_sl=model->Slope(); 60 61 //first recover parameters common to all solutions 62 fem_dh->parameters->FindParam((void*)&debug,"debug"); 63 fem_dh->parameters->FindParam((void*)&dim,"dim"); 64 fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter"); 65 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 66 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 67 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes"); 68 fem_ds->parameters->FindParam((void*)&stokesreconditioning,"stokesreconditioning"); 64 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 65 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 66 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 67 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 68 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum()); 69 69 70 70 //specific parameters for specific models 71 fem_dh-> parameters->FindParam((void*)&numberofdofspernode_dh,"numberofdofspernode");72 fem_sl-> parameters->FindParam((void*)&numberofdofspernode_sl,"numberofdofspernode");73 fem_ds-> parameters->FindParam((void*)&numberofdofspernode_ds,"numberofdofspernode");71 fem_dh->FindParam((void*)&numberofdofspernode_dh,"numberofdofspernode"); 72 fem_sl->FindParam((void*)&numberofdofspernode_sl,"numberofdofspernode"); 73 fem_ds->FindParam((void*)&numberofdofspernode_ds,"numberofdofspernode"); 74 74 75 75 /*if no Stokes, assign output and return*/ 76 76 if (!isstokes){ 77 model->SetActive (fem_dh);77 model->SetActiveFormulation(fem_dh); 78 78 return; 79 79 } … … 146 146 147 147 /*Assign output*/ 148 model->SetActive (fem_ds);148 model->SetActiveFormulation(fem_ds); 149 149 } -
issm/trunk/src/c/parallel/ControlTemporaryResults.cpp
r1819 r1881 33 33 34 34 /*recover fem models: */ 35 fem_dh=model-> DiagnosticHorizontal();35 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 36 36 37 37 /*Recover parameters used throughout the solution:*/ 38 fem_dh->parameters->FindParam((void*)&control_type,"control_type");39 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes");40 fem_dh->parameters->FindParam((void*)&outputfilename,"outputfilename");38 model->FindParam(&control_type,"control_type"); 39 model->FindParam(&numberofnodes,"numberofnodes"); 40 model->FindParam(&outputfilename,"outputfilename"); 41 41 gsize=fem_dh->nodes->NumberOfDofs(); 42 42 -
issm/trunk/src/c/parallel/CreateFemModel.cpp
r1822 r1881 31 31 IoModel* model=NULL; 32 32 33 34 33 _printf_(" fill model with matlab workspace data\n"); 35 34 IoModelInit(&model,MODEL); … … 71 70 72 71 _printf_(" free ressources:\n"); 72 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok1\n"); 73 PetscSynchronizedFlush(MPI_COMM_WORLD); 74 73 75 DeleteIoModel(&model); 76 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok2\n"); 77 PetscSynchronizedFlush(MPI_COMM_WORLD); 78 74 79 75 80 /*Assign output pointers:*/ 81 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok2a\n"); 82 PetscSynchronizedFlush(MPI_COMM_WORLD); 76 83 femmodel->elements=elements; 84 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok2b\n"); 85 PetscSynchronizedFlush(MPI_COMM_WORLD); 77 86 femmodel->nodes=nodes; 87 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok2c\n"); 88 PetscSynchronizedFlush(MPI_COMM_WORLD); 78 89 femmodel->constraints=constraints; 79 femmodel->loads=loads; 90 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok3\n"); 91 PetscSynchronizedFlush(MPI_COMM_WORLD); 92 femmodel->loads=loads; 80 93 femmodel->materials=materials; 81 94 femmodel->parameters=parameters; 82 95 femmodel->partition=partition; 83 96 femmodel->tpartition=tpartition; 84 femmodel->yg=yg; 97 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok4\n"); 98 PetscSynchronizedFlush(MPI_COMM_WORLD); 99 femmodel->yg=yg; 85 100 femmodel->Rmg=Rmg; 86 101 femmodel->Gmn=Gmn; 87 102 femmodel->nodesets=nodesets; 88 femmodel->ys=ys; 103 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok5\n"); 104 PetscSynchronizedFlush(MPI_COMM_WORLD); 105 femmodel->ys=ys; 89 106 femmodel->ys0=ys0; 107 PetscSynchronizedPrintf(MPI_COMM_WORLD,"ok6\n"); 108 PetscSynchronizedFlush(MPI_COMM_WORLD); 109 110 90 111 } -
issm/trunk/src/c/parallel/ProcessResults.cpp
r1870 r1881 101 101 /*Initialize new results: */ 102 102 newresults=new DataSet(ResultsEnum()); 103 103 104 /*some flags needed: */ 105 model->FindParam(&dim,"dim"); 106 model->FindParam(&ishutter,"ishutter"); 107 model->FindParam(&isstokes,"isstokes"); 108 model->FindParam(&ismacayealpattyn,"ismacayealpattyn"); 109 104 110 /*Recover femmodels first: */ 105 if(analysis_type==DiagnosticAnalysisEnum()){ 106 fem_dh=model->DiagnosticHorizontal(); 107 fem_dv=model->DiagnosticVertical(); 108 fem_ds=model->DiagnosticStokes(); 109 fem_dhu=model->DiagnosticHutter(); 110 fem_sl=model->Slope(); 111 112 /*some flags needed: */ 113 fem_dh->parameters->FindParam((void*)&dim,"dim"); 114 fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter"); 115 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes"); 116 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 117 } 118 if(analysis_type==SteadystateAnalysisEnum()){ 119 fem_dh=model->DiagnosticHorizontal(); 120 fem_dv=model->DiagnosticVertical(); 121 fem_ds=model->DiagnosticStokes(); 122 fem_dhu=model->DiagnosticHutter(); 123 fem_sl=model->Slope(); 124 fem_t=model->Thermal(); 125 126 /*some flags needed: */ 127 fem_dh->parameters->FindParam((void*)&dim,"dim"); 128 fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter"); 129 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes"); 130 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 131 } 132 133 if(analysis_type==TransientAnalysisEnum()){ 134 fem_dh=model->DiagnosticHorizontal(); 135 fem_dv=model->DiagnosticVertical(); 136 fem_ds=model->DiagnosticStokes(); 137 fem_dhu=model->DiagnosticHutter(); 138 fem_sl=model->Slope(); 139 fem_p=model->Prognostic(); 140 141 /*some flags needed: */ 142 fem_dh->parameters->FindParam((void*)&dim,"dim"); 143 fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter"); 144 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes"); 145 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 146 147 if (dim==3){ 148 fem_t=model->Thermal(); 149 } 150 } 151 152 if(analysis_type==PrognosticAnalysisEnum()){ 153 fem_p=model->Prognostic(); 154 } 155 156 if(analysis_type==ThermalAnalysisEnum()){ 157 fem_t=model->Thermal(); 158 } 159 160 if(analysis_type==ControlAnalysisEnum()){ 161 fem_dh=model->DiagnosticHorizontal(); 162 fem_dv=model->DiagnosticVertical(); 163 fem_ds=model->DiagnosticStokes(); 164 fem_dhu=model->DiagnosticHutter(); 165 fem_sl=model->Slope(); 166 fem_p=model->Prognostic(); 167 fem_c=model->DiagnosticHorizontal(); //load param_g 168 169 /*some flags needed: */ 170 fem_dh->parameters->FindParam((void*)&dim,"dim"); 171 fem_dh->parameters->FindParam((void*)&ishutter,"ishutter"); 172 fem_dh->parameters->FindParam((void*)&isstokes,"isstokes"); 173 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 174 } 111 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 112 fem_c=fem_dh; 113 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 114 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 115 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 116 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum()); 117 fem_p=model->GetFormulation(PrognosticAnalysisEnum()); 118 fem_t=model->GetFormulation(ThermalAnalysisEnum()); 175 119 176 120 for(n=0;n<results->Size();n++){ -
issm/trunk/src/c/parallel/control.cpp
r1824 r1881 41 41 Param* param=NULL; 42 42 int count; 43 DataSet* parameters=NULL; 43 44 44 45 MODULEBOOT(); … … 59 60 lockname=argv[4]; 60 61 62 /*Initialize model structure: */ 63 model=new Model(); 64 61 65 /*Open handle to data on disk: */ 62 66 fid=pfopen(inputfilename,"rb"); … … 66 70 67 71 _printf_("read and create finite element model:\n"); 68 _printf_("\n reading control horiz model data:\n"); 69 CreateFemModel(model->DiagnosticHorizontal(),fid,ControlAnalysisEnum(),HorizAnalysisEnum()); 70 _printf_("\n reading control vert model data:\n"); 71 CreateFemModel(model->DiagnosticVertical(),fid,ControlAnalysisEnum(),VertAnalysisEnum()); 72 _printf_("\n reading control stokes model data:\n"); 73 CreateFemModel(model->DiagnosticStokes(),fid,ControlAnalysisEnum(),StokesAnalysisEnum()); 74 _printf_("\n reading control hutter model data:\n"); 75 CreateFemModel(model->DiagnosticHutter(),fid,ControlAnalysisEnum(),HutterAnalysisEnum()); 72 _printf_("\n reading diagnostic horiz model data:\n"); 73 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 74 75 _printf_("\n reading diagnostic vert model data:\n"); 76 model->AddFormulation(fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 77 78 _printf_("\n reading diagnostic stokes model data:\n"); 79 model->AddFormulation(fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 80 81 _printf_("\n reading diagnostic hutter model data:\n"); 82 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 83 76 84 _printf_("\n reading surface and bed slope computation model data:\n"); 77 CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());85 model->AddFormulation(fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 78 86 79 87 _printf_("initialize inputs:\n"); 80 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&u_g_initial,"u_g");81 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&u_g_obs,"u_g_obs");82 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");88 model->FindParam(&u_g_initial,"u_g",DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 89 model->FindParam(&u_g_obs,"u_g_obs",DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 90 model->FindParam(&numberofnodes,"numberofnodes"); 83 91 84 92 inputs=new ParameterInputs; … … 86 94 inputs->Add("velocity_obs",u_g_obs,2,numberofnodes); 87 95 88 89 /*erase velocities: */90 param=(Param*)model->DiagnosticHorizontal()->parameters->FindParamObject("u_g");91 model->DiagnosticHorizontal()->parameters->DeleteObject((Object*)param);92 93 param=(Param*)model->DiagnosticHorizontal()->parameters->FindParamObject("u_g_obs");94 model->DiagnosticHorizontal()->parameters->DeleteObject((Object*)param);95 96 96 _printf_("initialize results:\n"); 97 97 results=new DataSet(ResultsEnum()); 98 98 99 99 //Add output file name to parameters of femmodels[0] 100 count=model->DiagnosticHorizontal()->parameters->Size()+1; 100 parameters=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum())->get_parameters(); 101 count=parameters->Size()+1; 101 102 param= new Param(count,"outputfilename",STRING); 102 103 param->SetString(outputfilename); 103 model->DiagnosticHorizontal()->parameters->AddObject(param);104 parameters->AddObject(param); 104 105 105 106 /*are we running the solution sequence, or a qmu wrapper around it? : */ 106 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");107 model->FindParam(&qmu_analysis,"qmu_analysis"); 107 108 108 109 if(!qmu_analysis){ … … 128 129 results->AddObject(result); 129 130 130 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&control_type,"control_type");131 model->FindParam(&control_type,"control_type"); 131 132 result=new Result(results->Size()+1,0,1,"control_type",control_type); 132 133 results->AddObject(result); … … 139 140 140 141 _printf_("write lock file:\n"); 141 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");142 model->FindParam(&waitonlock,"waitonlock"); 142 143 if (waitonlock){ 143 144 WriteLockFile(lockname); -
issm/trunk/src/c/parallel/control_core.cpp
r1828 r1881 50 50 /*Process models*/ 51 51 ControlInitialization(model,inputs); 52 fem_model=model-> Active();52 fem_model=model->GetActiveFormulation(); 53 53 54 54 /*Recover parameters used throughout the solution:*/ 55 fem_model->parameters->FindParam((void*)&nsteps,"nsteps");56 fem_model->parameters->FindParam((void*)&control_type,"control_type");57 fem_model->parameters->FindParam((void*)&fit,"fit");58 fem_model->parameters->FindParam((void*)&optscal,"optscal");59 fem_model->parameters->FindParam((void*)&maxiter,"maxiter");60 fem_model->parameters->FindParam((void*)&tolx,"tolx");61 fem_model->parameters->FindParam((void*)&mincontrolconstraint,"mincontrolconstraint");62 fem_model->parameters->FindParam((void*)&maxcontrolconstraint,"maxcontrolconstraint");63 fem_model->parameters->FindParam((void*)¶m_g,"param_g");64 fem_model->parameters->FindParam((void*)&analysis_type,"analysis_type");65 fem_model->parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");66 fem_model->parameters->FindParam((void*)&numberofnodes,"numberofnodes");55 model->FindParam(&nsteps,"nsteps"); 56 model->FindParam(&control_type,"control_type"); 57 model->FindParam(&fit,"fit"); 58 model->FindParam(&optscal,"optscal"); 59 model->FindParam(&maxiter,"maxiter"); 60 model->FindParam(&tolx,"tolx"); 61 model->FindParam(&mincontrolconstraint,"mincontrolconstraint"); 62 model->FindParam(&maxcontrolconstraint,"maxcontrolconstraint"); 63 model->FindParam(¶m_g,"param_g"); 64 model->FindParam(&analysis_type,"analysis_type"); 65 model->FindParam(&sub_analysis_type,"sub_analysis_type"); 66 model->FindParam(&numberofnodes,"numberofnodes"); 67 67 gsize=fem_model->nodes->NumberOfDofs(); 68 68 -
issm/trunk/src/c/parallel/convergence.cpp
r1711 r1881 9 9 #include "../issm.h" 10 10 11 intconvergence(int* pconverged, Mat Kff,Vec pf,Vec uf,Vec old_uf,DataSet* parameters){11 void convergence(int* pconverged, Mat Kff,Vec pf,Vec uf,Vec old_uf,DataSet* parameters){ 12 12 13 13 /*output*/ -
issm/trunk/src/c/parallel/diagnostic.cpp
r1826 r1881 64 64 _printf_("read and create finite element model:\n"); 65 65 _printf_("\n reading diagnostic horiz model data:\n"); 66 CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 66 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 67 67 68 _printf_("\n reading diagnostic vert model data:\n"); 68 CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 69 model->AddFormulation(fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 70 69 71 _printf_("\n reading diagnostic stokes model data:\n"); 70 CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 72 model->AddFormulation(fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 73 71 74 _printf_("\n reading diagnostic hutter model data:\n"); 72 CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 75 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 76 73 77 _printf_("\n reading surface and bed slope computation model data:\n"); 74 CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());78 model->AddFormulation(fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 75 79 76 80 _printf_("initialize inputs:\n"); 77 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&u_g_initial,"u_g");78 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");81 model->FindParam(&u_g_initial,"u_g",DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 82 model->FindParam(&numberofnodes,"numberofnodes"); 79 83 80 84 inputs=new ParameterInputs; 81 85 inputs->Add("velocity",u_g_initial,3,numberofnodes); 82 86 83 /*erase velocities: */84 param=(Param*)model->DiagnosticHorizontal()->parameters->FindParamObject("u_g");85 model->DiagnosticHorizontal()->parameters->DeleteObject((Object*)param);86 87 87 _printf_("initialize results:\n"); 88 88 results=new DataSet(ResultsEnum()); 89 89 90 90 /*are we running the solution sequence, or a qmu wrapper around it? : */ 91 model->DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis"); 91 model->FindParam(&qmu_analysis,"qmu_analysis"); 92 92 93 if(!qmu_analysis){ 93 94 … … 119 120 120 121 _printf_("write lock file:\n"); 121 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");122 model->FindParam(&waitonlock,"waitonlock"); 122 123 if (waitonlock){ 123 124 WriteLockFile(lockname); … … 127 128 PetscFinalize(); 128 129 129 130 130 /*end module: */ 131 131 MODULEEND(); 132 132 133 /*Free ressources */134 xfree((void**)&u_g_initial);135 136 133 return 0; //unix success return; 137 134 } -
issm/trunk/src/c/parallel/diagnostic_core.cpp
r1831 r1881 57 57 int dof3[1]={3}; 58 58 59 /*recover fem models: */60 fem_dh=model->DiagnosticHorizontal();61 fem_dv=model->DiagnosticVertical();62 fem_ds=model->DiagnosticStokes();63 fem_dhu=model->DiagnosticHutter();64 fem_sl=model->Slope();65 59 66 60 //first recover parameters common to all solutions 67 fem_dh->parameters->FindParam((void*)&debug,"debug"); 68 fem_dh->parameters->FindParam((void*)&dim,"dim"); 69 fem_dhu->parameters->FindParam((void*)&ishutter,"ishutter"); 70 fem_dh->parameters->FindParam((void*)&ismacayealpattyn,"ismacayealpattyn"); 71 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 72 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes"); 73 fem_ds->parameters->FindParam((void*)&stokesreconditioning,"stokesreconditioning"); 74 fem_dh->parameters->FindParam((void*)&numrifts,"numrifts"); 61 model->FindParam(&debug,"debug"); 62 model->FindParam(&dim,"dim"); 63 model->FindParam(&ishutter,"ishutter"); 64 model->FindParam(&ismacayealpattyn,"ismacayealpattyn"); 65 model->FindParam(&numberofnodes,"numberofnodes"); 66 model->FindParam(&isstokes,"isstokes"); 67 model->FindParam(&stokesreconditioning,"stokesreconditioning"); 68 model->FindParam(&numrifts,"numrifts"); 69 70 /*recover fem models: */ 71 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 72 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 73 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 74 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 75 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 75 76 76 77 //specific parameters for specific models 77 fem_dh-> parameters->FindParam((void*)&numberofdofspernode_dh,"numberofdofspernode");78 fem_sl-> parameters->FindParam((void*)&numberofdofspernode_sl,"numberofdofspernode");79 fem_ds-> parameters->FindParam((void*)&numberofdofspernode_ds,"numberofdofspernode");78 fem_dh->FindParam((void*)&numberofdofspernode_dh,"numberofdofspernode"); 79 fem_sl->FindParam((void*)&numberofdofspernode_sl,"numberofdofspernode"); 80 fem_ds->FindParam((void*)&numberofdofspernode_ds,"numberofdofspernode"); 80 81 81 82 if(ishutter){ … … 126 127 127 128 if(debug)_printf_("%s\n"," extruding horizontal velocities..."); 128 VecDuplicatePatch(&ug_horiz,ug); FieldExtrudex( ug_horiz,fem_dh->elements,fem_dh->nodes, fem_dh->loads,fem_dh-> 129 VecDuplicatePatch(&ug_horiz,ug); FieldExtrudex( ug_horiz,fem_dh->elements,fem_dh->nodes, fem_dh->loads,fem_dh->materials,"velocity",1); 129 130 130 131 if(debug)_printf_("%s\n"," computing vertical velocities..."); -
issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp
r1813 r1881 42 42 /*Recover parameters: */ 43 43 kflag=1; pflag=1; 44 fem->parameters->FindParam((void*)&connectivity,"connectivity"); 45 fem->parameters->FindParam((void*)&numberofdofspernode,"numberofdofspernode"); 46 fem->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 47 fem->parameters->FindParam((void*)&solver_string,"solverstring"); 44 fem->FindParam((void*)&connectivity,"connectivity"); 45 fem->FindParam((void*)&numberofdofspernode,"numberofdofspernode"); 46 fem->FindParam((void*)&numberofnodes,"numberofnodes"); 47 fem->FindParam((void*)&solver_string,"solverstring"); 48 48 49 49 50 /*Were loads requested as output? : */ -
issm/trunk/src/c/parallel/objectivefunctionC.cpp
r1861 r1881 54 54 /*Recover active model: */ 55 55 model=optargs->model; 56 femmodel=model-> Active();56 femmodel=model->GetActiveFormulation(); 57 57 58 58 /*Recover parameters: */ -
issm/trunk/src/c/parallel/parallel.h
r1861 r1881 8 8 #include "../objects/objects.h" 9 9 #include "../io/io.h" 10 11 struct OptArgs; 12 class ParameterInputs; 13 class FemModel; 10 14 11 15 Vec GradJCompute(ParameterInputs* inputs,FemModel* femmodel); -
issm/trunk/src/c/parallel/prognostic.cpp
r1827 r1881 62 62 lockname=argv[4]; 63 63 64 /*Initialize model structure: */ 65 model=new Model(); 66 64 67 /*Open handle to data on disk: */ 65 68 fid=pfopen(inputfilename,"rb"); … … 69 72 70 73 _printf_("read and create finite element model:\n"); 71 CreateFemModel(model->Prognostic(),fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());74 model->AddFormulation(fid,PrognosticAnalysisEnum(),NoneAnalysisEnum()); 72 75 73 76 //retrieve parameters used to fill inputs 74 model->Prognostic()->parameters->FindParam((void*)&u_g_serial,"u_g"); 75 model->Prognostic()->parameters->FindParam((void*)&h_g_initial,"h_g"); 76 model->Prognostic()->parameters->FindParam((void*)&melting_g,"m_g"); 77 model->Prognostic()->parameters->FindParam((void*)&accumulation_g,"a_g"); 78 model->Prognostic()->parameters->FindParam((void*)&dt,"dt"); 79 model->Prognostic()->parameters->FindParam((void*)&yts,"yts"); 80 model->Prognostic()->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 77 model->FindParam(&u_g_serial,"u_g",PrognosticAnalysisEnum()); 78 model->FindParam(&h_g_initial,"h_g",PrognosticAnalysisEnum()); 79 model->FindParam(&melting_g,"m_g",PrognosticAnalysisEnum()); 80 model->FindParam(&accumulation_g,"a_g",PrognosticAnalysisEnum()); 81 model->FindParam(&dt,"dt"); 82 model->FindParam(&yts,"yts"); 83 model->FindParam(&numberofnodes,"numberofnodes"); 84 model->FindParam(&qmu_analysis,"qmu_analysis"); 85 model->FindParam(&waitonlock,"waitonlock"); 81 86 82 87 _printf_("initialize inputs:\n"); … … 92 97 93 98 /*are we running the solutoin sequence, or a qmu wrapper around it? : */ 94 model->Prognostic()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");95 99 if(!qmu_analysis){ 96 100 … … 123 127 124 128 _printf_("write lock file:\n"); 125 model->Prognostic()->parameters->FindParam((void*)&waitonlock,"waitonlock");126 129 if (waitonlock){ 127 130 WriteLockFile(lockname); -
issm/trunk/src/c/parallel/prognostic_core.cpp
r1811 r1881 37 37 38 38 /*recover fem model: */ 39 fem_p=model-> Prognostic();39 fem_p=model->GetFormulation(PrognosticAnalysisEnum()); 40 40 41 41 //first recover parameters common to all solutions 42 fem_p->parameters->FindParam((void*)&debug,"debug");43 fem_p->parameters->FindParam((void*)&numberofnodes,"numberofnodes");44 fem_p->parameters->FindParam((void*)&numberofdofspernode,"numberofdofspernode");42 model->FindParam(&debug,"debug"); 43 model->FindParam(&numberofnodes,"numberofnodes"); 44 model->FindParam(&numberofdofspernode,"numberofdofspernode"); 45 45 46 46 _printf_("depth averaging velocity...\n"); -
issm/trunk/src/c/parallel/steadystate.cpp
r1870 r1881 58 58 lockname=argv[4]; 59 59 60 /*Initialize model structure: */ 61 model=new Model(); 62 60 63 /*Open handle to data on disk: */ 61 64 fid=pfopen(inputfilename,"rb"); … … 65 68 66 69 _printf_("read and create finite element model:\n"); 70 67 71 _printf_("\n reading diagnostic horiz model data:\n"); 68 CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 72 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 73 69 74 _printf_("\n reading diagnostic vert model data:\n"); 70 CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 75 model->AddFormulation(fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 76 71 77 _printf_("\n reading diagnostic stokes model data:\n"); 72 CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 78 model->AddFormulation(fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 79 73 80 _printf_("\n reading diagnostic hutter model data:\n"); 74 CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 81 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 82 75 83 _printf_("\n reading surface and bed slope computation model data:\n"); 76 CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 84 model->AddFormulation(fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 85 77 86 _printf_("\n read and create thermal finite element model:\n"); 78 CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),SteadyAnalysisEnum());87 model->AddFormulation(fid,ThermalAnalysisEnum(),SteadyAnalysisEnum()); 79 88 _printf_("\n read and create melting finite element model:\n"); 80 CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),SteadyAnalysisEnum());89 model->AddFormulation(fid,MeltingAnalysisEnum(),SteadyAnalysisEnum()); 81 90 82 91 _printf_("initialize inputs:\n"); 83 model->DiagnosticHorizontal()->parameters->FindParam((void*)&u_g_initial,"u_g"); 84 model->DiagnosticHorizontal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 85 model->Thermal()->parameters->FindParam((void*)&dt,"dt"); 86 model->Thermal()->parameters->FindParam((void*)&p_g_initial,"p_g"); 92 93 model->FindParam(&u_g_initial,"u_g",DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 94 model->FindParam(&p_g_initial,"p_g",ThermalAnalysisEnum()); 95 model->FindParam(&dt,"dt"); 96 model->FindParam(&numberofnodes,"numberofnodes"); 97 model->FindParam(&waitonlock,"waitonlock"); 98 model->FindParam(&qmu_analysis,"qmu_analysis"); 99 87 100 88 101 inputs=new ParameterInputs; … … 91 104 inputs->Add("dt",dt); 92 105 93 /*erase velocities: */94 param=(Param*)model->DiagnosticHorizontal()->parameters->FindParamObject("u_g");95 model->DiagnosticHorizontal()->parameters->DeleteObject((Object*)param);96 97 106 _printf_("initialize results:\n"); 98 107 results=new DataSet(ResultsEnum()); 99 108 100 109 /*are we running the solution sequence, or a qmu wrapper around it? : */ 101 model->DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");102 110 if(!qmu_analysis){ 103 111 … … 129 137 130 138 _printf_("write lock file:\n"); 131 model->DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");132 139 if (waitonlock){ 133 140 WriteLockFile(lockname); -
issm/trunk/src/c/parallel/steadystate_core.cpp
r1861 r1881 54 54 55 55 /*recover fem models: */ 56 fem_dh=model->DiagnosticHorizontal(); 57 fem_dv=model->DiagnosticVertical(); 58 fem_ds=model->DiagnosticStokes(); 59 fem_dhu=model->DiagnosticHutter(); 60 fem_sl=model->Slope(); 61 fem_t=model->Thermal(); 62 fem_m=model->Melting(); 56 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 57 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 58 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 59 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 60 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum()); 61 fem_t=model->GetFormulation(ThermalAnalysisEnum()); 62 fem_m=model->GetFormulation(MeltingAnalysisEnum()); 63 63 64 64 65 //first recover parameters common to all solutions 65 fem_dh->parameters->FindParam((void*)&debug,"debug");debug=1;66 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes");67 fem_dh->parameters->FindParam((void*)&eps_rel,"eps_rel");68 fem_ds->parameters->FindParam((void*)&isstokes,"isstokes");66 model->FindParam(&debug,"debug");debug=1; 67 model->FindParam(&numberofnodes,"numberofnodes"); 68 model->FindParam(&eps_rel,"eps_rel"); 69 model->FindParam(&isstokes,"isstokes"); 69 70 70 71 //initialize: -
issm/trunk/src/c/parallel/thermal.cpp
r1830 r1881 61 61 lockname=argv[4]; 62 62 63 /*Initialize model structure: */ 64 model=new Model(); 65 63 66 /*Open handle to data on disk: */ 64 67 fid=pfopen(inputfilename,"rb"); … … 68 71 69 72 _printf_("read and create thermal finite element model:\n"); 70 CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),0);73 model->AddFormulation(fid,ThermalAnalysisEnum(),0); 71 74 _printf_("read and create melting finite element model:\n"); 72 CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),0);75 model->AddFormulation(fid,MeltingAnalysisEnum(),0); 73 76 74 77 _printf_("initialize inputs:\n"); 75 model->Thermal()->parameters->FindParam((void*)&u_g,"u_g"); 76 model->Thermal()->parameters->FindParam((void*)&p_g,"p_g"); 77 model->Thermal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 78 model->Thermal()->parameters->FindParam((void*)&waitonlock,"waitonlock"); 79 model->Thermal()->parameters->FindParam((void*)&dt,"dt"); 80 model->Thermal()->parameters->FindParam((void*)&yts,"yts"); 78 model->FindParam(&u_g,"u_g",ThermalAnalysisEnum(),0); 79 model->FindParam(&p_g,"p_g",ThermalAnalysisEnum(),0); 80 model->FindParam(&numberofnodes,"numberofnodes"); 81 model->FindParam(&waitonlock,"waitonlock"); 82 model->FindParam(&dt,"dt"); 83 model->FindParam(&yts,"yts"); 84 model->FindParam(&qmu_analysis,"qmu_analysis"); 81 85 82 86 inputs=new ParameterInputs; … … 89 93 results=new DataSet(ResultsEnum()); 90 94 91 //erase velocities and pressure embedded in parameters92 param=(Param*)model->Thermal()->parameters->FindParamObject("u_g");93 param=(Param*)model->Thermal()->parameters->FindParamObject("velocity");94 model->Thermal()->parameters->DeleteObject((Object*)param);95 param=(Param*)model->Thermal()->parameters->FindParamObject("p_g");96 model->Thermal()->parameters->DeleteObject((Object*)param);97 param=(Param*)model->Melting()->parameters->FindParamObject("u_g");98 model->Melting()->parameters->DeleteObject((Object*)param);99 param=(Param*)model->Melting()->parameters->FindParamObject("p_g");100 model->Melting()->parameters->DeleteObject((Object*)param);101 102 95 /*are we running the solutoin sequence, or a qmu wrapper around it? : */ 103 model->Thermal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");104 96 if(!qmu_analysis){ 105 97 … … 131 123 132 124 _printf_("write lock file:\n"); 133 model-> Thermal()->parameters->FindParam((void*)&waitonlock,"waitonlock");125 model->FindParam(&waitonlock,"waitonlock"); 134 126 135 127 if (waitonlock){ -
issm/trunk/src/c/parallel/thermal_core.cpp
r1818 r1881 46 46 47 47 /*recover fem models: */ 48 fem_t=model-> Thermal();49 fem_m=model-> Melting();48 fem_t=model->GetFormulation(ThermalAnalysisEnum()); 49 fem_m=model->GetFormulation(MeltingAnalysisEnum()); 50 50 51 51 //first recover parameters common to all solutions 52 fem_t-> parameters->FindParam((void*)&numberofnodes,"numberofnodes");53 fem_t-> parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type");54 fem_t-> parameters->FindParam((void*)&debug,"debug");55 fem_t-> parameters->FindParam((void*)&dt,"dt");56 fem_t-> parameters->FindParam((void*)&ndt,"ndt");52 fem_t->FindParam((void*)&numberofnodes,"numberofnodes"); 53 fem_t->FindParam((void*)&sub_analysis_type,"sub_analysis_type"); 54 fem_t->FindParam((void*)&debug,"debug"); 55 fem_t->FindParam((void*)&dt,"dt"); 56 fem_t->FindParam((void*)&ndt,"ndt"); 57 57 58 58 if(sub_analysis_type==SteadyAnalysisEnum()){ … … 84 84 85 85 //initialize temperature and melting 86 fem_t-> parameters->FindParam((void*)&t_g_serial,"t_g");86 fem_t->FindParam((void*)&t_g_serial,"t_g"); 87 87 t_g[0]=SerialToVec(t_g_serial,numberofnodes); 88 88 xfree((void**)&t_g_serial); 89 fem_m-> parameters->FindParam((void*)&m_g_serial,"m_g");89 fem_m->FindParam((void*)&m_g_serial,"m_g"); 90 90 m_g[0]=SerialToVec(m_g_serial,numberofnodes); 91 91 xfree((void**)&m_g_serial); 92 93 //erase temperature and melting embedded in parameters94 param=(Param*)fem_t->parameters->FindParamObject("t_g");95 fem_t->parameters->DeleteObject((Object*)param);96 param=(Param*)fem_m->parameters->FindParamObject("m_g");97 fem_m->parameters->DeleteObject((Object*)param);98 92 99 93 for(i=0;i<nsteps;i++){ -
issm/trunk/src/c/parallel/transient.cpp
r1820 r1881 62 62 lockname=argv[4]; 63 63 64 /*Initialize model structure: */ 65 model=new Model(); 66 64 67 /*Open handle to data on disk: */ 65 68 fid=pfopen(inputfilename,"rb"); … … 70 73 _printf_("read and create finite element model:\n"); 71 74 _printf_("\n reading diagnostic horiz model data:\n"); 72 CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 75 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 76 73 77 _printf_("\n reading diagnostic vert model data:\n"); 74 CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 78 model->AddFormulation(fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 79 75 80 _printf_("\n reading diagnostic stokes model data:\n"); 76 CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 81 model->AddFormulation(fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 82 77 83 _printf_("\n reading diagnostic hutter model data:\n"); 78 CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 84 model->AddFormulation(fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 85 79 86 _printf_("\n reading surface and bed slope computation model data:\n"); 80 CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 87 model->AddFormulation(fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 88 81 89 _printf_("\n reading prognositc model data:\n"); 82 CreateFemModel(model->Prognostic(),fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());90 model->AddFormulation(fid,PrognosticAnalysisEnum(),NoneAnalysisEnum()); 83 91 84 92 /*Do we run in 3d?, in which case we need thermal and melting also:*/ 85 model-> DiagnosticHorizontal()->parameters->FindParam((void*)&dim,"dim");93 model->FindParam(&dim,"dim"); 86 94 if(dim==3){ 87 95 _printf_("read and create thermal finite element model:\n"); 88 CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),TransientAnalysisEnum());96 model->AddFormulation(fid,ThermalAnalysisEnum(),TransientAnalysisEnum()); 89 97 _printf_("read and create melting finite element model:\n"); 90 CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),TransientAnalysisEnum());98 model->AddFormulation(fid,MeltingAnalysisEnum(),TransientAnalysisEnum()); 91 99 } 92 100 93 101 _printf_("initialize inputs:\n"); 102 103 model->FindParam(&u_g,"u_g",ThermalAnalysisEnum()); 104 model->FindParam(&m_g,"m_g",ThermalAnalysisEnum()); 105 model->FindParam(&a_g,"a_g",ThermalAnalysisEnum()); 106 model->FindParam(&numberofnodes,"numberofnodes"); 107 model->FindParam(&dt,"dt"); 108 model->FindParam(&yts,"yts"); 109 model->FindParam(&waitonlock,"waitonlock"); 110 model->FindParam(&qmu_analysis,"qmu_analysis"); 111 112 94 113 inputs=new ParameterInputs; 95 model->Thermal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");96 97 model->Thermal()->parameters->FindParam((void*)&u_g,"u_g");98 114 inputs->Add("velocity",u_g,3,numberofnodes); 99 100 model->Thermal()->parameters->FindParam((void*)&m_g,"m_g");101 115 inputs->Add("melting",m_g,1,numberofnodes); 102 103 model->Thermal()->parameters->FindParam((void*)&a_g,"a_g");104 116 inputs->Add("accumulation",a_g,1,numberofnodes); 105 106 model->Thermal()->parameters->FindParam((void*)&dt,"dt");107 model->Thermal()->parameters->FindParam((void*)&yts,"yts");108 117 inputs->Add("dt",dt*yts); 109 118 … … 112 121 113 122 /*are we running the solution sequence, or a qmu wrapper around it? : */ 114 model->Thermal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");115 123 if(!qmu_analysis){ 116 124 … … 141 149 142 150 _printf_("write lock file:\n"); 143 model->DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");144 151 if (waitonlock){ 145 152 WriteLockFile(lockname); -
issm/trunk/src/c/parallel/transient_core.cpp
r1823 r1881 17 17 extern int my_rank; 18 18 19 /*fem models: */20 FemModel* fem_p=NULL;21 22 19 int dim=-1; 23 20 24 fem_p=model->Prognostic();25 26 21 //first recover parameters common to all solutions 27 fem_p->parameters->FindParam((void*)&dim,"dim");22 model->FindParam(&dim,"dim"); 28 23 29 24 //branch out -
issm/trunk/src/c/parallel/transient_core_2d.cpp
r1817 r1881 64 64 65 65 /*recover fem models: */ 66 fem_dh=model-> DiagnosticHorizontal();67 fem_dv=model-> DiagnosticVertical();68 fem_ds=model-> DiagnosticStokes();69 fem_dhu=model-> DiagnosticHutter();70 fem_sl=model-> Slope();71 fem_p=model-> Prognostic();66 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 67 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 68 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 69 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 70 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum()); 71 fem_p=model->GetFormulation(PrognosticAnalysisEnum()); 72 72 73 73 74 74 //first recover parameters common to all solutions 75 fem_dh->parameters->FindParam((void*)&debug,"debug");76 fem_dh->parameters->FindParam((void*)&finaltime,"ndt");77 fem_dh->parameters->FindParam((void*)&dt,"dt");78 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes");75 model->FindParam(&debug,"debug"); 76 model->FindParam(&finaltime,"ndt"); 77 model->FindParam(&dt,"dt"); 78 model->FindParam(&numberofnodes,"numberofnodes"); 79 79 80 80 /*initialize: */ -
issm/trunk/src/c/parallel/transient_core_3d.cpp
r1817 r1881 70 70 71 71 /*recover fem models: */ 72 fem_dh=model-> DiagnosticHorizontal();73 fem_dv=model-> DiagnosticVertical();74 fem_ds=model-> DiagnosticStokes();75 fem_dhu=model-> DiagnosticHutter();76 fem_sl=model-> Slope();77 fem_p=model-> Prognostic();78 fem_t=model-> Thermal();79 fem_m=model-> Melting();72 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 73 fem_dv=model->GetFormulation(DiagnosticAnalysisEnum(),VertAnalysisEnum()); 74 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 75 fem_dhu=model->GetFormulation(DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 76 fem_sl=model->GetFormulation(SlopeComputeAnalysisEnum()); 77 fem_p=model->GetFormulation(PrognosticAnalysisEnum()); 78 fem_t=model->GetFormulation(ThermalAnalysisEnum()); 79 fem_m=model->GetFormulation(MeltingAnalysisEnum()); 80 80 81 81 82 82 //first recover parameters common to all solutions 83 fem_dh->parameters->FindParam((void*)&debug,"debug");84 fem_dh->parameters->FindParam((void*)&finaltime,"ndt");85 fem_dh->parameters->FindParam((void*)&dt,"dt");86 fem_dh->parameters->FindParam((void*)&numberofnodes,"numberofnodes");83 model->FindParam(&debug,"debug"); 84 model->FindParam(&finaltime,"ndt"); 85 model->FindParam(&dt,"dt"); 86 model->FindParam(&numberofnodes,"numberofnodes"); 87 87 88 88 /*initialize: */
Note:
See TracChangeset
for help on using the changeset viewer.