Changeset 16963
- Timestamp:
- 11/27/13 08:35:18 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp
r16960 r16963 58 58 /*Retrieve inputs as the initial state for the non linear iteration*/ 59 59 GetSolutionFromInputsx(&ug_sed,femmodel); 60 61 //test 62 GetSolutionFromInputsx(&uf_sed,femmodel);_assert_(uf_sed); 60 Reducevectorgtofx(&uf_sed, ug_sed, femmodel->nodes,femmodel->parameters); 63 61 64 62 if(isefficientlayer) { 65 63 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum); 66 64 GetSolutionFromInputsx(&ug_epl,femmodel); 67 68 //test69 GetSolutionFromInputsx(&uf_epl,femmodel);_assert_(uf_epl);70 65 71 66 /*Initialize the transfer input*/ … … 86 81 87 82 //test 88 uf_sed_sub_iter=uf_sed->Duplicate();89 uf_sed->Copy(uf_sed_sub_iter);83 /* uf_sed_sub_iter=uf_sed->Duplicate(); */ 84 /* uf_sed->Copy(uf_sed_sub_iter); */ 90 85 91 86 if(isefficientlayer){ … … 109 104 sedconverged=false; 110 105 for(;;){ 106 uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter); 107 uf_sed->Copy(uf_sed_sub_iter); 111 108 SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel); 112 109 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum); … … 115 112 Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters); 116 113 delete Kff; delete pf; delete df; 117 /* delete uf_sed_sub_iter; */118 /* uf_sed_sub_iter=uf_sed->Duplicate(); */119 /* uf_sed->Copy(uf_sed_sub_iter); */120 114 delete ug_sed; 121 115 Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys; … … 133 127 sedcount++; 134 128 135 //testing stuff136 129 if(sedconverged){ 137 130 sedconverged=false; 138 131 duf=uf_sed_sub_iter->Duplicate();_assert_(duf); 139 uf_sed_sub_iter->Copy(duf); _assert_(uf_sed_sub_iter);140 duf->AYPX(uf_sed,-1.0); _assert_(duf);132 uf_sed_sub_iter->Copy(duf); 133 duf->AYPX(uf_sed,-1.0); 141 134 ndu_sed=duf->Norm(NORM_TWO); 135 delete duf; 142 136 nu_sed=uf_sed_sub_iter->Norm(NORM_TWO); 143 137 if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("convergence criterion is NaN!"); 144 138 if (ndu_sed==0.0 && nu_sed==0.0) nu_sed=1.0e-6; /*Hacking the case where the EPL is used but empty*/ 145 139 if((ndu_sed/nu_sed)<eps_hyd){ 146 if(VerboseConvergence()) _printf0_(" # Inner sediment convergence achieve \n");140 if(VerboseConvergence()) _printf0_(" # Inner sediment convergence achieve \n"); 147 141 sedconverged=true; 148 142 } 149 delete duf;150 143 } 151 144 delete uf_sed_sub_iter; 152 uf_sed_sub_iter=uf_sed->Duplicate();_assert_(uf_sed_sub_iter);153 uf_sed->Copy(uf_sed_sub_iter);_assert_(uf_sed);154 //end of the crap155 145 156 146 if(sedconverged){ … … 166 156 InputUpdateFromSolutionx(femmodel,ug_sed); 167 157 InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum); 168 delete uf_sed_sub_iter;169 158 break; 170 159 } … … 199 188 //updating mask after the computation of the epl thickness (Allow to close too thin EPL) 200 189 femmodel->HydrologyEPLupdateDomainx(); 201 190 ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter); 191 ug_epl->Copy(ug_epl_sub_iter);_assert_(ug_epl); 192 202 193 SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel); 203 194 CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum); … … 214 205 ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel); 215 206 femmodel->HydrologyEPLupdateDomainx(); 216 /* /\*Updating Nodal Mask*\/ */217 /* HydrologyDCInefficientAnalysis* analysis = new HydrologyDCInefficientAnalysis(); */218 /* analysis->ElementizeEplMask(femmodel); */219 /* delete analysis; */220 /* femmodel->HydrologyTransferx(); */221 207 222 208 if (!eplconverged){ … … 231 217 eplcount++; 232 218 233 //testing stuff 219 234 220 if(eplconverged){ 235 221 eplconverged=false; 236 222 dug=ug_epl_sub_iter->Duplicate();_assert_(dug); 237 ug_epl_sub_iter->Copy(dug); _assert_(ug_epl_sub_iter);223 ug_epl_sub_iter->Copy(dug); 238 224 dug->AYPX(ug_epl,-1.0); 239 225 ndu_epl=dug->Norm(NORM_TWO); … … 246 232 } 247 233 delete ug_epl_sub_iter; 248 ug_epl_sub_iter=ug_epl->Duplicate();_assert_(ug_epl_sub_iter);249 ug_epl->Copy(ug_epl_sub_iter);_assert_(ug_epl);250 //end of the crap251 234 252 235 if(eplconverged){ … … 261 244 InputUpdateFromConstantx(femmodel,sediment_kmax,MeltingOffsetEnum); 262 245 InputUpdateFromSolutionx(femmodel,ug_epl); 263 delete ug_epl_sub_iter;264 246 break; 265 247 } … … 271 253 if(!hydroconverged){ 272 254 //compute norm(du)/norm(u) 273 dug=ug_sed ->Duplicate(); _assert_(dug);255 dug=ug_sed_main_iter->Duplicate(); _assert_(dug); 274 256 ug_sed_main_iter->Copy(dug); 275 257 dug->AYPX(ug_sed,-1.0); … … 292 274 } 293 275 else{ 294 dug=ug_epl ->Duplicate();_assert_(dug);295 ug_epl_main_iter->Copy(dug); _assert_(ug_epl_main_iter);276 dug=ug_epl_main_iter->Duplicate();_assert_(dug); 277 ug_epl_main_iter->Copy(dug); 296 278 dug->AYPX(ug_epl,-1.0); 297 279 ndu_epl=dug->Norm(NORM_TWO);
Note:
See TracChangeset
for help on using the changeset viewer.