Changeset 17430
- Timestamp:
- 03/14/14 11:21:54 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/MasstransportAnalysis.cpp
r17333 r17430 36 36 bool isdelta18o; 37 37 bool isgroundingline; 38 bool islevelset; 38 39 39 40 /*Fetch data needed: */ … … 42 43 iomodel->Constant(&smb_model,SurfaceforcingsEnum); 43 44 iomodel->Constant(&isgroundingline,TransientIsgroundinglineEnum); 45 iomodel->Constant(&islevelset,TransientIslevelsetEnum); 44 46 45 47 /*Finite element type*/ … … 84 86 iomodel->FetchDataToInput(elements,MeshElementonbedEnum); 85 87 iomodel->FetchDataToInput(elements,MeshElementonsurfaceEnum); 88 } 89 90 if(islevelset){ 91 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum); 92 if(iomodel->meshtype!=Mesh2DhorizontalEnum) 93 iomodel->FetchDataToInput(elements,MeshVertexonbedEnum); // required for updating active nodes 86 94 } 87 95 … … 748 756 if(islevelset){ 749 757 _printf0_(" Updating active and non-active nodes for MasstransportAnalysis \n"); 750 SetActiveNodesLSMx(femmodel ->elements);758 SetActiveNodesLSMx(femmodel); 751 759 } 752 760 return; -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17420 r17430 122 122 bool control_analysis; 123 123 bool dakota_analysis; 124 bool islevelset; 124 125 125 126 /*Fetch constants needed: */ … … 131 132 iomodel->Constant(&dakota_analysis,QmuIsdakotaEnum); 132 133 iomodel->Constant(&materials_type,MaterialsEnum); 134 iomodel->Constant(&islevelset,TransientIslevelsetEnum); 133 135 134 136 /*return if no processing required*/ … … 203 205 iomodel->FetchDataToInput(elements,LoadingforceYEnum); 204 206 iomodel->FetchDataToInput(elements,DamageDEnum); 205 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum);206 207 207 208 if(iomodel->meshtype==Mesh3DEnum){ … … 221 222 iomodel->FetchDataToInput(elements,PressureEnum,0.); 222 223 if(dakota_analysis)elements->InputDuplicate(PressureEnum,QmuPressureEnum); 224 } 225 if(islevelset){ 226 iomodel->FetchDataToInput(elements,IceMaskNodeActivationEnum); 227 if(iomodel->meshtype!=Mesh2DhorizontalEnum) 228 iomodel->FetchDataToInput(elements,MeshVertexonbedEnum); // required for updating active nodes 223 229 } 224 230 … … 1033 1039 if(islevelset){ 1034 1040 _printf0_(" Updating active and non-active nodes for StressbalanceAnalysis \n"); 1035 SetActiveNodesLSMx(femmodel ->elements);1041 SetActiveNodesLSMx(femmodel); 1036 1042 } 1037 1043 return; … … 2105 2111 ElementMatrix* StressbalanceAnalysis::CreateKMatrixHO(Element* element){/*{{{*/ 2106 2112 2113 /* Check if ice in element */ 2114 if(!element->IsIceInElement()) return NULL; 2115 2107 2116 /*compute all stiffness matrices for this element*/ 2108 2117 ElementMatrix* Ke1=CreateKMatrixHOViscous(element); … … 2116 2125 }/*}}}*/ 2117 2126 ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOViscous(Element* element){/*{{{*/ 2127 2128 /* Check if ice in element */ 2129 if(!element->IsIceInElement()) return NULL; 2118 2130 2119 2131 /*Intermediaries*/ … … 2189 2201 ElementMatrix* StressbalanceAnalysis::CreateKMatrixHOFriction(Element* element){/*{{{*/ 2190 2202 2203 /* Check if ice in element */ 2204 if(!element->IsIceInElement()) return NULL; 2205 2191 2206 if(element->IsFloating() || !element->IsOnBed()) return NULL; 2192 2207 … … 2276 2291 ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/ 2277 2292 2293 /* Check if ice in element */ 2294 if(!element->IsIceInElement()) return NULL; 2295 2278 2296 /*Intermediaries */ 2279 2297 int dim,meshtype; … … 2334 2352 ElementVector* StressbalanceAnalysis::CreatePVectorHO(Element* element){/*{{{*/ 2335 2353 2354 /* Check if ice in element */ 2355 if(!element->IsIceInElement()) return NULL; 2356 2336 2357 /*compute all load vectors for this element*/ 2337 2358 ElementVector* pe1=CreatePVectorHODrivingStress(element); … … 2346 2367 #endif 2347 2368 ElementVector* StressbalanceAnalysis::CreatePVectorHODrivingStress(Element* element){/*{{{*/ 2369 2370 /* Check if ice in element */ 2371 if(!element->IsIceInElement()) return NULL; 2348 2372 2349 2373 /*Intermediaries */ … … 2397 2421 }/*}}}*/ 2398 2422 ElementVector* StressbalanceAnalysis::CreatePVectorHOFront(Element* element){/*{{{*/ 2423 2424 /* Check if ice in element */ 2425 if(!element->IsIceInElement()) return NULL; 2399 2426 2400 2427 /*If no front, return NULL*/ -
issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
r17250 r17430 10 10 #include "../modules.h" 11 11 12 void SetActiveNodesLSMx( Elements* elements){/*{{{*/12 void SetActiveNodesLSMx(FemModel* femmodel){/*{{{*/ 13 13 14 for(int i=0;i<elements->Size();i++){ 14 /* intermediaries */ 15 bool solvein2d=false; 16 int i,in,meshtype,analysis_type; 17 Elements* elements = femmodel->elements; 18 19 /* find parameters */ 20 femmodel->parameters->FindParam(&meshtype,MeshTypeEnum); 21 22 for(i=0;i<elements->Size();i++){ 15 23 Element *element = dynamic_cast<Element*>(elements->GetObjectByOffset(i)); 16 24 int numnodes = element->GetNumberOfNodes(); … … 40 48 } 41 49 42 for(int in=0;in<numnodes;in++){ 50 if(meshtype!=Mesh2DhorizontalEnum){ 51 femmodel->parameters->FindParam(&analysis_type,AnalysisTypeEnum); 52 if( 53 analysis_type==FreeSurfaceBaseAnalysisEnum || 54 analysis_type==MasstransportAnalysisEnum || 55 analysis_type==MeltingAnalysisEnum || 56 analysis_type==L2ProjectionBaseAnalysisEnum || 57 analysis_type==BalancethicknessAnalysisEnum || 58 analysis_type==HydrologyDCInefficientAnalysisEnum || 59 analysis_type==DamageEvolutionAnalysisEnum || 60 analysis_type==HydrologyDCEfficientAnalysisEnum || 61 analysis_type==LevelsetAnalysisEnum || 62 analysis_type==ExtrapolationAnalysisEnum 63 ){ solvein2d=true;} 64 65 if(analysis_type==StressbalanceAnalysisEnum){ 66 bool isSIA,isSSA; 67 femmodel->parameters->FindParam(&isSIA,FlowequationIsSIAEnum); 68 femmodel->parameters->FindParam(&isSSA,FlowequationIsSSAEnum); 69 if(isSIA || isSSA) 70 solvein2d=true; 71 } 72 73 if(solvein2d){ 74 IssmDouble *mask_isonbed = xNew<IssmDouble>(numnodes); 75 element->GetInputListOnNodes(&mask_isonbed[0],MeshVertexonbedEnum); 76 for(in=0;in<numnodes;in++) mask[in]*=mask_isonbed[in]; 77 xDelete<IssmDouble>(mask_isonbed); 78 } 79 } 80 81 for(in=0;in<numnodes;in++){ 43 82 Node* node=element->GetNode(in); 44 83 if(mask[in]==1.){ -
issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.h
r17239 r17430 8 8 #include "../../classes/classes.h" 9 9 10 void SetActiveNodesLSMx( Elements* elements);10 void SetActiveNodesLSMx(FemModel* femmodel); 11 11 void GetMaskOfIceVerticesLSMx(FemModel* femmodel); 12 12 void SetMaskOfIceElement(Vector<IssmDouble>* vec_mask_ice, Element* element);
Note:
See TracChangeset
for help on using the changeset viewer.