Changeset 1820 for issm/trunk/src/c/parallel/transient.cpp
- Timestamp:
- 08/24/09 17:44:24 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk/src/c/parallel/transient.cpp
r1719 r1820 26 26 int qmu_analysis=0; 27 27 28 /* Fem models: */29 FemModel femmodels[8];28 /*Model: */ 29 Model* model=NULL; 30 30 int dim=-1; 31 31 … … 65 65 fid=pfopen(inputfilename,"rb"); 66 66 67 /*Initialize model structure: */ 68 model=new Model(); 69 67 70 _printf_("read and create finite element model:\n"); 68 71 _printf_("\n reading diagnostic horiz model data:\n"); 69 CreateFemModel( &femmodels[0],fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());72 CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum()); 70 73 _printf_("\n reading diagnostic vert model data:\n"); 71 CreateFemModel( &femmodels[1],fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());74 CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum()); 72 75 _printf_("\n reading diagnostic stokes model data:\n"); 73 CreateFemModel( &femmodels[2],fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());76 CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum()); 74 77 _printf_("\n reading diagnostic hutter model data:\n"); 75 CreateFemModel( &femmodels[3],fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());78 CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum()); 76 79 _printf_("\n reading surface and bed slope computation model data:\n"); 77 CreateFemModel( &femmodels[4],fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());80 CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum()); 78 81 _printf_("\n reading prognositc model data:\n"); 79 CreateFemModel( &femmodels[5],fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());82 CreateFemModel(model->Prognostic(),fid,PrognosticAnalysisEnum(),NoneAnalysisEnum()); 80 83 81 84 /*Do we run in 3d?, in which case we need thermal and melting also:*/ 82 femmodels[0].parameters->FindParam((void*)&dim,"dim");85 model->DiagnosticHorizontal()->parameters->FindParam((void*)&dim,"dim"); 83 86 if(dim==3){ 84 87 _printf_("read and create thermal finite element model:\n"); 85 CreateFemModel( &femmodels[6],fid,ThermalAnalysisEnum(),TransientAnalysisEnum());88 CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),TransientAnalysisEnum()); 86 89 _printf_("read and create melting finite element model:\n"); 87 CreateFemModel( &femmodels[7],fid,MeltingAnalysisEnum(),TransientAnalysisEnum());90 CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),TransientAnalysisEnum()); 88 91 } 89 92 90 93 _printf_("initialize inputs:\n"); 91 94 inputs=new ParameterInputs; 92 femmodels[5].parameters->FindParam((void*)&numberofnodes,"numberofnodes");95 model->Thermal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes"); 93 96 94 femmodels[5].parameters->FindParam((void*)&u_g,"u_g");97 model->Thermal()->parameters->FindParam((void*)&u_g,"u_g"); 95 98 inputs->Add("velocity",u_g,3,numberofnodes); 96 99 97 femmodels[5].parameters->FindParam((void*)&m_g,"m_g");100 model->Thermal()->parameters->FindParam((void*)&m_g,"m_g"); 98 101 inputs->Add("melting",m_g,1,numberofnodes); 99 102 100 femmodels[5].parameters->FindParam((void*)&a_g,"a_g");103 model->Thermal()->parameters->FindParam((void*)&a_g,"a_g"); 101 104 inputs->Add("accumulation",a_g,1,numberofnodes); 102 105 103 femmodels[5].parameters->FindParam((void*)&dt,"dt");104 femmodels[5].parameters->FindParam((void*)&yts,"yts");106 model->Thermal()->parameters->FindParam((void*)&dt,"dt"); 107 model->Thermal()->parameters->FindParam((void*)&yts,"yts"); 105 108 inputs->Add("dt",dt*yts); 106 109 … … 109 112 110 113 /*are we running the solution sequence, or a qmu wrapper around it? : */ 111 femmodels[5].parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");114 model->Thermal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis"); 112 115 if(!qmu_analysis){ 113 116 114 117 /*run diagnostic analysis: */ 115 118 _printf_("call computational core:\n"); 116 transient_core(results, femmodels,inputs);119 transient_core(results,model,inputs); 117 120 } 118 121 else{ … … 121 124 122 125 #ifdef _HAVE_DAKOTA_ 123 Qmux( &femmodels[0],inputs,TransientAnalysisEnum(),NoneAnalysisEnum());126 Qmux(model,inputs,TransientAnalysisEnum(),NoneAnalysisEnum()); 124 127 #else 125 128 throw ErrorException(__FUNCT__," Dakota not present, cannot do qmu!"); … … 132 135 133 136 _printf_("process results:\n"); 134 ProcessResults(&results, &femmodels[0],TransientAnalysisEnum());137 ProcessResults(&results,model,TransientAnalysisEnum()); 135 138 136 139 _printf_("write results to disk:\n"); … … 138 141 139 142 _printf_("write lock file:\n"); 140 femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");143 model->DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock"); 141 144 if (waitonlock){ 142 145 WriteLockFile(lockname);
Note:
See TracChangeset
for help on using the changeset viewer.