Ignore:
Timestamp:
06/18/10 19:24:59 (15 years ago)
Author:
Eric.Larour
Message:

Keep simplifying solutions.
New convergence module at the input level, instead at the solution level, when solution vectors are not
available anymore.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/solutions/prognostic_core.cpp

    r4043 r4055  
    1111#include "../solvers/solvers.h"
    1212
    13 Results* prognostic_core(Model* model){
     13void prognostic_core(FemModel* femmodel){
    1414
    15         extern int my_rank;
    16 
    17         /*output: */
    18         Results* results=NULL;
    19         Result*  result=NULL;
    20 
    21         /*solutions: */
    22         Vec h_g=NULL;
    23 
    24         /*flags: */
     15        /*parameters: */
    2516        int verbose=0;
    2617
    27         /*fem prognostic model: */
    28         FemModel* fem_p=NULL;
    29 
    30         //initialize results
    31         results=new Results();
    32 
    33         /*recover fem model: */
    34         fem_p=model->GetFormulation(PrognosticAnalysisEnum); ISSMASSERT(fem_p);
    35 
    36         //first recover parameters common to all solutions
    37         model->FindParam(&verbose,VerboseEnum);
     18        /*activate formulation: */
     19        femmodel->SetCurrentAnalysis(PrognosticAnalysisEnum);
     20       
     21        /*recover parameters: */
     22        femmodel->parameters->FindParam(&verbose,VerboseEnum);
    3823
    3924        _printf_("depth averaging velocity...\n");
    40         DepthAverageInputx(fem_p->elements,fem_p->nodes, fem_p->vertices,fem_p->loads, fem_p->materials,fem_p->parameters,VxEnum);
    41         DepthAverageInputx(fem_p->elements,fem_p->nodes, fem_p->vertices,fem_p->loads, fem_p->materials,fem_p->parameters,VyEnum);
     25        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum,VxAverageEnum);
     26        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum,VyAverageEnum);
    4227       
    4328        _printf_("call computational core:\n");
    44         diagnostic_core_linear(&h_g,fem_p,PrognosticAnalysisEnum,NoneAnalysisEnum);
     29        solver_linear(NULL,femmodel);
    4530               
    46         _printf_("update inputs:\n");
    47         UpdateInputsFromSolutionx( fem_p->elements,fem_p->nodes, fem_p->vertices, fem_p->loads, fem_p->materials, fem_p->parameters,h_g,PrognosticAnalysisEnum,NoneAnalysisEnum);
     31        _printf_("extrude computed thickness on all layers:\n");
     32        ExtrudeInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,ThicknessEnum);
    4833
    49         _printf_("extrude computed thickness on all layers:\n");
    50         ExtrudeInputx(fem_p->elements,fem_p->nodes, fem_p->vertices,fem_p->loads, fem_p->materials,fem_p->parameters,ThicknessEnum);
     34        if(verbose)_printf_("saving results:\n");
     35        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ThicknessEnum);
    5136       
    52         _printf_("extract result from extruded inputs: \n");
    53         InputToResultx(&result,fem_p->elements,fem_p->nodes,fem_p->vertices, fem_p->loads, fem_p->materials,fem_p->parameters,ThicknessEnum,results->Size()+1,0,1); results->AddObject(result);
    54         results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(PrognosticAnalysisEnum)));
     37}
    5538
    56         /*Free ressources:*/
    57         VecFree(&h_g);
    58        
    59         //return:
    60         return results;
    61 
    62 }
Note: See TracChangeset for help on using the changeset viewer.