Changeset 18613
- Timestamp:
- 10/10/14 13:04:07 (10 years ago)
- Location:
- issm/trunk-jpl/src
- Files:
-
- 3 added
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/Makefile.am
r18593 r18613 213 213 ./shared/Elements/elements.h\ 214 214 ./shared/Elements/Cuffey.cpp\ 215 ./shared/Elements/StressIntensityIntegralWeight.cpp\ 215 216 ./shared/Elements/Paterson.cpp\ 216 217 ./shared/Elements/Arrhenius.cpp\ -
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r18521 r18613 65 65 /*parameters: */ 66 66 bool save_results; 67 int stabilization=1; 67 68 femmodel->parameters->FindParam(&save_results,SaveResultsEnum); 69 //femmodel->parameters->FindParam(&stabilization,LevelsetStabilizationEnum); 68 70 69 71 /*activate formulation: */ … … 71 73 72 74 if(VerboseSolution()) _printf0_("call computational core:\n"); 73 solutionsequence_linear(femmodel); 75 if(stabilization==4){ 76 solutionsequence_fct(femmodel); 77 } 78 else{ 79 solutionsequence_linear(femmodel); 80 } 74 81 75 82 if(save_results){ -
issm/trunk-jpl/src/c/classes/Elements/Element.cpp
r18602 r18613 1105 1105 name==SedimentHeadOldEnum || 1106 1106 name==EplHeadOldEnum || 1107 name==StressIntensityFactorEnum || 1107 1108 name==HydrologydcEplThicknessOldEnum || 1108 1109 name==HydrologydcEplInitialThicknessEnum || … … 1203 1204 input=this->inputs->GetInput(output_enum); 1204 1205 break; 1206 case StressIntensityFactorEnum: 1207 this->StressIntensityFactor(); 1208 input=this->inputs->GetInput(output_enum); 1209 break; 1205 1210 default: 1206 1211 _error_("input "<<EnumToStringx(output_enum)<<" not found in element"); -
issm/trunk-jpl/src/c/classes/Elements/Element.h
r18602 r18613 219 219 virtual void ComputeStressTensor(void)=0; 220 220 virtual void ComputeDeviatoricStressTensor(void)=0; 221 virtual void StressIntensityFactor(void)=0; 221 222 222 223 virtual void Update(int index, IoModel* iomodel,int analysis_counter,int analysis_type,int finite_element)=0; -
issm/trunk-jpl/src/c/classes/Elements/Penta.cpp
r18521 r18613 345 345 /*Clean up and return*/ 346 346 delete gauss; 347 } 348 /*}}}*/ 349 void Penta::StressIntensityFactor(){/*{{{*/ 350 351 /* Check if we are on the base */ 352 if(!IsOnBase()) return; 353 354 IssmDouble ki[6]={0.}; 355 IssmDouble const_grav=9.81; 356 IssmDouble rho_ice=900; 357 IssmDouble rho_water=1000; 358 IssmDouble Jdet[3]; 359 IssmDouble pressure,vx,vy,vel,deviaxx,deviaxy,deviayy,water_depth,prof,stress_xx,thickness; 360 361 Penta* penta=this; 362 for(;;){ 363 364 IssmDouble xyz_list[NUMVERTICES][3]; 365 /* Get node coordinates and dof list: */ 366 ::GetVerticesCoordinates(&xyz_list[0][0],penta->vertices,NUMVERTICES); 367 368 ///*Compute the Jacobian for the vertical integration*/ 369 Jdet[0]=(xyz_list[3][2]-xyz_list[0][2])*0.5; 370 Jdet[1]=(xyz_list[4][2]-xyz_list[1][2])*0.5; 371 Jdet[2]=(xyz_list[5][2]-xyz_list[2][2])*0.5; 372 373 /*Retrieve all inputs we will need*/ 374 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 375 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 376 Input* vel_input=inputs->GetInput(VelEnum); _assert_(vel_input); 377 Input* pressure_input=inputs->GetInput(PressureEnum); _assert_(pressure_input); 378 Input* deviaxx_input=inputs->GetInput(DeviatoricStressxxEnum); _assert_(deviaxx_input); 379 Input* deviaxy_input=inputs->GetInput(DeviatoricStressxyEnum); _assert_(deviaxy_input); 380 Input* deviayy_input=inputs->GetInput(DeviatoricStressyyEnum); _assert_(deviayy_input); 381 Input* surface_input=inputs->GetInput(SurfaceEnum); _assert_(surface_input); 382 Input* thickness_input=inputs->GetInput(ThicknessEnum); _assert_(thickness_input); 383 384 /* Start looping on the number of 2D vertices: */ 385 for(int ig=0;ig<3;ig++){ 386 GaussPenta* gauss=new GaussPenta(ig,3+ig,11); 387 for (int iv=gauss->begin();iv<gauss->end();iv++){ 388 gauss->GaussPoint(iv); 389 390 /* Get the value we need*/ 391 pressure_input->GetInputValue(&pressure,gauss); 392 vx_input->GetInputValue(&vx,gauss); 393 vy_input->GetInputValue(&vy,gauss); 394 vel_input->GetInputValue(&vel,gauss); 395 deviaxx_input->GetInputValue(&deviaxx,gauss); 396 deviaxy_input->GetInputValue(&deviaxy,gauss); 397 deviayy_input->GetInputValue(&deviayy,gauss); 398 surface_input->GetInputValue(&water_depth,gauss); 399 thickness_input->GetInputValue(&thickness,gauss); 400 prof=water_depth-penta->GetZcoord(&xyz_list[0][0],gauss); 401 402 /*stress_xx= Deviatoric stress along the ice flow direction plus cryostatic pressure */ 403 stress_xx=(vx*vx*(deviaxx)+vy*vy*(deviayy)+2*vy*vx*deviaxy)/(vel*vel+1.e-6); 404 405 if(prof<water_depth&prof<thickness){ 406 /* Compute the local stress intensity factor*/ 407 ki[ig]+=Jdet[ig]*gauss->weight*stress_xx*StressIntensityIntegralWeight(prof,min(water_depth,thickness),thickness); 408 } 409 } 410 delete gauss; 411 } 412 413 /*Stop if we have reached the surface/base*/ 414 if(penta->IsOnSurface()) break; 415 416 /*get upper Penta*/ 417 penta=penta->GetUpperPenta(); 418 _assert_(penta->Id()!=this->id); 419 } 420 421 /*Add input*/ 422 this->inputs->AddInput(new PentaInput(StressIntensityFactorEnum,&ki[0],P1Enum)); 423 this->InputExtrude(StressIntensityFactorEnum,-1); 347 424 } 348 425 /*}}}*/ -
issm/trunk-jpl/src/c/classes/Elements/Penta.h
r18450 r18613 57 57 void ComputeStressTensor(); 58 58 void ComputeDeviatoricStressTensor(); 59 void StressIntensityFactor(); 59 60 void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters); 60 61 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz); -
issm/trunk-jpl/src/c/classes/Elements/Seg.h
r18450 r18613 57 57 void ComputeStressTensor(){_error_("not implemented yet");}; 58 58 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 59 void StressIntensityFactor(void){_error_("not implemented yet");}; 59 60 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 60 61 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; -
issm/trunk-jpl/src/c/classes/Elements/Tetra.h
r18450 r18613 57 57 void ComputeStressTensor(){_error_("not implemented yet");}; 58 58 void ComputeDeviatoricStressTensor(){_error_("not implemented yet");}; 59 void StressIntensityFactor(void){_error_("not implemented yet");}; 59 60 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 60 61 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); -
issm/trunk-jpl/src/c/classes/Elements/Tria.h
r18450 r18613 56 56 void ComputeDeviatoricStressTensor(); 57 57 void ComputeSurfaceNormalVelocity(); 58 void StressIntensityFactor(void){_error_("not implemented yet");}; 58 59 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 59 60 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r18603 r18613 1636 1636 } 1637 1637 /*}}}*/ 1638 void FemModel::StressIntensityFactorx(){/*{{{*/ 1639 1640 /*Initialize input as 0*/ 1641 InputUpdateFromConstantx(this,0.,StressIntensityFactorEnum); 1642 1643 /*Update input for basal element only*/ 1644 for(int i=0;i<elements->Size();i++){ 1645 Element* element=dynamic_cast<Element*>(this->elements->GetObjectByOffset(i)); 1646 element->StressIntensityFactor(); 1647 } 1648 } 1649 /*}}}*/ 1638 1650 #ifdef _HAVE_DAKOTA_ 1639 1651 void FemModel::DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses){/*{{{*/ -
issm/trunk-jpl/src/c/classes/FemModel.h
r18565 r18613 81 81 void ElementResponsex(IssmDouble* presponse,int response_enum); 82 82 void BalancethicknessMisfitx(IssmDouble* pV); 83 void StressIntensityFactorx(); 83 84 #ifdef _HAVE_DAKOTA_ 84 85 void DakotaResponsesx(double* d_responses,char** responses_descriptors,int numresponsedescriptors,int d_numresponses); -
issm/trunk-jpl/src/c/shared/Elements/elements.h
r17457 r18613 22 22 IssmDouble* monthlytemperaturesout, IssmDouble* monthlyprecout); 23 23 IssmDouble DrainageFunctionWaterfraction(IssmDouble waterfraction, IssmDouble dt=0.); 24 IssmDouble StressIntensityIntegralWeight(IssmDouble depth, IssmDouble water_depth, IssmDouble thickness); 24 25 25 26 /*Print arrays*/ -
issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
r18604 r18613 204 204 DamageEnum, 205 205 NewDamageEnum, 206 StressIntensityFactorEnum, 206 207 MaterialsRhoIceEnum, 207 208 MaterialsRhoSeawaterEnum, … … 400 401 MeshdeformationAnalysisEnum, 401 402 LevelsetAnalysisEnum, 403 LevelsetStabilizationEnum, 402 404 ExtrapolationAnalysisEnum, 403 405 LsfReinitializationAnalysisEnum, -
issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
r18604 r18613 212 212 case DamageEnum : return "Damage"; 213 213 case NewDamageEnum : return "NewDamage"; 214 case StressIntensityFactorEnum : return "StressIntensityFactor"; 214 215 case MaterialsRhoIceEnum : return "MaterialsRhoIce"; 215 216 case MaterialsRhoSeawaterEnum : return "MaterialsRhoSeawater"; … … 403 404 case MeshdeformationAnalysisEnum : return "MeshdeformationAnalysis"; 404 405 case LevelsetAnalysisEnum : return "LevelsetAnalysis"; 406 case LevelsetStabilizationEnum : return "LevelsetStabilization"; 405 407 case ExtrapolationAnalysisEnum : return "ExtrapolationAnalysis"; 406 408 case LsfReinitializationAnalysisEnum : return "LsfReinitializationAnalysis"; -
issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
r18604 r18613 215 215 else if (strcmp(name,"Damage")==0) return DamageEnum; 216 216 else if (strcmp(name,"NewDamage")==0) return NewDamageEnum; 217 else if (strcmp(name,"StressIntensityFactor")==0) return StressIntensityFactorEnum; 217 218 else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum; 218 219 else if (strcmp(name,"MaterialsRhoSeawater")==0) return MaterialsRhoSeawaterEnum; … … 259 260 else if (strcmp(name,"MasstransportNumRequestedOutputs")==0) return MasstransportNumRequestedOutputsEnum; 260 261 else if (strcmp(name,"MasstransportRequestedOutputs")==0) return MasstransportRequestedOutputsEnum; 261 else if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum;262 262 else stage=3; 263 263 } 264 264 if(stage==3){ 265 if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; 265 if (strcmp(name,"QmuIsdakota")==0) return QmuIsdakotaEnum; 266 else if (strcmp(name,"MassFluxSegments")==0) return MassFluxSegmentsEnum; 266 267 else if (strcmp(name,"MassFluxSegmentsPresent")==0) return MassFluxSegmentsPresentEnum; 267 268 else if (strcmp(name,"QmuMassFluxSegmentsPresent")==0) return QmuMassFluxSegmentsPresentEnum; … … 382 383 else if (strcmp(name,"FlaimAnalysis")==0) return FlaimAnalysisEnum; 383 384 else if (strcmp(name,"FlaimSolution")==0) return FlaimSolutionEnum; 384 else if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 388 if (strcmp(name,"HydrologyShreveAnalysis")==0) return HydrologyShreveAnalysisEnum; 389 else if (strcmp(name,"HydrologyDCInefficientAnalysis")==0) return HydrologyDCInefficientAnalysisEnum; 389 390 else if (strcmp(name,"HydrologyDCEfficientAnalysis")==0) return HydrologyDCEfficientAnalysisEnum; 390 391 else if (strcmp(name,"HydrologySolution")==0) return HydrologySolutionEnum; … … 412 413 else if (strcmp(name,"MeshdeformationAnalysis")==0) return MeshdeformationAnalysisEnum; 413 414 else if (strcmp(name,"LevelsetAnalysis")==0) return LevelsetAnalysisEnum; 415 else if (strcmp(name,"LevelsetStabilization")==0) return LevelsetStabilizationEnum; 414 416 else if (strcmp(name,"ExtrapolationAnalysis")==0) return ExtrapolationAnalysisEnum; 415 417 else if (strcmp(name,"LsfReinitializationAnalysis")==0) return LsfReinitializationAnalysisEnum; … … 504 506 else if (strcmp(name,"Adjointy")==0) return AdjointyEnum; 505 507 else if (strcmp(name,"Adjointz")==0) return AdjointzEnum; 506 else if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum;507 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 511 if (strcmp(name,"BalancethicknessMisfit")==0) return BalancethicknessMisfitEnum; 512 else if (strcmp(name,"BedSlopeX")==0) return BedSlopeXEnum; 513 else if (strcmp(name,"BedSlopeY")==0) return BedSlopeYEnum; 512 514 else if (strcmp(name,"Boundary")==0) return BoundaryEnum; 513 515 else if (strcmp(name,"Converged")==0) return ConvergedEnum; … … 627 629 else if (strcmp(name,"StringExternalResult")==0) return StringExternalResultEnum; 628 630 else if (strcmp(name,"Step")==0) return StepEnum; 629 else if (strcmp(name,"Time")==0) return TimeEnum;630 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum;631 631 else stage=6; 632 632 } 633 633 if(stage==6){ 634 if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum; 634 if (strcmp(name,"Time")==0) return TimeEnum; 635 else if (strcmp(name,"WaterColumnOld")==0) return WaterColumnOldEnum; 636 else if (strcmp(name,"Outputdefinition")==0) return OutputdefinitionEnum; 635 637 else if (strcmp(name,"OutputdefinitionList")==0) return OutputdefinitionListEnum; 636 638 else if (strcmp(name,"Massfluxatgate")==0) return MassfluxatgateEnum; … … 750 752 else if (strcmp(name,"BasalforcingsOceanSsh")==0) return BasalforcingsOceanSshEnum; 751 753 else if (strcmp(name,"BasalforcingsOceanVx")==0) return BasalforcingsOceanVxEnum; 752 else if (strcmp(name,"BasalforcingsOceanVy")==0) return BasalforcingsOceanVyEnum;753 else if (strcmp(name,"SurfaceforcingsRhoAir")==0) return SurfaceforcingsRhoAirEnum;754 754 else stage=7; 755 755 } 756 756 if(stage==7){ 757 if (strcmp(name,"SurfaceforcingsAirCoef")==0) return SurfaceforcingsAirCoefEnum; 757 if (strcmp(name,"BasalforcingsOceanVy")==0) return BasalforcingsOceanVyEnum; 758 else if (strcmp(name,"SurfaceforcingsRhoAir")==0) return SurfaceforcingsRhoAirEnum; 759 else if (strcmp(name,"SurfaceforcingsAirCoef")==0) return SurfaceforcingsAirCoefEnum; 758 760 else if (strcmp(name,"SurfaceforcingsAirLinDragCoef")==0) return SurfaceforcingsAirLinDragCoefEnum; 759 761 else if (strcmp(name,"SurfaceforcingsAirQuadDragCoef")==0) return SurfaceforcingsAirQuadDragCoefEnum; -
issm/trunk-jpl/src/m/enum/EnumDefinitions.py
r18604 r18613 204 204 def DamageEnum(): return StringToEnum("Damage")[0] 205 205 def NewDamageEnum(): return StringToEnum("NewDamage")[0] 206 def StressIntensityFactorEnum(): return StringToEnum("StressIntensityFactor")[0] 206 207 def MaterialsRhoIceEnum(): return StringToEnum("MaterialsRhoIce")[0] 207 208 def MaterialsRhoSeawaterEnum(): return StringToEnum("MaterialsRhoSeawater")[0] … … 395 396 def MeshdeformationAnalysisEnum(): return StringToEnum("MeshdeformationAnalysis")[0] 396 397 def LevelsetAnalysisEnum(): return StringToEnum("LevelsetAnalysis")[0] 398 def LevelsetStabilizationEnum(): return StringToEnum("LevelsetStabilization")[0] 397 399 def ExtrapolationAnalysisEnum(): return StringToEnum("ExtrapolationAnalysis")[0] 398 400 def LsfReinitializationAnalysisEnum(): return StringToEnum("LsfReinitializationAnalysis")[0]
Note:
See TracChangeset
for help on using the changeset viewer.