Changeset 9376
- Timestamp:
- 08/23/11 09:17:20 (14 years ago)
- Location:
- issm/trunk/src/c/objects
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/objects/Elements/Penta.cpp
r9374 r9376 5184 5184 5185 5185 /*Control Inputs*/ 5186 if (control_analysis && iomodel-> f(ControlTypeEnum)){5186 if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){ 5187 5187 for(i=0;i<num_control_type;i++){ 5188 5188 switch((int)iomodel->f(ControlTypeEnum)[i]){ 5189 5189 case DhdtEnum: 5190 if (iomodel-> f(DhdtEnum)){5190 if (iomodel->IsLoaded(DhdtEnum)){ 5191 5191 for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(DhdtEnum)[penta_vertex_ids[j]-1]/yts; 5192 5192 for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; … … 5196 5196 break; 5197 5197 case VxEnum: 5198 if (iomodel-> f(VxEnum)){5198 if (iomodel->IsLoaded(VxEnum)){ 5199 5199 for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(VxEnum)[penta_vertex_ids[j]-1]/yts; 5200 5200 for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; … … 5204 5204 break; 5205 5205 case VyEnum: 5206 if (iomodel-> f(VyEnum)){5206 if (iomodel->IsLoaded(VyEnum)){ 5207 5207 for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(VyEnum)[penta_vertex_ids[j]-1]/yts; 5208 5208 for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]/yts; … … 5212 5212 break; 5213 5213 case DragCoefficientEnum: 5214 if (iomodel-> f(DragCoefficientEnum)){5214 if (iomodel->IsLoaded(DragCoefficientEnum)){ 5215 5215 for(j=0;j<6;j++)nodeinputs[j]=iomodel->f(DragCoefficientEnum)[penta_vertex_ids[j]-1]; 5216 5216 for(j=0;j<6;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(penta_vertex_ids[j]-1)*num_control_type+i]; … … 5228 5228 5229 5229 //Need to know the type of approximation for this element 5230 if(iomodel-> f(ElementsTypeEnum)){5230 if(iomodel->IsLoaded(ElementsTypeEnum)){ 5231 5231 if (*(iomodel->f(ElementsTypeEnum)+index)==MacAyealApproximationEnum){ 5232 5232 this->inputs->AddInput(new IntInput(ApproximationEnum,MacAyealApproximationEnum)); … … 5259 5259 5260 5260 /*DatasetInputs*/ 5261 if (iomodel-> f(WeightsEnum)) {5261 if (iomodel->IsLoaded(WeightsEnum)) { 5262 5262 5263 5263 /*Create inputs and add to DataSetInput*/ … … 7569 7569 /*default vx,vy and vz: either observation or 0 */ 7570 7570 if(!iomodel->f(VxEnum)){ 7571 if (iomodel-> f(VxObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[penta_vertex_ids[i]-1]/yts;7571 if (iomodel->IsLoaded(VxObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[penta_vertex_ids[i]-1]/yts; 7572 7572 else for(i=0;i<6;i++)nodeinputs[i]=0; 7573 7573 this->inputs->AddInput(new PentaVertexInput(VxEnum,nodeinputs)); … … 7576 7576 } 7577 7577 if(!iomodel->f(VyEnum)){ 7578 if (iomodel-> f(VyObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[penta_vertex_ids[i]-1]/yts;7578 if (iomodel->IsLoaded(VyObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[penta_vertex_ids[i]-1]/yts; 7579 7579 else for(i=0;i<6;i++)nodeinputs[i]=0; 7580 7580 this->inputs->AddInput(new PentaVertexInput(VyEnum,nodeinputs)); … … 7583 7583 } 7584 7584 if(!iomodel->f(VzEnum)){ 7585 if (iomodel-> f(VzObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[penta_vertex_ids[i]-1]/yts;7585 if (iomodel->IsLoaded(VzObsEnum)) for(i=0;i<6;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[penta_vertex_ids[i]-1]/yts; 7586 7586 else for(i=0;i<6;i++)nodeinputs[i]=0; 7587 7587 this->inputs->AddInput(new PentaVertexInput(VzEnum,nodeinputs)); … … 7602 7602 if(*(iomodel->f(ElementsTypeEnum)+index)==PattynStokesApproximationEnum){ 7603 7603 /*Create VzPattyn and VzStokes Enums*/ 7604 if(iomodel-> f(VzEnum) && iomodel->f(NodeOnStokesEnum)){7604 if(iomodel->IsLoaded(VzEnum) && iomodel->IsLoaded(NodeOnStokesEnum)){ 7605 7605 for(i=0;i<6;i++) nodeinputs[i]=iomodel->f(VzEnum)[penta_vertex_ids[i]-1]/yts*iomodel->f(NodeOnStokesEnum)[penta_vertex_ids[i]-1]; 7606 7606 this->inputs->AddInput(new PentaVertexInput(VzStokesEnum,nodeinputs)); … … 7616 7616 if(*(iomodel->f(ElementsTypeEnum)+index)==MacAyealStokesApproximationEnum){ 7617 7617 /*Create VzMacAyeal and VzStokes Enums*/ 7618 if(iomodel-> f(VzEnum) && iomodel->f(NodeOnStokesEnum)){7618 if(iomodel->IsLoaded(VzEnum) && iomodel->IsLoaded(NodeOnStokesEnum)){ 7619 7619 for(i=0;i<6;i++) nodeinputs[i]=iomodel->f(VzEnum)[penta_vertex_ids[i]-1]/yts*iomodel->f(NodeOnStokesEnum)[penta_vertex_ids[i]-1]; 7620 7620 this->inputs->AddInput(new PentaVertexInput(VzStokesEnum,nodeinputs)); … … 7644 7644 this->inputs->AddInput(new PentaVertexInput(VyMeshEnum,nodeinputs)); 7645 7645 this->inputs->AddInput(new PentaVertexInput(VzMeshEnum,nodeinputs)); 7646 if (iomodel-> f(TemperatureEnum) && iomodel->f(WaterfractionEnum)) {7646 if (iomodel->IsLoaded(TemperatureEnum) && iomodel->IsLoaded(WaterfractionEnum)) { 7647 7647 for(i=0;i<6;i++){ 7648 7648 if(iomodel->f(TemperatureEnum)[penta_vertex_ids[i]-1] < meltingpoint-beta*iomodel->f(PressureEnum)[penta_vertex_ids[i]-1]){ -
issm/trunk/src/c/objects/Elements/Tria.cpp
r9374 r9376 3288 3288 3289 3289 /*Control Inputs*/ 3290 if (control_analysis && iomodel-> f(ControlTypeEnum)){3290 if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){ 3291 3291 for(i=0;i<num_control_type;i++){ 3292 3292 switch((int)iomodel->f(ControlTypeEnum)[i]){ 3293 3293 case DhdtEnum: 3294 if (iomodel-> f(DhdtEnum)){3294 if (iomodel->IsLoaded(DhdtEnum)){ 3295 3295 for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(DhdtEnum)[tria_vertex_ids[j]-1]/yts; 3296 3296 for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; … … 3300 3300 break; 3301 3301 case VxEnum: 3302 if (iomodel-> f(VxEnum)){3302 if (iomodel->IsLoaded(VxEnum)){ 3303 3303 for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(VxEnum)[tria_vertex_ids[j]-1]/yts; 3304 3304 for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; … … 3308 3308 break; 3309 3309 case VyEnum: 3310 if (iomodel-> f(VyEnum)){3310 if (iomodel->IsLoaded(VyEnum)){ 3311 3311 for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(VyEnum)[tria_vertex_ids[j]-1]/yts; 3312 3312 for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]/yts; … … 3316 3316 break; 3317 3317 case DragCoefficientEnum: 3318 if (iomodel-> f(DragCoefficientEnum)){3318 if (iomodel->IsLoaded(DragCoefficientEnum)){ 3319 3319 for(j=0;j<3;j++)nodeinputs[j]=iomodel->f(DragCoefficientEnum)[tria_vertex_ids[j]-1]; 3320 3320 for(j=0;j<3;j++)cmmininputs[j]=iomodel->f(CmMinEnum)[(tria_vertex_ids[j]-1)*num_control_type+i]; … … 3332 3332 3333 3333 /*DatasetInputs*/ 3334 if ( iomodel->f(WeightsEnum)) {3334 if (control_analysis) { 3335 3335 3336 3336 /*Create inputs and add to DataSetInput*/ … … 5272 5272 /*default vx,vy and vz: either observation or 0 */ 5273 5273 if(!iomodel->f(VxEnum)){ 5274 if (iomodel-> f(VxObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[tria_vertex_ids[i]-1]/yts;5274 if (iomodel->IsLoaded(VxObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VxObsEnum)[tria_vertex_ids[i]-1]/yts; 5275 5275 else for(i=0;i<3;i++)nodeinputs[i]=0; 5276 5276 this->inputs->AddInput(new TriaVertexInput(VxEnum,nodeinputs)); … … 5279 5279 } 5280 5280 if(!iomodel->f(VyEnum)){ 5281 if (iomodel-> f(VyObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[tria_vertex_ids[i]-1]/yts;5281 if (iomodel->IsLoaded(VyObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VyObsEnum)[tria_vertex_ids[i]-1]/yts; 5282 5282 else for(i=0;i<3;i++)nodeinputs[i]=0; 5283 5283 this->inputs->AddInput(new TriaVertexInput(VyEnum,nodeinputs)); … … 5286 5286 } 5287 5287 if(!iomodel->f(VzEnum)){ 5288 if (iomodel-> f(VzObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[tria_vertex_ids[i]-1]/yts;5288 if (iomodel->IsLoaded(VzObsEnum)) for(i=0;i<3;i++)nodeinputs[i]=iomodel->f(VzObsEnum)[tria_vertex_ids[i]-1]/yts; 5289 5289 else for(i=0;i<3;i++)nodeinputs[i]=0; 5290 5290 this->inputs->AddInput(new TriaVertexInput(VzEnum,nodeinputs)); -
issm/trunk/src/c/objects/IoModel.cpp
r9374 r9376 534 534 535 535 parameter=(DoubleMatParam*)this->data->FindParamObject(dataenum); 536 if (parameter==NULL) _error_("Field of enum %s has not been loaded in iomodel",EnumToStringx(dataenum)); 536 if (parameter==NULL){ 537 /*That might happen: initial velocity might be empty*/ 538 return NULL; 539 } 537 540 return parameter->GetPointer(); 541 } 542 /*}}}*/ 543 /*FUNCTION IoModel::IsLoaded(int dataenum){{{1*/ 544 bool IoModel::IsLoaded(int dataenum){ 545 546 return this->data->Exist(dataenum); 538 547 } 539 548 /*}}}*/ -
issm/trunk/src/c/objects/IoModel.h
r9370 r9376 18 18 private: 19 19 FILE* fid; //pointer to input file 20 Parameters *data; //this dataset holds temporary data, memory intensive. 20 21 21 22 public: 22 23 Parameters *constants; //this dataset holds all double, int, bool and char*parameters read in from the input file.* 23 Parameters *data; //this dataset holds temporary data, memory intensive.24 24 25 25 /*This data needs to stay memory resident at all time, even if it's memory intensive: */ … … 41 41 /*}}}*/ 42 42 /*Input/Output:{{{1*/ 43 bool IsLoaded(int dataenum); 43 44 void FetchData(bool* pboolean,int data_enum); 44 45 void FetchData(int* pinteger,int data_enum); -
issm/trunk/src/c/objects/Materials/Matice.cpp
r9374 r9376 674 674 675 675 /*Get B*/ 676 if (iomodel-> f(RheologyBEnum)) {676 if (iomodel->IsLoaded(RheologyBEnum)) { 677 677 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+i]-1)]; 678 678 this->inputs->AddInput(new TriaVertexInput(RheologyBbarEnum,nodeinputs)); … … 680 680 681 681 /*Get n*/ 682 if (iomodel-> f(RheologyNEnum)) {682 if (iomodel->IsLoaded(RheologyNEnum)) { 683 683 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyNEnum)[index]; 684 684 this->inputs->AddInput(new TriaVertexInput(RheologyNEnum,nodeinputs)); … … 686 686 687 687 /*Control Inputs*/ 688 if (control_analysis && iomodel-> f(ControlTypeEnum)){688 if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){ 689 689 for(i=0;i<num_control_type;i++){ 690 690 switch((int)iomodel->f(ControlTypeEnum)[i]){ 691 691 case RheologyBbarEnum: 692 if (iomodel-> f(RheologyBEnum)){692 if (iomodel->IsLoaded(RheologyBEnum)){ 693 693 _assert_(iomodel->f(RheologyBEnum));_assert_(iomodel->f(CmMinEnum)); _assert_(iomodel->f(CmMaxEnum)); 694 694 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+j]-1)]; … … 713 713 714 714 /*Get B*/ 715 if (iomodel-> f(RheologyBEnum)) {715 if (iomodel->IsLoaded(RheologyBEnum)) { 716 716 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+i]-1)]; 717 717 this->inputs->AddInput(new PentaVertexInput(RheologyBEnum,nodeinputs)); … … 719 719 720 720 /*Get n*/ 721 if (iomodel-> f(RheologyNEnum)) {721 if (iomodel->IsLoaded(RheologyNEnum)) { 722 722 for(i=0;i<num_vertices;i++) nodeinputs[i]=iomodel->f(RheologyNEnum)[index]; 723 723 this->inputs->AddInput(new PentaVertexInput(RheologyNEnum,nodeinputs)); … … 725 725 726 726 /*Control Inputs*/ 727 if (control_analysis && iomodel-> f(ControlTypeEnum)){727 if (control_analysis && iomodel->IsLoaded(ControlTypeEnum)){ 728 728 for(i=0;i<num_control_type;i++){ 729 729 switch((int)iomodel->f(ControlTypeEnum)[i]){ 730 730 case RheologyBbarEnum: 731 if (iomodel-> f(RheologyBEnum)){731 if (iomodel->IsLoaded(RheologyBEnum)){ 732 732 _assert_(iomodel->f(RheologyBEnum));_assert_(iomodel->f(CmMinEnum)); _assert_(iomodel->f(CmMaxEnum)); 733 733 for(j=0;j<num_vertices;j++)nodeinputs[j]=iomodel->f(RheologyBEnum)[int(iomodel->f(ElementsEnum)[num_vertices*index+j]-1)]; -
issm/trunk/src/c/objects/Node.cpp
r9362 r9376 54 54 //intialize inputs, and add as many inputs per element as requested: 55 55 this->inputs=new Inputs(); 56 if (iomodel-> f(NodeOnBedEnum)) this->inputs->AddInput(new BoolInput(NodeOnBedEnum,(IssmBool)iomodel->f(NodeOnBedEnum)[io_index]));57 if (iomodel-> f(NodeOnSurfaceEnum)) this->inputs->AddInput(new BoolInput(NodeOnSurfaceEnum,(IssmBool)iomodel->f(NodeOnSurfaceEnum)[io_index]));58 if (iomodel-> f(NodeOnIceShelfEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceShelfEnum,(IssmBool)iomodel->f(NodeOnIceShelfEnum)[io_index]));59 if (iomodel-> f(NodeOnIceSheetEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceSheetEnum,(IssmBool)iomodel->f(NodeOnIceSheetEnum)[io_index]));56 if (iomodel->IsLoaded(NodeOnBedEnum)) this->inputs->AddInput(new BoolInput(NodeOnBedEnum,(IssmBool)iomodel->f(NodeOnBedEnum)[io_index])); 57 if (iomodel->IsLoaded(NodeOnSurfaceEnum)) this->inputs->AddInput(new BoolInput(NodeOnSurfaceEnum,(IssmBool)iomodel->f(NodeOnSurfaceEnum)[io_index])); 58 if (iomodel->IsLoaded(NodeOnIceShelfEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceShelfEnum,(IssmBool)iomodel->f(NodeOnIceShelfEnum)[io_index])); 59 if (iomodel->IsLoaded(NodeOnIceSheetEnum)) this->inputs->AddInput(new BoolInput(NodeOnIceSheetEnum,(IssmBool)iomodel->f(NodeOnIceSheetEnum)[io_index])); 60 60 if (iomodel->numbernodetoelementconnectivity) this->inputs->AddInput(new IntInput(NumberNodeToElementConnectivityEnum,(IssmInt)iomodel->numbernodetoelementconnectivity[io_index])); 61 61 if (analysis_type==DiagnosticHorizAnalysisEnum) this->inputs->AddInput(new IntInput(ApproximationEnum,(IssmInt)iomodel->f(VerticesTypeEnum)[io_index])); … … 64 64 65 65 /*spc all nodes on water*/ 66 if (!iomodel-> f(NodeOnWaterEnum)) _error_("iomodel->nodeonwater is NULL");66 if (!iomodel->IsLoaded(NodeOnWaterEnum)) _error_("iomodel->nodeonwater is NULL"); 67 67 if (iomodel->f(NodeOnWaterEnum)[io_index]){ 68 68 for(k=1;k<=gsize;k++){ … … 75 75 if (dim==3){ 76 76 /*We have a 3d mesh, we may have collapsed elements, hence dead nodes. Freeze them out: */ 77 if (!iomodel-> f(NodeOnBedEnum)) _error_("iomodel->nodeonbed is NULL");78 if (!iomodel-> f(VerticesTypeEnum)) _error_("iomodel->vertices_type is NULL");77 if (!iomodel->IsLoaded(NodeOnBedEnum)) _error_("iomodel->nodeonbed is NULL"); 78 if (!iomodel->IsLoaded(VerticesTypeEnum)) _error_("iomodel->vertices_type is NULL"); 79 79 if (iomodel->f(VerticesTypeEnum)[io_index]==MacAyealApproximationEnum && !iomodel->f(NodeOnBedEnum)[io_index]){ 80 80 for(k=1;k<=gsize;k++) this->FreezeDof(k); … … 92 92 } 93 93 /*spc all nodes on hutter*/ 94 if (!iomodel-> f(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");94 if (!iomodel->IsLoaded(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL"); 95 95 if (iomodel->f(NodeOnHutterEnum)[io_index]){ 96 96 for(k=1;k<=gsize;k++){ … … 104 104 if (analysis_type==DiagnosticHutterAnalysisEnum){ 105 105 /*Constrain all nodes that are not Hutter*/ 106 if (!iomodel-> f(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL");106 if (!iomodel->IsLoaded(NodeOnHutterEnum)) _error_("iomodel->nodeonhutter is NULL"); 107 107 if (!iomodel->f(NodeOnHutterEnum)[io_index]){ 108 108 for(k=1;k<=gsize;k++){
Note:
See TracChangeset
for help on using the changeset viewer.