Changeset 1816


Ignore:
Timestamp:
08/24/09 17:42:59 (16 years ago)
Author:
Eric.Larour
Message:

Brachning back from issm.controlstatic, by hand

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/parallel/thermalstatic.cpp

    r1805 r1816  
    2626        int   qmu_analysis=0;
    2727
    28         /*Fem models : */
    29         FemModel femmodels[7];
     28        /*Model: */
     29        Model* model=NULL;
    3030
    3131        /*Results: */
     
    6161        fid=pfopen(inputfilename,"rb");
    6262
     63        /*Initialize model structure: */
     64        model=new Model();
     65
    6366        _printf_("read and create finite element model:\n");
    6467        _printf_("\n   reading diagnostic horiz model data:\n");
    65         CreateFemModel(&femmodels[0],fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     68        CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
    6669        _printf_("\n   reading diagnostic vert model data:\n");
    67         CreateFemModel(&femmodels[1],fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
     70        CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
    6871        _printf_("\n   reading diagnostic stokes model data:\n");
    69         CreateFemModel(&femmodels[2],fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
     72        CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    7073        _printf_("\n   reading diagnostic hutter model data:\n");
    71         CreateFemModel(&femmodels[3],fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
     74        CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    7275        _printf_("\n   reading surface and bed slope computation model data:\n");
    73         CreateFemModel(&femmodels[4],fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());
     76        CreateFemModel(model->Slope(),fid,SlopeComputeAnalysisEnum(),NoneAnalysisEnum());
    7477        _printf_("\n   read and create thermal finite element model:\n");
    75         CreateFemModel(&femmodels[5],fid,ThermalAnalysisEnum(),SteadyAnalysisEnum());
     78        CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),SteadyAnalysisEnum());
    7679        _printf_("\n   read and create melting finite element model:\n");
    77         CreateFemModel(&femmodels[6],fid,MeltingAnalysisEnum(),SteadyAnalysisEnum());
     80        CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),SteadyAnalysisEnum());
    7881
    7982        _printf_("initialize inputs:\n");
    80         femmodels[0].parameters->FindParam((void*)&u_g_initial,"u_g");
    81         femmodels[0].parameters->FindParam((void*)&numberofnodes,"numberofnodes");
    82         femmodels[5].parameters->FindParam((void*)&dt,"dt");
    83         femmodels[5].parameters->FindParam((void*)&p_g_initial,"p_g");
     83        model->DiagnosticHorizontal()->parameters->FindParam((void*)&u_g_initial,"u_g");
     84        model->DiagnosticHorizontal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
     85        model->Thermal()->parameters->FindParam((void*)&dt,"dt");
     86        model->Thermal()->parameters->FindParam((void*)&p_g_initial,"p_g");
    8487
    8588        inputs=new ParameterInputs;
     
    8992       
    9093        /*erase velocities: */
    91         param=(Param*)femmodels[0].parameters->FindParamObject("u_g");
    92         femmodels[0].parameters->DeleteObject((Object*)param);
     94        param=(Param*)model->DiagnosticHorizontal()->parameters->FindParamObject("u_g");
     95        model->DiagnosticHorizontal()->parameters->DeleteObject((Object*)param);
    9396
    9497        _printf_("initialize results:\n");
     
    9699
    97100        /*are we running the solution sequence, or a qmu wrapper around it? : */
    98         femmodels[0].parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");
     101        model->DiagnosticHorizontal()->parameters->FindParam((void*)&qmu_analysis,"qmu_analysis");
    99102        if(!qmu_analysis){
    100103
    101104                /*run diagnostic analysis: */
    102105                _printf_("call computational core:\n");
    103                 thermalstatic_core(results,femmodels,inputs);
     106                thermalstatic_core(results,model,inputs);
    104107
    105108        }
     
    109112
    110113                #ifdef _HAVE_DAKOTA_
    111                 Qmux(&femmodels[0],inputs,ThermalstaticAnalysisEnum(),NoneAnalysisEnum());
     114                Qmux(model,inputs,ThermalstaticAnalysisEnum(),NoneAnalysisEnum());
    112115                #else
    113116                throw ErrorException(__FUNCT__," Dakota not present, cannot do qmu!");
     
    120123
    121124        _printf_("process results:\n");
    122         ProcessResults(&results,&femmodels[0],ThermalstaticAnalysisEnum());
     125        ProcessResults(&results,model,ThermalstaticAnalysisEnum());
    123126
    124127        _printf_("write results to disk:\n");
     
    126129
    127130        _printf_("write lock file:\n");
    128         femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");
     131        model->DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");
    129132        if (waitonlock){
    130133                WriteLockFile(lockname);
Note: See TracChangeset for help on using the changeset viewer.