Changeset 17250
- Timestamp:
- 02/10/14 15:37:11 (11 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/LevelsetAnalysis.cpp
r17230 r17250 66 66 /*parameters: */ 67 67 bool save_results; 68 69 /* extrapolate */70 Analysis* analysis = new ExtrapolationAnalysis();71 femmodel->parameters->SetParam(VxEnum,ExtrapolationVariableEnum);72 analysis->Core(femmodel);73 delete analysis;74 68 75 69 /*activate formulation: */ … … 165 159 /* Artificial Diffusion */ 166 160 element->ElementSizes(&hx,&hy,&hz); 167 vel=sqrt(vx*vx + vy*vy );161 vel=sqrt(vx*vx + vy*vy) + 1e-14; 168 162 h=sqrt( pow(hx*vx/vel,2) + pow(hy*vy/vel,2) ); //FIXME: is this correct? 169 163 -
issm/trunk-jpl/src/c/analyses/StressbalanceAnalysis.cpp
r17247 r17250 1044 1044 void StressbalanceAnalysis::UpdateConstraints(FemModel* femmodel){/*{{{*/ 1045 1045 /*Default, do nothing*/ 1046 _printf0_(" Updating active and non-active nodes in Femmodel\n");1047 //SetActiveNodesLSMx(femmodel->elements);1046 _printf0_(" Updating active and non-active nodes for StressbalanceAnalysis \n"); 1047 SetActiveNodesLSMx(femmodel->elements); 1048 1048 return; 1049 1049 }/*}}}*/ -
issm/trunk-jpl/src/c/cores/transient_core.cpp
r17236 r17250 150 150 if(islevelset){ 151 151 if(VerboseSolution()) _printf0_(" computing movement of ice boundaries\n"); 152 153 /* extrapolate required variables */ 154 Analysis* extanalysis = new ExtrapolationAnalysis(); 155 int vars[2] = {VxEnum, VyEnum}; 156 for(int iv=0;iv<2;iv++){ 157 femmodel->parameters->SetParam(vars[iv],ExtrapolationVariableEnum); 158 extanalysis->Core(femmodel); 159 } 160 delete extanalysis; 161 152 162 analysis = new LevelsetAnalysis(); 153 163 analysis->Core(femmodel); 154 164 delete analysis; 165 166 /* update vertices included for next calculation */ 167 GetMaskOfIceVerticesLSMx(femmodel); 155 168 } 156 169 -
issm/trunk-jpl/src/c/modules/SetActiveNodesLSMx/SetActiveNodesLSMx.cpp
r17249 r17250 16 16 int numnodes = element->GetNumberOfNodes(); 17 17 IssmDouble *mask = xNew<IssmDouble>(numnodes); 18 element->GetInputListOnNodes(&mask[0],IceMaskNodeActivationEnum); 19 18 // include switch for elements with multiple different sets of nodes 19 switch(element->GetElementType()){ 20 case MINIEnum:case TaylorHoodEnum:{ 21 Input* input=element->GetInput(IceMaskNodeActivationEnum); 22 if(!input) _error_("Input " << EnumToStringx(IceMaskNodeActivationEnum) << " not found in element"); 23 24 /* Start looping on the number of vertices: */ 25 Gauss* gauss=element->NewGauss(); 26 for(int iv=0;iv<element->NumberofNodesVelocity();iv++){ 27 gauss->GaussNode(element->VelocityInterpolation(),iv); 28 input->GetInputValue(&mask[iv],gauss); 29 } 30 for(int iv=0;iv<element->NumberofNodesPressure();iv++){ 31 gauss->GaussNode(element->PressureInterpolation(),iv); 32 input->GetInputValue(&mask[element->NumberofNodesVelocity()+iv],gauss); 33 } 34 delete gauss; 35 break; 36 } 37 default: 38 element->GetInputListOnNodes(&mask[0],IceMaskNodeActivationEnum); 39 break; 40 } 41 20 42 for(int in=0;in<numnodes;in++){ 21 43 Node* node=element->GetNode(in); … … 33 55 void GetMaskOfIceVerticesLSMx(FemModel* femmodel){/*{{{*/ 34 56 57 /* Intermediaries */ 58 int i; 35 59 /*Initialize vector with number of vertices*/ 36 60 int numvertices=femmodel->vertices->NumberOfVertices(); 37 61 Vector<IssmDouble>* vec_mask_ice=new Vector<IssmDouble>(numvertices); //vertices that have ice at next time step 38 62 for(i=0;i<numvertices;i++){ 63 vec_mask_ice->SetValue(i,0.,INS_VAL); 64 } 39 65 /*Fill vector with values: */ 40 for(i nt i=0;i<femmodel->elements->Size();i++){66 for(i=0;i<femmodel->elements->Size();i++){ 41 67 Element* element=dynamic_cast<Element*>(femmodel->elements->GetObjectByOffset(i)); 42 68 SetMaskOfIceElement(vec_mask_ice, element);
Note:
See TracChangeset
for help on using the changeset viewer.