source:
issm/oecreview/Archive/16554-17801/ISSM-17000-17001.diff
Last change on this file was 17802, checked in by , 11 years ago | |
---|---|
File size: 10.7 KB |
-
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.h
61 61 void GetBHOFriction(IssmDouble* B,Element* element,IssmDouble* xyz_list,Gauss* gauss); 62 62 void InputUpdateFromSolutionHO(IssmDouble* solution,Element* element); 63 63 /*FS*/ 64 ElementVector* CreateDVectorFS(Element* element); 64 65 ElementMatrix* CreateJacobianMatrixFS(Element* element); 65 66 ElementMatrix* CreateKMatrixFS(Element* element); 66 67 ElementMatrix* CreateKMatrixFSViscous(Element* element); -
../trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
812 812 813 813 /*Finite Element Analysis*/ 814 814 ElementVector* StressbalanceAnalysis::CreateDVector(Element* element){/*{{{*/ 815 /*Default, return NULL*/ 815 816 int approximation; 817 element->GetInputValue(&approximation,ApproximationEnum); 818 switch(approximation){ 819 case FSApproximationEnum: 820 return CreateDVectorFS(element); 821 default: 822 return NULL; //no need for doftypes outside of FS approximation 823 } 816 824 return NULL; 825 817 826 }/*}}}*/ 818 827 ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrix(Element* element){/*{{{*/ 819 828 … … 2380 2389 }/*}}}*/ 2381 2390 2382 2391 /*FS*/ 2392 ElementVector* StressbalanceAnalysis::CreateDVectorFS(Element* element){/*{{{*/ 2393 2394 int meshtype,dim; 2395 2396 /*Get problem dimension*/ 2397 element->FindParam(&meshtype,MeshTypeEnum); 2398 switch(meshtype){ 2399 case Mesh2DverticalEnum: dim = 2; break; 2400 case Mesh3DEnum: dim = 3; break; 2401 default: _error_("mesh "<<EnumToStringx(meshtype)<<" not supported yet"); 2402 } 2403 2404 /*Fetch number of nodes and dof for this finite element*/ 2405 int vnumnodes = element->GetNumberOfNodesVelocity(); 2406 int pnumnodes = element->GetNumberOfNodesPressure(); 2407 2408 /*Initialize output vector*/ 2409 ElementVector* de = element->NewElementVector(FSvelocityEnum); 2410 2411 for(int i=0;i<vnumnodes;i++){ 2412 for(int j=0;j<dim;j++) de->values[i*dim+j]=VelocityEnum; 2413 } 2414 for(int i=0;i<pnumnodes;i++){ 2415 de->values[vnumnodes*dim+i]=PressureEnum; 2416 } 2417 2418 return de; 2419 2420 }/*}}}*/ 2383 2421 ElementMatrix* StressbalanceAnalysis::CreateJacobianMatrixFS(Element* element){/*{{{*/ 2384 2422 2385 2423 /*Intermediaries */ -
../trunk-jpl/src/c/modules/SystemMatricesx/SystemMatricesx.cpp
101 101 } 102 102 103 103 /*Create dof vector for stiffness matrix preconditioning*/ 104 for (i=0;i<femmodel->elements->Size();i++){ 105 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 106 element->CreateDVector(df); 104 if(pdf){ 105 for(i=0;i<femmodel->elements->Size();i++){ 106 element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 107 ElementVector* de=analysis->CreateDVector(element); 108 if(de) de->InsertIntoGlobal(df); 109 delete de; 110 } 107 111 } 108 112 109 113 /*Assemble matrices and vector*/ -
../trunk-jpl/src/c/classes/Elements/Element.h
103 103 virtual void Configure(Elements* elements,Loads* loads,Nodes* nodes,Vertices* vertices,Materials* materials,Parameters* parameters)=0; 104 104 virtual void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters)=0; 105 105 virtual void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum)=0; 106 virtual void CreateDVector(Vector<IssmDouble>* df)=0;107 106 virtual void ElementSizes(IssmDouble* phx,IssmDouble* phy,IssmDouble* phz)=0; 108 107 virtual void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure)=0; 109 108 virtual IssmDouble EnthalpyDiffusionParameter(IssmDouble enthalpy,IssmDouble pressure)=0; -
../trunk-jpl/src/c/classes/Elements/Tria.cpp
190 190 return sqrt(2*this->GetArea()); 191 191 } 192 192 /*}}}*/ 193 /*FUNCTION Tria::CreateDVector {{{*/194 void Tria::CreateDVector(Vector<IssmDouble>* df){195 196 /*Nothing done yet*/197 }198 /*}}}*/199 193 /*FUNCTION Tria::ComputeBasalStress {{{*/ 200 194 void Tria::ComputeBasalStress(Vector<IssmDouble>* eps){ 201 195 _error_("Not Implemented yet"); -
../trunk-jpl/src/c/classes/Elements/Tria.h
66 66 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters); 67 67 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 68 68 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum); 69 void CreateDVector(Vector<IssmDouble>* df);70 69 void Delta18oParameterization(void); 71 70 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 72 71 void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure){_error_("not implemented yet");}; -
../trunk-jpl/src/c/classes/Elements/Penta.cpp
378 378 this->inputs->Configure(parameters); 379 379 } 380 380 /*}}}*/ 381 /*FUNCTION Penta::CreateDVector {{{*/382 void Penta::CreateDVector(Vector<IssmDouble>* df){383 384 /*retrieve parameters: */385 ElementVector* De=NULL;386 int analysis_type;387 parameters->FindParam(&analysis_type,AnalysisTypeEnum);388 389 /*Checks in debugging*/390 _assert_(this->nodes && this->material && this->matpar && this->verticalneighbors && this->parameters && this->inputs);391 392 switch(analysis_type){393 #ifdef _HAVE_STRESSBALANCE_394 case StressbalanceAnalysisEnum:395 De=CreateDVectorStressbalanceHoriz();396 break;397 #endif398 }399 400 /*Add to global Vector*/401 if(De){402 De->InsertIntoGlobal(df);403 delete De;404 }405 }406 /*}}}*/407 381 /*FUNCTION Penta::DeepEcho{{{*/ 408 382 void Penta::DeepEcho(void){ 409 383 … … 4475 4449 /*}}}*/ 4476 4450 #endif 4477 4451 4478 #ifdef _HAVE_STRESSBALANCE_4479 /*FUNCTION Penta::CreateDVectorStressbalanceHoriz {{{*/4480 ElementVector* Penta::CreateDVectorStressbalanceHoriz(void){4481 4482 int approximation;4483 inputs->GetInputValue(&approximation,ApproximationEnum);4484 4485 switch(approximation){4486 case FSApproximationEnum:4487 return CreateDVectorStressbalanceFS();4488 default:4489 return NULL; //no need for doftypes outside of FS approximation4490 }4491 }4492 /*}}}*/4493 /*FUNCTION Penta::CreateDVectorStressbalanceFS{{{*/4494 ElementVector* Penta::CreateDVectorStressbalanceFS(void){4495 4496 /*output: */4497 ElementVector* De=NULL;4498 4499 /*Initialize Element vector and return if necessary*/4500 int approximation;4501 inputs->GetInputValue(&approximation,ApproximationEnum);4502 if(approximation!=FSApproximationEnum) return NULL;4503 4504 /*Fetch number of nodes and dof for this finite element*/4505 int vnumnodes = this->NumberofNodesVelocity();4506 int pnumnodes = this->NumberofNodesPressure();4507 4508 De=new ElementVector(nodes,vnumnodes+pnumnodes,this->parameters,FSvelocityEnum);4509 4510 for(int i=0;i<vnumnodes;i++){4511 De->values[i*3+0]=VelocityEnum;4512 De->values[i*3+1]=VelocityEnum;4513 De->values[i*3+2]=VelocityEnum;4514 }4515 for(int i=0;i<pnumnodes;i++){4516 De->values[vnumnodes*3+i]=PressureEnum;4517 }4518 4519 return De;4520 }4521 /*}}}*/4522 #endif4523 4524 4452 #ifdef _HAVE_HYDROLOGY_ 4525 4453 /*FUNCTION Penta::CreateEPLDomainMassMatrix {{{*/ 4526 4454 ElementMatrix* Penta::CreateEPLDomainMassMatrix(void){ -
../trunk-jpl/src/c/classes/Elements/Penta.h
70 70 int FiniteElement(void); 71 71 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters); 72 72 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum); 73 void CreateDVector(Vector<IssmDouble>* df);74 73 void Delta18oParameterization(void); 75 74 void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure); 76 75 Element* GetBasalElement(void); … … 251 250 Tria* SpawnTria(int location); 252 251 IssmDouble StabilizationParameter(IssmDouble u, IssmDouble v, IssmDouble w, IssmDouble diameter, IssmDouble kappa); 253 252 254 #ifdef _HAVE_STRESSBALANCE_255 ElementVector* CreateDVectorStressbalanceHoriz(void);256 ElementVector* CreateDVectorStressbalanceFS(void);257 #endif258 259 253 #ifdef _HAVE_HYDROLOGY_ 260 254 ElementMatrix* CreateEPLDomainMassMatrix(void); 261 255 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max, Node* innode); -
../trunk-jpl/src/c/classes/Elements/Seg.h
68 68 void Configure(Elements* elements,Loads* loads,Nodes* nodesin,Vertices* verticesin,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 69 69 void SetCurrentConfiguration(Elements* elements,Loads* loads,Nodes* nodes,Materials* materials,Parameters* parameters){_error_("not implemented yet");}; 70 70 void SetwiseNodeConnectivity(int* d_nz,int* o_nz,Node* node,bool* flags,int* flagsindices,int set1_enum,int set2_enum){_error_("not implemented yet");}; 71 void CreateDVector(Vector<IssmDouble>* df){_error_("not implemented yet");};72 71 void Delta18oParameterization(void){_error_("not implemented yet");}; 73 72 void ElementSizes(IssmDouble* hx,IssmDouble* hy,IssmDouble* hz){_error_("not implemented yet");}; 74 73 void EnthalpyToThermal(IssmDouble* ptemperature,IssmDouble* pwaterfraction,IssmDouble enthalpy,IssmDouble pressure){_error_("not implemented yet");};
Note:
See TracBrowser
for help on using the repository browser.