Changeset 369
- Timestamp:
- 05/12/09 16:47:58 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/parallel/diagnostic_core_nonlinear.cpp
r365 r369 60 60 loads=fem->loads->Copy(); 61 61 62 /* recover input velocities if present:*/62 /*Initialize ug and ug_old */ 63 63 if (numberofdofspernode>=3)dofs[2]=1;//only keep vz if running with more than 3 dofs per node 64 64 ug=inputs->Get("velocity",&dofs[0],3); 65 66 65 VecDuplicate(ug,&old_ug); 67 66 VecCopy(ug,old_ug); … … 128 127 129 128 //Figure out if convergence is reached. 130 if(count>=2){ 131 VecDuplicate(old_ug,&dug);VecCopy(old_ug,dug); VecAYPX(dug,-1.0,ug); 132 VecNorm(dug,NORM_2,&ndu);VecNorm(old_ug,NORM_2,&nu);VecNorm(dug,NORM_INFINITY,&nduinf); VecFree(&dug); 129 VecDuplicate(old_ug,&dug);VecCopy(old_ug,dug); VecAYPX(dug,-1.0,ug); 130 VecNorm(dug,NORM_2,&ndu);VecNorm(old_ug,NORM_2,&nu);VecNorm(dug,NORM_INFINITY,&nduinf); VecFree(&dug); 133 131 134 //relative criterion 135 if((ndu/nu)<eps_rel){ 136 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: norm(du)/norm(u)=",ndu/nu," < ",eps_rel); 137 converged=1; 138 } 139 else{ 140 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: norm(du)/norm(u)=",ndu/nu," > ",eps_rel); 132 //relative criterion 133 if((ndu/nu)<eps_rel){ 134 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: norm(du)/norm(u)=",ndu/nu," < ",eps_rel); 135 converged=1; 136 } 137 else{ 138 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: norm(du)/norm(u)=",ndu/nu," > ",eps_rel); 139 converged=0; 140 } 141 142 //Absolute criterion (Optional) 143 if (!isnan(eps_abs)){ 144 if ((nduinf*yts)<eps_abs){ 145 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: max(du)=",nduinf*yts," < ",eps_abs); 146 } 147 else{ 148 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: max(du)=",nduinf*yts," > ",eps_abs); 141 149 converged=0; 142 150 } 151 } 143 152 144 //Absolute criterion (Optional) 145 if (!isnan(eps_abs)){ 146 if ((nduinf*yts)<eps_abs){ 147 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: max(du)=",nduinf*yts," < ",eps_abs); 148 } 149 else{ 150 if (debug) _printf_("%s%g%s%g\n"," Convergence criterion: max(du)=",nduinf*yts," > ",eps_abs); 151 converged=0; 152 } 153 } 154 155 //rift convergence 156 if (!constraints_converged) converged=0; 157 } 153 //rift convergence 154 if (!constraints_converged) converged=0; 158 155 159 156 /*Increase count: */
Note:
See TracChangeset
for help on using the changeset viewer.