Changeset 15375
- Timestamp:
- 07/01/13 14:16:46 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/thermal_core.cpp
r15104 r15375 15 15 bool save_results; 16 16 bool dakota_analysis = false; 17 int solution_type; 17 18 18 19 //first recover parameters common to all solutions 19 20 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 20 21 femmodel->parameters->FindParam(&dakota_analysis,QmuIsdakotaEnum); 22 femmodel->parameters->FindParam(&solution_type,SolutionTypeEnum); 21 23 22 if(dakota_analysis ){24 if(dakota_analysis && solution_type!=TransientSolutionEnum){ 23 25 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 24 26 ResetConstraintsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); -
issm/trunk-jpl/src/c/analyses/transient_core.cpp
r15104 r15375 66 66 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuSurfaceEnum,SurfaceEnum); 67 67 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuBedEnum,BedEnum); 68 if(dim==2)InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBbarEnum); 68 69 if(isthermal && dim==3){ 70 //Update Vertex Position after updating Thickness and Bed 71 femmodel->SetCurrentConfiguration(PrognosticAnalysisEnum); 72 femmodel->UpdateVertexPositionsx(); 73 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVxMeshEnum,VxMeshEnum); 74 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVyMeshEnum,VyMeshEnum); 75 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuVzMeshEnum,VzMeshEnum); 69 76 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuTemperatureEnum,TemperatureEnum); 70 77 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMeltingEnum,BasalforcingsMeltingRateEnum); 78 InputDuplicatex(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,QmuMaterialsRheologyBEnum,MaterialsRheologyBEnum); 79 //Reset Thermal Constraints 80 femmodel->SetCurrentConfiguration(ThermalAnalysisEnum); 81 ResetConstraintsx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 71 82 } 72 83 } … … 152 163 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsMonthlytemperaturesEnum); 153 164 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,SurfaceforcingsPrecipitationEnum); 154 165 InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,BasalFrictionEnum); 155 166 } 156 167 if(isgroundingline && (groundingline_migration==SubelementMigrationEnum || groundingline_migration==SubelementMigration2Enum)){ -
issm/trunk-jpl/src/c/classes/Elements/Elements.cpp
r15128 r15375 323 323 } 324 324 /*}}}*/ 325 /*FUNCTION Elements::Input Copy{{{*/325 /*FUNCTION Elements::InputDuplicate{{{*/ 326 326 void Elements::InputDuplicate(int input_enum,int output_enum){ 327 327 -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r15372 r15375 2142 2142 name==QmuVyEnum || 2143 2143 name==QmuVzEnum || 2144 name==QmuVxMeshEnum || 2145 name==QmuVyMeshEnum || 2146 name==QmuVzMeshEnum || 2144 2147 name==QmuPressureEnum || 2145 2148 name==QmuBedEnum || … … 3117 3120 this->inputs->AddInput(new PentaP1Input(VyMeshEnum,nodeinputs)); 3118 3121 this->inputs->AddInput(new PentaP1Input(VzMeshEnum,nodeinputs)); 3122 if(dakota_analysis){ 3123 this->inputs->AddInput(new PentaP1Input(QmuVxMeshEnum,nodeinputs)); 3124 this->inputs->AddInput(new PentaP1Input(QmuVyMeshEnum,nodeinputs)); 3125 this->inputs->AddInput(new PentaP1Input(QmuVzMeshEnum,nodeinputs)); 3126 } 3119 3127 break; 3120 3128 -
issm/trunk-jpl/src/c/classes/Materials/Materials.cpp
r15012 r15375 47 47 } 48 48 /*}}}*/ 49 /*FUNCTION Materials::InputDuplicate{{{*/ 50 void Materials::InputDuplicate(int input_enum,int output_enum){ 51 52 for(int i=0;i<this->Size();i++){ 53 Material* material=(Material*)this->GetObjectByOffset(i); 54 material->InputDuplicate(input_enum,output_enum); 55 } 56 } -
issm/trunk-jpl/src/c/classes/Materials/Materials.h
r15067 r15375 24 24 /*numerics*/ 25 25 void Configure(Elements* elements,Loads* loads, Nodes* nodes, Vertices* vertices, Materials* materials,Parameters* parameters); 26 void InputDuplicate(int input_enum,int output_enum); 26 27 27 28 }; -
issm/trunk-jpl/src/c/classes/Materials/Matice.cpp
r15300 r15375 567 567 return; 568 568 } 569 case PentaEnum: { 570 IssmDouble valuesp[6]; 571 for (int i=0;i<6;i++) valuesp[i]=vector[((Penta*)element)->vertices[i]->Sid()]; //use sid list, to index into serial oriented vector 572 this->inputs->AddInput(new PentaP1Input(name,valuesp)); 573 return; 574 } 569 575 default: _error_("element " << EnumToStringx(element->ObjectEnum()) << " not implemented yet"); 570 576 } … … 618 624 parameters->FindParam(&dim,MeshDimensionEnum); 619 625 if(dim==2){ 620 /*Dupli acte rheology input: */626 /*Duplicate rheology input: */ 621 627 this->inputs->AddInput(new TriaInput(MaterialsRheologyBbarEnum,values,P1Enum)); 622 628 } … … 782 788 name==MaterialsRheologyBEnum || 783 789 name==MaterialsRheologyBbarEnum || 784 name==MaterialsRheologyNEnum 790 name==MaterialsRheologyNEnum || 791 name==QmuMaterialsRheologyBEnum 785 792 ){ 786 793 return true; -
issm/trunk-jpl/src/c/classes/Materials/Matpar.cpp
r15128 r15375 242 242 243 243 /*Matpar management: */ 244 /*FUNCTION Matpar::InputDuplicate{{{*/ 245 void Matpar::InputDuplicate(int original_enum,int new_enum){ 246 247 /*Call inputs method*/ 248 if (IsInput(original_enum)) inputs->DuplicateInput(original_enum,new_enum); 249 250 } 251 /*}}}*/ 244 252 /*FUNCTION Matpar::Configure {{{*/ 245 253 void Matpar::Configure(Elements* elementsin){ … … 455 463 } 456 464 /*}}}*/ 465 /*FUNCTION Matpar::IsInput{{{*/ 466 bool Matpar::IsInput(int name){ 467 return false; 468 } 469 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Materials/Matpar.h
r15128 r15375 84 84 /*}}}*/ 85 85 /*Material virtual functions resolution: {{{*/ 86 void InputDuplicate(int original_enum,int new_enum) {_error_("not implemented yet");};86 void InputDuplicate(int original_enum,int new_enum); 87 87 void Configure(Elements* elements); 88 88 void GetVectorFromInputs(Vector<IssmDouble>* vector,int input_enum){return;} … … 136 136 IssmDouble GetDesFac(); 137 137 IssmDouble GetS0p(); 138 bool IsInput(int name); 138 139 /*}}}*/ 139 140 -
issm/trunk-jpl/src/c/classes/Vertex.cpp
r15104 r15375 124 124 int Vertex::Pid(void){ return pid; } 125 125 /*}}}*/ 126 /*FUNCTION Vertex::Update VertexPosition {{{*/126 /*FUNCTION Vertex::UpdatePosition {{{*/ 127 127 void Vertex::UpdatePosition(Vector<IssmDouble>* vz,Parameters* parameters,IssmDouble* thickness,IssmDouble* bed){ 128 128 -
issm/trunk-jpl/src/c/modules/InputDuplicatex/InputDuplicatex.cpp
r14999 r15375 18 18 for(i=0;i<materials->Size();i++){ 19 19 Material* material=(Material*)materials->GetObjectByOffset(i); 20 //material->InputDuplicate(original_enum,new_enum);20 material->InputDuplicate(original_enum,new_enum); 21 21 } 22 22 -
issm/trunk-jpl/src/c/modules/ModelProcessorx/CreateElementsVerticesAndMaterials.cpp
r15000 r15375 17 17 int numberofvertices; 18 18 bool control_analysis; 19 bool dakota_analysis; 19 20 20 21 /*DataSets: */ … … 28 29 iomodel->Constant(&numberofvertices,MeshNumberofverticesEnum); 29 30 iomodel->Constant(&control_analysis,InversionIscontrolEnum); 31 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); 30 32 iomodel->Constant(&materials_type,MaterialsEnum); 31 33 … … 64 66 iomodel->FetchData(2,MaterialsRheologyBEnum,MaterialsRheologyNEnum); 65 67 for (i=0;i<numberofelements;i++) if(iomodel->my_elements[i]) materials->AddObject(new Matice(i+1,i,iomodel)); 68 if(dakota_analysis){ 69 if(dim==2) materials->InputDuplicate(MaterialsRheologyBbarEnum,QmuMaterialsRheologyBEnum); 70 #ifdef _HAVE_3D_ 71 else materials->InputDuplicate(MaterialsRheologyBEnum,QmuMaterialsRheologyBEnum); 72 #endif 73 } 66 74 break; 67 75 case MatdamageiceEnum: -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Prognostic/UpdateElementsPrognostic.cpp
r15000 r15375 58 58 elements->InputDuplicate(ThicknessEnum,QmuThicknessEnum); 59 59 elements->InputDuplicate(SurfaceEnum,QmuSurfaceEnum); 60 elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum); 61 elements->InputDuplicate(VxEnum,QmuVxEnum); 62 elements->InputDuplicate(VyEnum,QmuVyEnum); 60 63 } 61 64 … … 65 68 iomodel->FetchDataToInput(elements,PressureEnum); 66 69 iomodel->FetchDataToInput(elements,TemperatureEnum); 70 iomodel->FetchDataToInput(elements,VzEnum); 71 if(dakota_analysis){ 72 elements->InputDuplicate(PressureEnum,QmuPressureEnum); 73 elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum); 74 elements->InputDuplicate(VzEnum,QmuVzEnum); 75 } 67 76 } 68 77 if(issmbgradients){ -
issm/trunk-jpl/src/c/modules/ModelProcessorx/Thermal/UpdateElementsThermal.cpp
r15000 r15375 58 58 if(dakota_analysis){ 59 59 elements->InputDuplicate(TemperatureEnum,QmuTemperatureEnum); 60 elements->InputDuplicate(PressureEnum,QmuPressureEnum); 60 61 elements->InputDuplicate(BasalforcingsMeltingRateEnum,QmuMeltingEnum); 61 62 } 63 62 64 /*Free data: */ 63 65 iomodel->DeleteData(1,MeshElementsEnum); -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r15339 r15375 204 204 QmuResponsedescriptorsEnum, 205 205 QmuVariabledescriptorsEnum, 206 QmuMaterialsRheologyBEnum, 206 207 RiftsNumriftsEnum, 207 208 RiftsRiftstructEnum, … … 431 432 QmuSurfaceEnum, 432 433 QmuMeltingEnum, 434 QmuVxMeshEnum, 435 QmuVyMeshEnum, 436 QmuVzMeshEnum, 433 437 AndroidFrictionCoefficientEnum, 434 438 ResetPenaltiesEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r15339 r15375 212 212 case QmuResponsedescriptorsEnum : return "QmuResponsedescriptors"; 213 213 case QmuVariabledescriptorsEnum : return "QmuVariabledescriptors"; 214 case QmuMaterialsRheologyBEnum : return "QmuMaterialsRheologyB"; 214 215 case RiftsNumriftsEnum : return "RiftsNumrifts"; 215 216 case RiftsRiftstructEnum : return "RiftsRiftstruct"; … … 425 426 case QmuSurfaceEnum : return "QmuSurface"; 426 427 case QmuMeltingEnum : return "QmuMelting"; 428 case QmuVxMeshEnum : return "QmuVxMesh"; 429 case QmuVyMeshEnum : return "QmuVyMesh"; 430 case QmuVzMeshEnum : return "QmuVzMesh"; 427 431 case AndroidFrictionCoefficientEnum : return "AndroidFrictionCoefficient"; 428 432 case ResetPenaltiesEnum : return "ResetPenalties"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r15339 r15375 215 215 else if (strcmp(name,"QmuResponsedescriptors")==0) return QmuResponsedescriptorsEnum; 216 216 else if (strcmp(name,"QmuVariabledescriptors")==0) return QmuVariabledescriptorsEnum; 217 else if (strcmp(name,"QmuMaterialsRheologyB")==0) return QmuMaterialsRheologyBEnum; 217 218 else if (strcmp(name,"RiftsNumrifts")==0) return RiftsNumriftsEnum; 218 219 else if (strcmp(name,"RiftsRiftstruct")==0) return RiftsRiftstructEnum; … … 259 260 else if (strcmp(name,"GiaLithosphereThickness")==0) return GiaLithosphereThicknessEnum; 260 261 else if (strcmp(name,"Thickness")==0) return ThicknessEnum; 261 else if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 265 if (strcmp(name,"TimesteppingStartTime")==0) return TimesteppingStartTimeEnum; 266 else if (strcmp(name,"TimesteppingFinalTime")==0) return TimesteppingFinalTimeEnum; 266 267 else if (strcmp(name,"TimesteppingCflCoefficient")==0) return TimesteppingCflCoefficientEnum; 267 268 else if (strcmp(name,"TimesteppingTimeAdapt")==0) return TimesteppingTimeAdaptEnum; … … 382 383 else if (strcmp(name,"RiftfrontType")==0) return RiftfrontTypeEnum; 383 384 else if (strcmp(name,"Segment")==0) return SegmentEnum; 384 else if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 388 if (strcmp(name,"SegmentRiftfront")==0) return SegmentRiftfrontEnum; 389 else if (strcmp(name,"SpcDynamic")==0) return SpcDynamicEnum; 389 390 else if (strcmp(name,"SpcStatic")==0) return SpcStaticEnum; 390 391 else if (strcmp(name,"SpcTransient")==0) return SpcTransientEnum; … … 434 435 else if (strcmp(name,"QmuSurface")==0) return QmuSurfaceEnum; 435 436 else if (strcmp(name,"QmuMelting")==0) return QmuMeltingEnum; 437 else if (strcmp(name,"QmuVxMesh")==0) return QmuVxMeshEnum; 438 else if (strcmp(name,"QmuVyMesh")==0) return QmuVyMeshEnum; 439 else if (strcmp(name,"QmuVzMesh")==0) return QmuVzMeshEnum; 436 440 else if (strcmp(name,"AndroidFrictionCoefficient")==0) return AndroidFrictionCoefficientEnum; 437 441 else if (strcmp(name,"ResetPenalties")==0) return ResetPenaltiesEnum; … … 502 506 else if (strcmp(name,"DoubleElementResult")==0) return DoubleElementResultEnum; 503 507 else if (strcmp(name,"DoubleExternalResult")==0) return DoubleExternalResultEnum; 504 else if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"DoubleMatExternalResult")==0) return DoubleMatExternalResultEnum; 505 512 else if (strcmp(name,"IntExternalResult")==0) return IntExternalResultEnum; 506 513 else if (strcmp(name,"J")==0) return JEnum; 507 514 else if (strcmp(name,"Patch")==0) return PatchEnum; 508 else stage=5; 509 } 510 if(stage==5){ 511 if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum; 515 else if (strcmp(name,"PatchNodes")==0) return PatchNodesEnum; 512 516 else if (strcmp(name,"PatchVertices")==0) return PatchVerticesEnum; 513 517 else if (strcmp(name,"PentaP1ElementResult")==0) return PentaP1ElementResultEnum;
Note:
See TracChangeset
for help on using the changeset viewer.