Changeset 15234
- Timestamp:
- 06/10/13 18:22:38 (12 years ago)
- Location:
- issm/trunk-jpl/src/c
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/classes/Elements/Tria.cpp
r15230 r15234 6304 6304 /*FUNCTION Tria::GetSolutionFromInputsHydrologyShreve{{{*/ 6305 6305 void Tria::GetSolutionFromInputsHydrologyShreve(Vector<IssmDouble>* solution){ 6306 6307 6306 const int numdof=NDOF1*NUMVERTICES; 6308 6307 … … 6498 6497 /*Free ressources:*/ 6499 6498 xDelete<int>(doflist); 6499 6500 6500 } 6501 6501 /*}}}*/ -
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r15223 r15234 108 108 109 109 /*Second layer*/ 110 if(!isefficientlayer) break; 111 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum); 112 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum); 113 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum); 114 femmodel->UpdateConstraintsx(); 115 femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum); 116 eplconverged = false; 117 /*Iteration on the EPL layer*/ 118 for(;;){ 119 femmodel->HydrologyTransferx(); 120 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL); 121 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum); 122 Reduceloadx(pf,Kfs,ys); delete Kfs; 123 delete uf; 124 Solverx(&uf, Kff, pf,old_uf, df, femmodel->parameters); 125 delete old_uf; old_uf=uf->Duplicate(); 126 if(eplcount>1) delete ug_epl; 127 delete Kff;delete pf; 128 delete df; 129 Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys; 130 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl); 131 ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 132 133 if (!eplconverged){ 134 if(VerboseConvergence()) _printf0_(" #unstable constraints = " << num_unstable_constraints << "\n"); 135 if(num_unstable_constraints==0) eplconverged = true; 136 if (eplcount>=hydro_maxiter){ 137 _error_(" maximum number of EPL iterations (" << hydro_maxiter << ") exceeded"); 138 } 139 } 140 eplcount++; 141 142 if(eplconverged){ 143 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum); 144 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum); 110 if(isefficientlayer){ 111 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum); 112 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum); 113 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum); 114 femmodel->UpdateConstraintsx(); 115 femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum); 116 eplconverged = false; 117 /*Iteration on the EPL layer*/ 118 for(;;){ 119 femmodel->HydrologyTransferx(); 120 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL); 121 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum); 122 Reduceloadx(pf,Kfs,ys); delete Kfs; 123 delete uf; 124 Solverx(&uf, Kff, pf,old_uf, df, femmodel->parameters); 125 delete old_uf; old_uf=uf->Duplicate(); 126 if(eplcount>1) delete ug_epl; 127 delete Kff;delete pf; 128 delete df; 129 Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys; 145 130 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl); 146 break; 147 } 148 } 149 131 ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); 132 133 if (!eplconverged){ 134 if(VerboseConvergence()) _printf0_(" #unstable constraints = " << num_unstable_constraints << "\n"); 135 if(num_unstable_constraints==0) eplconverged = true; 136 if (eplcount>=hydro_maxiter){ 137 _error_(" maximum number of EPL iterations (" << hydro_maxiter << ") exceeded"); 138 } 139 } 140 eplcount++; 141 142 if(eplconverged){ 143 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum); 144 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum); 145 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl); 146 break; 147 } 148 } 149 } 150 150 /*System convergence check*/ 151 151 if(!hydroconverged){ … … 159 159 if (!isefficientlayer){ 160 160 if ((ndu_sed/nu_sed)<eps_hyd){ 161 if(VerboseConvergence()) _printf0_(setw(50) << left << " Converged ");161 if(VerboseConvergence()) _printf0_(setw(50) << left << " Converged \n"); 162 162 hydroconverged=true; 163 163 } … … 177 177 if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/ 178 178 if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<eps_hyd){ 179 if (VerboseConvergence()) _printf0_(setw(50) << left << " Converged ");179 if (VerboseConvergence()) _printf0_(setw(50) << left << " Converged \n"); 180 180 hydroconverged=true; 181 181 } … … 195 195 if(hydroconverged)break; 196 196 } 197 198 197 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_sed); 199 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);200 198 if(isefficientlayer)InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl); 199 201 200 /*Free ressources: */ 202 201 delete ug_epl;
Note:
See TracChangeset
for help on using the changeset viewer.