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/balancedvelocities_core.cpp

    r4043 r4055  
    1111#include "../solvers/solvers.h"
    1212
    13 Results* balancedvelocities_core(Model* model){
    14 
    15         extern int my_rank;
    16 
    17         /*output: */
    18         Results* results=NULL;
    19         Result* result=NULL;
    20 
    21         /*intermediary: */
    22         Vec u_g=NULL;
    23 
    24         /*solutions: */
    25         Vec v_g=NULL;
     13void balancedvelocities_core(FemModel* femmodel){
    2614
    2715        /*flags: */
    2816        int verbose=0;
    29         int numberofdofspernode;
    30         int numberofnodes;
    31         int dofs[2]={1,1};
     17        int dim;
    3218
    33         /*fem balancedvelocities model: */
    34         FemModel* fem_p=NULL;
    35 
    36         //initialize results:
    37         results=new Results();
    38 
    39         /*recover fem model: */
    40         fem_p=model->GetFormulation(BalancedvelocitiesAnalysisEnum);
    41 
    42         //first recover parameters common to all solutions
    43         model->FindParam(&verbose,VerboseEnum);
    44         model->FindParam(&numberofnodes,NumberOfNodesEnum);
    45         model->FindParam(&numberofdofspernode,NumberOfDofsPerNodeEnum);
     19        /*activate formulation: */
     20        femmodel->SetCurrentAnalysis(BalancedvelocitiesAnalysisEnum);
     21       
     22        /*recover parameters: */
     23        femmodel->parameters->FindParam(&verbose,VerboseEnum);
     24        femmodel->parameters->FindParam(&dim,DimEnum);
    4625
    4726        _printf_("depth averaging velocity...\n");
    48         //u_g=inputs->Get("velocity",&dofs[0],2); //take (vx,vy) from inputs velocity
    49         //FieldDepthAveragex( u_g, fem_p->elements,fem_p->nodes, fem_p->vertices,fem_p->loads, fem_p->materials,fem_p->parameters,"velocity");
    50         //inputs->Add("velocity_average",u_g,2,numberofnodes);
    51         ISSMERROR(" not supported yet!");
    52        
     27        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum);
     28        DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum);
     29        if(dim==3) DepthAverageInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VzEnum);
     30
    5331        _printf_("call computational core:\n");
    54         diagnostic_core_linear(&v_g,fem_p,BalancedvelocitiesAnalysisEnum,NoneAnalysisEnum);
     32        solver_linear(NULL,femmodel);
    5533
    56         _printf_("extrude computed thickness on all layers:\n");
    57         FieldExtrudex( v_g, fem_p->elements,fem_p->nodes, fem_p->vertices,fem_p->loads, fem_p->materials,fem_p->parameters,"thickness",0);
     34        _printf_("extrude computed velocity on all layers:\n");
     35        ExtrudeInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VxEnum);
     36        ExtrudeInputx(femmodel->elements,femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials,femmodel->parameters,VyEnum);
    5837
    59         /*Plug results into output dataset: */
    60         InputToResultx(&result,fem_p->elements,fem_p->nodes,fem_p->vertices, fem_p->loads, fem_p->materials,fem_p->parameters,VxEnum,results->Size()+1,0,1); results->AddObject(result);
    61         InputToResultx(&result,fem_p->elements,fem_p->nodes,fem_p->vertices, fem_p->loads, fem_p->materials,fem_p->parameters,VyEnum,results->Size()+1,0,1); results->AddObject(result);
    62         results->AddObject(new StringResult(results->Size()+1,AnalysisTypeEnum,0,1,EnumAsString(BalancedvelocitiesAnalysisEnum)));
     38        if(verbose)_printf_("saving results:\n");
     39        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
     40        InputToResultx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);
    6341
    64         /*Free ressources:*/
    65         VecFree(&u_g);
    66         VecFree(&v_g);
    67 
    68         /*return: */
    69         return results;
    7042}
Note: See TracChangeset for help on using the changeset viewer.