Changeset 23528
- Timestamp:
- 12/10/18 04:07:14 (6 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp
r23387 r23528 653 653 }/*}}}*/ 654 654 655 void HydrologyDCEfficientAnalysis::HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter,Element* element){655 void HydrologyDCEfficientAnalysis::HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, Element* element){ 656 656 657 657 bool active_element; … … 709 709 } 710 710 } 711 if (old_active[i]==0.){711 else if (old_active[i]==0.){ 712 712 /*Activate if we have a residual from sediment*/ 713 713 if(residual[i]>0.){ -
issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.h
r21468 r23528 1 /*! \file HydrologyDCEfficientAnalysis.h 1 /*! \file HydrologyDCEfficientAnalysis.h 2 2 * \brief: header file for generic external result object 3 3 */ … … 22 22 void InitZigZagCounter(FemModel* femmodel); 23 23 void ResetCounter(FemModel* femmodel); 24 24 25 25 /*Finite element Analysis*/ 26 26 void Core(FemModel* femmodel); … … 40 40 IssmDouble EplStoring(Element* element,Gauss* gauss, Input* epl_thick_input, Input* epl_head_input, Input* base_input); 41 41 IssmDouble EplTransmitivity(Element* element,Gauss* gauss, Input* epl_thick_input, Input* epl_head_input, Input* base_input); 42 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, int* eplzigzag_counter,Element* element);42 void HydrologyEPLGetMask(Vector<IssmDouble>* vec_mask, Vector<IssmDouble>* recurence, Element* element); 43 43 void HydrologyEPLGetActive(Vector<IssmDouble>* active_vec, Element* element); 44 44 void GetHydrologyDCInefficientHmax(IssmDouble* ph_max,Element* element, Node* innode); -
issm/trunk-jpl/src/c/classes/FemModel.cpp
r23522 r23528 215 215 216 216 /*Checks in debugging mode*/ 217 _assert_(this->analysis_type_list); 217 _assert_(this->analysis_type_list); 218 218 219 219 /*Find analysis in list*/ … … 929 929 if(profiler->Used(ESACORE)) _printf0_(" "<<setw(40)<<left<<"ESA core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(ESACORE) << " sec\n"); 930 930 if(profiler->Used(SLRCORE)) _printf0_(" "<<setw(40)<<left<<"SLR core elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(SLRCORE) << " sec\n"); 931 if(profiler->Used(MPISERIAL)) _printf0_(" "<<setw(40)<<left<<"MPISERIAL elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(MPISERIAL) << " sec\n"); 932 931 if(profiler->Used(MPISERIAL)) _printf0_(" "<<setw(40)<<left<<"MPISERIAL elapsed time:"<<setw(7)<<setprecision(6)<<profiler->TotalTime(MPISERIAL) << " sec\n"); 932 933 933 /*Add to results: */ 934 934 results->AddObject(new GenericExternalResult<IssmDouble>(results->Size()+1, ProfilingSolutionTimeEnum, solution_time)); … … 1188 1188 1189 1189 /*Update signed distance*/ 1190 _assert_(vertex->lid<vertices->Size()); 1190 _assert_(vertex->lid<vertices->Size()); 1191 1191 distances[vertex->lid] = sqrt(dmin); 1192 1192 } … … 2539 2539 2540 2540 int index=AnalysisIndex(config_type); 2541 _assert_(this->analysis_type_list[index]==config_type); 2541 _assert_(this->analysis_type_list[index]==config_type); 2542 2542 2543 2543 /*start module: */ … … 2719 2719 /*Finally: interpolate all inputs and insert them into the new elements.*/ 2720 2720 this->InterpolateInputs(new_vertices,new_elements); 2721 2721 2722 2722 /*Delete old structure and set new pointers*/ 2723 2723 delete this->vertices; this->vertices = new_vertices; … … 3383 3383 /*}}}*/ 3384 3384 void FemModel::GetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements){/*{{{*/ 3385 3386 int amrtype; 3385 3386 int amrtype; 3387 3387 this->parameters->FindParam(&amrtype,AmrTypeEnum); 3388 3388 3389 3389 switch(amrtype){ 3390 3390 … … 3401 3401 }/*}}}*/ 3402 3402 void FemModel::SetMesh(int** elementslist, IssmDouble** x, IssmDouble** y, int* numberofvertices, int* numberofelements){/*{{{*/ 3403 3404 int amrtype; 3403 3404 int amrtype; 3405 3405 this->parameters->FindParam(&amrtype,AmrTypeEnum); 3406 3406 3407 3407 switch(amrtype){ 3408 3408 … … 3566 3566 } 3567 3567 } 3568 3568 3569 3569 /*Cleanup*/ 3570 3570 xDelete<IssmDouble>(spc); … … 4644 4644 for (int i=0;i<elements->Size();i++){ 4645 4645 Element* element=xDynamicCast<Element*>(elements->GetObjectByOffset(i)); 4646 effanalysis->HydrologyEPLGetMask(mask,recurence,e plzigzag_counter,element);4646 effanalysis->HydrologyEPLGetMask(mask,recurence,element); 4647 4647 } 4648 4648 /*check for changes and increment zigzag counter, change the mask if necessary*/ … … 4652 4652 Node* node=xDynamicCast<Node*>(nodes->GetObjectByOffset(i)); 4653 4653 if(serial_rec[node->Sid()]==1.)eplzigzag_counter[node->Lid()] ++; 4654 if(eplzigzag_counter[node->Lid()]>eplflip_lock & eplflip_lock!=0){4654 if(eplzigzag_counter[node->Lid()]>eplflip_lock && eplflip_lock!=0){ 4655 4655 mask->SetValue(node->Sid(),old_active[node->Sid()],INS_VAL); 4656 4656 } … … 5146 5146 Vector<IssmDouble>* vminvertexdistance = new Vector<IssmDouble>(numberofvertices); 5147 5147 IssmDouble* pminvertexdistance = NULL; 5148 IssmDouble* levelset_points = NULL; 5148 IssmDouble* levelset_points = NULL; 5149 5149 IssmDouble x,y; 5150 5150 IssmDouble threshold,resolution; … … 5174 5174 sid= vertex->Sid(); 5175 5175 minvertexdistance=INFINITY; 5176 5176 5177 5177 /*Find the minimum vertex distance*/ 5178 5178 for(int j=0;j<numberofpoints;j++){ … … 5181 5181 } 5182 5182 /*Now, insert in the vector*/ 5183 vminvertexdistance->SetValue(sid,minvertexdistance,INS_VAL); 5183 vminvertexdistance->SetValue(sid,minvertexdistance,INS_VAL); 5184 5184 } 5185 5185 /*Assemble*/ … … 5283 5283 else hmaxvertices[vid]=min(max(maxlength[i]/2.,resolution),hmaxvertices[vid]);//Try first dividing the element 5284 5284 } 5285 } 5285 } 5286 5286 else { 5287 5287 /*Try unrefine the element*/ … … 5295 5295 } 5296 5296 } 5297 } 5297 } 5298 5298 } 5299 5299 } … … 5306 5306 /*}}}*/ 5307 5307 void FemModel::GetVerticeDistanceToZeroLevelSet(IssmDouble** pverticedistance,int levelset_type){/*{{{*/ 5308 5308 5309 5309 //itapopo esse metodo pode ser deletado 5310 5310 … … 5325 5325 IssmDouble* x = NULL; 5326 5326 IssmDouble* y = NULL; 5327 int* elementslist = NULL; 5327 int* elementslist = NULL; 5328 5328 int numberofpoints; 5329 5329 IssmDouble distance; … … 5382 5382 this->amr->ExecuteRefinement(gl_distance,if_distance,deviatoricerror,thicknesserror, 5383 5383 &newdatalist,&newxylist,&newelementslist); 5384 if(newdatalist[0]<=0 || newdatalist[1]<=0) _error_("Error in the ReMeshNeopz."); 5384 if(newdatalist[0]<=0 || newdatalist[1]<=0) _error_("Error in the ReMeshNeopz."); 5385 5385 } 5386 5386 … … 5459 5459 this->parameters->FindParam(&this->amr->deviatoricerror_groupthreshold,AmrDeviatoricErrorGroupThresholdEnum); 5460 5460 this->parameters->FindParam(&this->amr->deviatoricerror_maximum,AmrDeviatoricErrorMaximumEnum); 5461 5461 5462 5462 /*Initialize NeoPZ data structure*/ 5463 5463 this->amr->SetMesh(&elements,&x,&y,&numberofvertices,&numberofelements); -
issm/trunk-jpl/src/c/cores/hydrology_core.cpp
r23370 r23528 50 50 /*intermediary: */ 51 51 bool isefficientlayer; 52 int step,hydroslices;52 int hydrostep,hydroslices; 53 53 IssmDouble time,init_time,hydrotime,yts; 54 54 IssmDouble dt,hydrodt; … … 56 56 femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum); 57 57 femmodel->parameters->FindParam(&dt,TimesteppingTimeStepEnum); 58 femmodel->parameters->FindParam(&step,StepEnum);59 58 femmodel->parameters->FindParam(&time,TimeEnum); 60 59 femmodel->parameters->FindParam(&hydroslices,HydrologyStepsPerStepEnum); … … 68 67 hydrotime=init_time; 69 68 hydrodt=dt/hydroslices; //computing hydro dt from dt and a divider 69 hydrostep=0; 70 70 femmodel->parameters->AddObject(new DoubleParam(HydrologydtEnum,hydrodt)); 71 71 if(hydroslices>1){ … … 77 77 femmodel->InitTransientOutputx(&stackedinput[0],4); 78 78 while(hydrotime<time-(yts*DBL_EPSILON)){ //loop on hydro dts 79 hydrostep+=1; 79 80 hydrotime+=hydrodt; 81 if(VerboseSolution()) _printf0_("hydro iteration " << hydrostep << "/" << hydroslices << " time [yr]: " << setprecision(4) << hydrotime/yts << " (time step: " << hydrodt/yts << ")\n"); 82 80 83 /*save preceding timestep*/ 81 84 InputDuplicatex(femmodel,SedimentHeadHydrostepEnum,SedimentHeadOldEnum);
Note:
See TracChangeset
for help on using the changeset viewer.