Ignore:
Timestamp:
08/24/09 17:44:24 (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/transient.cpp

    r1719 r1820  
    2626        int   qmu_analysis=0;
    2727
    28         /*Fem models : */
    29         FemModel femmodels[8];
     28        /*Model: */
     29        Model* model=NULL;
    3030        int dim=-1;
    3131
     
    6565        fid=pfopen(inputfilename,"rb");
    6666
     67        /*Initialize model structure: */
     68        model=new Model();
     69
    6770        _printf_("read and create finite element model:\n");
    6871        _printf_("\n   reading diagnostic horiz model data:\n");
    69         CreateFemModel(&femmodels[0],fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
     72        CreateFemModel(model->DiagnosticHorizontal(),fid,DiagnosticAnalysisEnum(),HorizAnalysisEnum());
    7073        _printf_("\n   reading diagnostic vert model data:\n");
    71         CreateFemModel(&femmodels[1],fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
     74        CreateFemModel(model->DiagnosticVertical(),fid,DiagnosticAnalysisEnum(),VertAnalysisEnum());
    7275        _printf_("\n   reading diagnostic stokes model data:\n");
    73         CreateFemModel(&femmodels[2],fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
     76        CreateFemModel(model->DiagnosticStokes(),fid,DiagnosticAnalysisEnum(),StokesAnalysisEnum());
    7477        _printf_("\n   reading diagnostic hutter model data:\n");
    75         CreateFemModel(&femmodels[3],fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
     78        CreateFemModel(model->DiagnosticHutter(),fid,DiagnosticAnalysisEnum(),HutterAnalysisEnum());
    7679        _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());
    7881        _printf_("\n   reading prognositc model data:\n");
    79         CreateFemModel(&femmodels[5],fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());
     82        CreateFemModel(model->Prognostic(),fid,PrognosticAnalysisEnum(),NoneAnalysisEnum());
    8083       
    8184        /*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");
    8386        if(dim==3){
    8487                _printf_("read and create thermal finite element model:\n");
    85                 CreateFemModel(&femmodels[6],fid,ThermalAnalysisEnum(),TransientAnalysisEnum());
     88                CreateFemModel(model->Thermal(),fid,ThermalAnalysisEnum(),TransientAnalysisEnum());
    8689                _printf_("read and create melting finite element model:\n");
    87                 CreateFemModel(&femmodels[7],fid,MeltingAnalysisEnum(),TransientAnalysisEnum());
     90                CreateFemModel(model->Melting(),fid,MeltingAnalysisEnum(),TransientAnalysisEnum());
    8891        }
    8992
    9093        _printf_("initialize inputs:\n");
    9194        inputs=new ParameterInputs;
    92         femmodels[5].parameters->FindParam((void*)&numberofnodes,"numberofnodes");
     95        model->Thermal()->parameters->FindParam((void*)&numberofnodes,"numberofnodes");
    9396       
    94         femmodels[5].parameters->FindParam((void*)&u_g,"u_g");
     97        model->Thermal()->parameters->FindParam((void*)&u_g,"u_g");
    9598        inputs->Add("velocity",u_g,3,numberofnodes);
    9699
    97         femmodels[5].parameters->FindParam((void*)&m_g,"m_g");
     100        model->Thermal()->parameters->FindParam((void*)&m_g,"m_g");
    98101        inputs->Add("melting",m_g,1,numberofnodes);
    99102
    100         femmodels[5].parameters->FindParam((void*)&a_g,"a_g");
     103        model->Thermal()->parameters->FindParam((void*)&a_g,"a_g");
    101104        inputs->Add("accumulation",a_g,1,numberofnodes);
    102105
    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");
    105108        inputs->Add("dt",dt*yts);
    106109       
     
    109112
    110113        /*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");
    112115        if(!qmu_analysis){
    113116
    114117                /*run diagnostic analysis: */
    115118                _printf_("call computational core:\n");
    116                 transient_core(results,femmodels,inputs);
     119                transient_core(results,model,inputs);
    117120        }
    118121        else{
     
    121124
    122125                #ifdef _HAVE_DAKOTA_
    123                 Qmux(&femmodels[0],inputs,TransientAnalysisEnum(),NoneAnalysisEnum());
     126                Qmux(model,inputs,TransientAnalysisEnum(),NoneAnalysisEnum());
    124127                #else
    125128                throw ErrorException(__FUNCT__," Dakota not present, cannot do qmu!");
     
    132135
    133136        _printf_("process results:\n");
    134         ProcessResults(&results,&femmodels[0],TransientAnalysisEnum());
     137        ProcessResults(&results,model,TransientAnalysisEnum());
    135138       
    136139        _printf_("write results to disk:\n");
     
    138141
    139142        _printf_("write lock file:\n");
    140         femmodels[0].parameters->FindParam((void*)&waitonlock,"waitonlock");
     143        model->DiagnosticHorizontal()->parameters->FindParam((void*)&waitonlock,"waitonlock");
    141144        if (waitonlock){
    142145                WriteLockFile(lockname);
Note: See TracChangeset for help on using the changeset viewer.