Changeset 2033
- Timestamp:
- 08/27/09 17:15:17 (16 years ago)
- Location:
- issm/trunk/src/c/parallel
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/parallel/convergence.cpp
r1881 r2033 67 67 VecNorm(pf,NORM_2,&nF); 68 68 res=nKUoldF/nF; 69 if (isnan(res)) throw ErrorException(__FUNCT__,exprintf("mechanical equilibrium convergence criterion is NaN! ")); 69 if (isnan(res)){ 70 PetscSynchronizedPrintf(MPI_COMM_WORLD,"norm nf %lf \n",nF); 71 PetscSynchronizedFlush(MPI_COMM_WORLD); 72 73 PetscSynchronizedPrintf(MPI_COMM_WORLD,"norm kuold %lf \n",nKUoldF); 74 PetscSynchronizedFlush(MPI_COMM_WORLD); 75 throw ErrorException(__FUNCT__,exprintf("mechanical equilibrium convergence criterion is NaN! ")); 76 } 70 77 71 78 //clean up … … 89 96 VecDuplicate(old_uf,&duf);VecCopy(old_uf,duf); VecAYPX(duf,-1.0,uf); 90 97 VecNorm(duf,NORM_2,&ndu); VecNorm(old_uf,NORM_2,&nu); 98 91 99 if (isnan(ndu) || isnan(nu)) throw ErrorException(__FUNCT__,exprintf("convergence criterion is NaN! ")); 92 100 -
issm/trunk/src/c/parallel/gradjcompute_core.cpp
r2015 r2033 24 24 int sub_analysis_type; 25 25 int numberofnodes; 26 int control_steady; 26 27 int numberofdofspernode; 27 28 char* solverstring=NULL; … … 54 55 femmodel->parameters->FindParam((void*)&analysis_type,"analysis_type"); 55 56 femmodel->parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type"); 57 femmodel->parameters->FindParam((void*)&control_steady,"control_steady"); 56 58 femmodel->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 57 59 femmodel->parameters->FindParam((void*)&numberofdofspernode,"numberofdofspernode"); … … 95 97 } 96 98 97 if( analysis_type==SteadystateAnalysisEnum()){99 if(control_steady){ 98 100 diagnostic_results=new DataSet(ResultsEnum()); 99 101 diagnostic_core(diagnostic_results,model, inputs); -
issm/trunk/src/c/parallel/objectivefunctionC.cpp
r2016 r2033 41 41 int analysis_type; 42 42 int sub_analysis_type; 43 int control_steady; 43 44 Vec u_g=NULL; 44 45 Vec u_g_full=NULL; … … 71 72 femmodel->parameters->FindParam((void*)&analysis_type,"analysis_type"); 72 73 femmodel->parameters->FindParam((void*)&sub_analysis_type,"sub_analysis_type"); 74 femmodel->parameters->FindParam((void*)&control_steady,"control_steady"); 73 75 femmodel->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 74 76 femmodel->parameters->FindParam((void*)&numberofdofspernode,"numberofdofspernode"); … … 88 90 inputs->Add(control_type,param_g_copy,1,numberofnodes); 89 91 90 if ( analysis_type==DiagnosticAnalysisEnum()){92 if (control_steady==0){ 91 93 //Run diagnostic with updated parameters. 92 94 diagnostic_core_nonlinear(&u_g,NULL,NULL,NULL,femmodel,inputs,DiagnosticAnalysisEnum(),sub_analysis_type); 93 95 VecToMPISerial(&u_g_double,u_g); VecFree(&u_g); 96 inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes); 94 97 } 95 98 else{ … … 102 105 delete results_steadystate; 103 106 107 VecToMPISerial(&u_g_double,u_g); VecFree(&u_g); 108 if(!isstokes){ 109 inputs->Add("velocity",u_g_double,3,numberofnodes); 110 } 111 else{ 112 inputs->Add("velocity",u_g_double,4,numberofnodes); 113 } 104 114 //extract the correct number of dofs (3 or 4) 105 VecDuplicatePatch(&u_g_full,u_g);VecFree(&u_g); 106 if(!isstokes){ 107 xfree((void**)& dofset);dofset=dofsetgen(2,dofs01,3,numberofnodes*3); VecPartition(&u_g, u_g_full, dofset, numberofnodes*2); 108 } 109 VecFree(&u_g_full); 115 // VecDuplicatePatch(&u_g_full,u_g);VecFree(&u_g); 116 // if(!isstokes){ 117 // xfree((void**)& dofset); 118 // dofset=dofsetgen(2,dofs01,3,numberofnodes*3); 119 // VecPartition(&u_g, u_g_full, dofset, numberofnodes*2); 120 // } 121 // VecFree(&u_g_full); 122 // inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes); 110 123 } 111 112 inputs->Add("velocity",u_g_double,numberofdofspernode,numberofnodes);113 124 114 125 //Compute misfit for this velocity field. -
issm/trunk/src/c/parallel/steadystate.cpp
r2020 r2033 30 30 /*Model: */ 31 31 Model* model=NULL; 32 FemModel* fem_dh=NULL; 33 FemModel* fem_ds=NULL; 32 34 33 35 /*Results: */ … … 122 124 } 123 125 else{ 126 /*change control_steady to 1 to know we are doing steadystate*/ 127 fem_dh=model->GetFormulation(DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 128 fem_ds=model->GetFormulation(DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 129 param=(Param*)fem_dh->parameters->FindParamObject("control_steady"); 130 param->SetInteger(1); 131 param=(Param*)fem_ds->parameters->FindParamObject("control_steady"); 132 param->SetInteger(1); 124 133 /*run control analysis: */ 125 134 _printf_("call computational core:\n");
Note:
See TracChangeset
for help on using the changeset viewer.