source:
issm/oecreview/Archive/16554-17801/ISSM-16611-16612.diff
Last change on this file was 17802, checked in by , 11 years ago | |
---|---|
File size: 11.5 KB |
-
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
195 195 iomodel->FetchDataToInput(elements,VzEnum,0.); 196 196 if(dakota_analysis)elements->InputDuplicate(VzEnum,QmuVzEnum); 197 197 } 198 if(iomodel->meshtype==Mesh2DverticalEnum){ 199 iomodel->FetchDataToInput(elements,MeshVertexonsurfaceEnum); 200 } 198 201 if(isFS){ 199 202 iomodel->FetchDataToInput(elements,MeshVertexonbedEnum); 200 203 iomodel->FetchDataToInput(elements,PressureEnum,0.); -
../trunk-jpl/src/c/shared/Enum/EnumDefinitions.h
320 320 MasstransportSolutionEnum, 321 321 FreeSurfaceBaseAnalysisEnum, 322 322 FreeSurfaceTopAnalysisEnum, 323 SurfaceNormalVelocityEnum, 323 324 ExtrudeFromBaseAnalysisEnum, 324 325 ExtrudeFromTopAnalysisEnum, 325 326 SteadystateSolutionEnum, -
../trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp
326 326 case MasstransportSolutionEnum : return "MasstransportSolution"; 327 327 case FreeSurfaceBaseAnalysisEnum : return "FreeSurfaceBaseAnalysis"; 328 328 case FreeSurfaceTopAnalysisEnum : return "FreeSurfaceTopAnalysis"; 329 case SurfaceNormalVelocityEnum : return "SurfaceNormalVelocity"; 329 330 case ExtrudeFromBaseAnalysisEnum : return "ExtrudeFromBaseAnalysis"; 330 331 case ExtrudeFromTopAnalysisEnum : return "ExtrudeFromTopAnalysis"; 331 332 case SteadystateSolutionEnum : return "SteadystateSolution"; -
../trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp
332 332 else if (strcmp(name,"MasstransportSolution")==0) return MasstransportSolutionEnum; 333 333 else if (strcmp(name,"FreeSurfaceBaseAnalysis")==0) return FreeSurfaceBaseAnalysisEnum; 334 334 else if (strcmp(name,"FreeSurfaceTopAnalysis")==0) return FreeSurfaceTopAnalysisEnum; 335 else if (strcmp(name,"SurfaceNormalVelocity")==0) return SurfaceNormalVelocityEnum; 335 336 else if (strcmp(name,"ExtrudeFromBaseAnalysis")==0) return ExtrudeFromBaseAnalysisEnum; 336 337 else if (strcmp(name,"ExtrudeFromTopAnalysis")==0) return ExtrudeFromTopAnalysisEnum; 337 338 else if (strcmp(name,"SteadystateSolution")==0) return SteadystateSolutionEnum; … … 381 382 else if (strcmp(name,"DoubleVecParam")==0) return DoubleVecParamEnum; 382 383 else if (strcmp(name,"Element")==0) return ElementEnum; 383 384 else if (strcmp(name,"ExternalResult")==0) return ExternalResultEnum; 384 else if (strcmp(name,"FileParam")==0) return FileParamEnum;385 385 else stage=4; 386 386 } 387 387 if(stage==4){ 388 if (strcmp(name,"Input")==0) return InputEnum; 388 if (strcmp(name,"FileParam")==0) return FileParamEnum; 389 else if (strcmp(name,"Input")==0) return InputEnum; 389 390 else if (strcmp(name,"IntInput")==0) return IntInputEnum; 390 391 else if (strcmp(name,"InputToExtrude")==0) return InputToExtrudeEnum; 391 392 else if (strcmp(name,"InputToL2Project")==0) return InputToL2ProjectEnum; … … 504 505 else if (strcmp(name,"ViscousHeating")==0) return ViscousHeatingEnum; 505 506 else if (strcmp(name,"QmuTemperature")==0) return QmuTemperatureEnum; 506 507 else if (strcmp(name,"HydrologyWaterVx")==0) return HydrologyWaterVxEnum; 507 else if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum;508 508 else stage=5; 509 509 } 510 510 if(stage==5){ 511 if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 511 if (strcmp(name,"HydrologyWaterVy")==0) return HydrologyWaterVyEnum; 512 else if (strcmp(name,"StressTensor")==0) return StressTensorEnum; 512 513 else if (strcmp(name,"StressTensorxx")==0) return StressTensorxxEnum; 513 514 else if (strcmp(name,"StressTensorxy")==0) return StressTensorxyEnum; 514 515 else if (strcmp(name,"StressTensorxz")==0) return StressTensorxzEnum; -
../trunk-jpl/src/c/cores/surfaceslope_core.cpp
31 31 femmodel->parameters->SetParam(SurfaceSlopeYEnum,InputToL2ProjectEnum); 32 32 solutionsequence_linear(femmodel); 33 33 } 34 if(meshtype==Mesh2DverticalEnum){ 35 femmodel->parameters->SetParam(SurfaceSlopeXEnum,InputToExtrudeEnum); 36 extrudefrombase_core(femmodel); 37 } 34 38 35 39 if(save_results){ 36 40 if(VerboseSolution()) _printf0_("saving results:\n"); -
../trunk-jpl/src/c/cores/stressbalance_core.cpp
47 47 } 48 48 49 49 /*Compute slopes: */ 50 if(isSIA ) surfaceslope_core(femmodel);50 if(isSIA || (isFS && meshtype==Mesh2DverticalEnum)) surfaceslope_core(femmodel); 51 51 if(isFS){ 52 52 bedslope_core(femmodel); 53 53 femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum); -
../trunk-jpl/src/c/cores/AnalysisConfiguration.cpp
25 25 switch(solutiontype){ 26 26 27 27 case StressbalanceSolutionEnum: 28 numanalyses= 4;28 numanalyses=5; 29 29 analyses=xNew<int>(numanalyses); 30 30 analyses[0]=StressbalanceAnalysisEnum; 31 31 analyses[1]=StressbalanceVerticalAnalysisEnum; 32 32 analyses[2]=StressbalanceSIAAnalysisEnum; 33 33 analyses[3]=L2ProjectionBaseAnalysisEnum; 34 analyses[4]=ExtrudeFromBaseAnalysisEnum; 34 35 break; 35 36 36 37 case SteadystateSolutionEnum: -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
2454 2454 this->ComputeStressTensor(); 2455 2455 input=this->inputs->GetInput(output_enum); 2456 2456 break; 2457 case SurfaceNormalVelocityEnum: 2458 this->ComputeSurfaceNormalVelocity(); 2459 input=this->inputs->GetInput(output_enum); 2460 break; 2457 2461 default: 2458 2462 _error_("input "<<EnumToStringx(output_enum)<<" not found in element"); 2459 2463 } … … 2485 2489 for(int i=0;i<NUMVERTICES;i++) values[i] = values[i]/reCast<IssmDouble>(connectivity[i]); 2486 2490 2487 2491 vector->SetValues(NUMVERTICES,&sidlist[0],&values[0],ADD_VAL); 2492 2493 this->inputs->DeleteInput(SurfaceNormalVelocityEnum); 2494 2488 2495 break; 2489 2496 } 2490 2497 default: … … 2643 2650 *(surface_normal+2) = normal[2]/normal_norm; 2644 2651 } 2645 2652 /*}}}*/ 2653 /*FUNCTION Tria::ComputeSurfaceNormalVelocity{{{*/ 2654 void Tria::ComputeSurfaceNormalVelocity(){ 2655 2656 IssmDouble sum,tangential_vector[2],normal_vector[2],time,ux,uy; 2657 IssmDouble normal_velocity[NUMVERTICES],xyz_list[NUMVERTICES][3]; 2658 IssmDouble value[NUMVERTICES],verticesonsurface[NUMVERTICES]; 2659 2660 for(int iv=0;iv<NUMVERTICES;iv++){ 2661 normal_velocity[iv]=0.; 2662 value[iv]=0.; 2663 } 2664 2665 GetVerticesCoordinates(&xyz_list[0][0],vertices,NUMVERTICES); 2666 2667 GaussTria* gauss=new GaussTria(); 2668 Input* slope_input=inputs->GetInput(SurfaceSlopeXEnum); _assert_(slope_input); 2669 // Input* slope_input= inputs->GetInput(SurfaceEnum); _assert_(slope_input); 2670 Input* vx_input=inputs->GetInput(VxEnum); _assert_(vx_input); 2671 Input* vy_input=inputs->GetInput(VyEnum); _assert_(vy_input); 2672 2673 2674 /*Get list of nodes on surface*/ 2675 GetInputListOnVertices(&verticesonsurface[0],MeshVertexonsurfaceEnum); 2676 sum = verticesonsurface[0]+verticesonsurface[1]+verticesonsurface[2]; 2677 _assert_(sum==0. || sum==1. || sum==2.); 2678 2679 /*Compute normal velocity for surface nodes from L2 projected slope*/ 2680 for(int iv=0;iv<NUMVERTICES;iv++){ 2681 if(verticesonsurface[iv] == 1){ 2682 gauss->GaussNode(P1Enum,iv); 2683 slope_input->GetInputValue(&value[iv],gauss); 2684 // slope_input->GetInputDerivativeValue(&value[iv],&xyz_list[0][0],gauss); 2685 vx_input->GetInputValue(&ux,gauss); 2686 vy_input->GetInputValue(&uy,gauss); 2687 tangential_vector[0]=sqrt(1./(pow(value[iv],2.)+1.)); 2688 tangential_vector[1]=value[iv]*tangential_vector[0]; 2689 normal_vector[0]=-1.*tangential_vector[1]; 2690 normal_vector[1]=tangential_vector[0]; 2691 normal_velocity[iv]=ux*normal_vector[0]+uy*normal_vector[1]; 2692 } 2693 } 2694 2695 delete gauss; 2696 this->inputs->AddInput(new TriaInput(SurfaceNormalVelocityEnum,&normal_velocity[0],P1Enum)); 2697 2698 } 2699 /*}}}*/ 2646 2700 /*FUNCTION Tria::TimeAdapt{{{*/ 2647 2701 IssmDouble Tria::TimeAdapt(void){ 2648 2702 … … 3223 3277 /*Now get the average SMB over the element*/ 3224 3278 Input* smb_input = inputs->GetInput(SurfaceforcingsMassBalanceEnum); _assert_(smb_input); 3225 3279 smb_input->GetInputAverage(&smb); // average smb on element in m ice s-1 3226 3280 Total_Smb=rho_ice*base*smb; // smb on element in kg s-1 3227 3281 3228 3282 /*Return: */ 3229 3283 return Total_Smb; -
../trunk-jpl/src/c/classes/Elements/Tria.h
69 69 void ComputeBasalStress(Vector<IssmDouble>* sigma_b); 70 70 void ComputeStrainRate(Vector<IssmDouble>* eps); 71 71 void ComputeStressTensor(); 72 void ComputeSurfaceNormalVelocity(); 72 73 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 73 74 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 74 75 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum); … … 240 241 void SetClone(int* minranks); 241 242 Seg* SpawnSeg(int index1,int index2); 242 243 void SurfaceNormal(IssmDouble* surface_normal, IssmDouble xyz_list[3][3]); 243 244 244 #ifdef _HAVE_STRESSBALANCE_ 245 245 ElementMatrix* CreateKMatrixStressbalanceSSA(void); 246 246 ElementMatrix* CreateKMatrixStressbalanceSSAViscous(void); -
../trunk-jpl/src/m/enum/EnumDefinitions.py
318 318 def MasstransportSolutionEnum(): return StringToEnum("MasstransportSolution")[0] 319 319 def FreeSurfaceBaseAnalysisEnum(): return StringToEnum("FreeSurfaceBaseAnalysis")[0] 320 320 def FreeSurfaceTopAnalysisEnum(): return StringToEnum("FreeSurfaceTopAnalysis")[0] 321 def SurfaceNormalVelocityEnum(): return StringToEnum("SurfaceNormalVelocity")[0] 321 322 def ExtrudeFromBaseAnalysisEnum(): return StringToEnum("ExtrudeFromBaseAnalysis")[0] 322 323 def ExtrudeFromTopAnalysisEnum(): return StringToEnum("ExtrudeFromTopAnalysis")[0] 323 324 def SteadystateSolutionEnum(): return StringToEnum("SteadystateSolution")[0]
Note:
See TracBrowser
for help on using the repository browser.