Changeset 4114


Ignore:
Timestamp:
06/21/10 18:03:02 (15 years ago)
Author:
Eric.Larour
Message:

New serial solvers.
New SetCurrentAnalysis serial routine.

Location:
issm/trunk/src
Files:
6 added
3 deleted
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/solvers/solver_diagnostic_nonlinear.cpp

    r4085 r4114  
    1010#include "./solvers.h"
    1111
    12 void solver_diagnostic_nonlinear(Vec* pug,Mat* pKff0,Mat* pKfs0, FemModel* fem,bool conserve_loads){
     12void solver_diagnostic_nonlinear(Vec* pug,Mat* pKff0,Mat* pKfs0, FemModel* femmodel,bool conserve_loads){
    1313
    1414
     
    4242        /*Recover parameters: */
    4343        kflag=1; pflag=1;
    44         fem->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
    45         fem->parameters->FindParam(&solver_string,SolverStringEnum);
    46         fem->parameters->FindParam(&dim,DimEnum);
    47         fem->parameters->FindParam(&verbose,VerboseEnum);
    48         fem->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
    49         fem->parameters->FindParam(&max_nonlinear_iterations,MaxNonlinearIterationsEnum);
     44        femmodel->parameters->FindParam(&numberofnodes,NumberOfNodesEnum);
     45        femmodel->parameters->FindParam(&solver_string,SolverStringEnum);
     46        femmodel->parameters->FindParam(&dim,DimEnum);
     47        femmodel->parameters->FindParam(&verbose,VerboseEnum);
     48        femmodel->parameters->FindParam(&min_mechanical_constraints,MinMechanicalConstraintsEnum);
     49        femmodel->parameters->FindParam(&max_nonlinear_iterations,MaxNonlinearIterationsEnum);
    5050       
    5151        /*Were loads requested as output? : */
    5252        if(conserve_loads){
    53                 loads=fem->loads->Copy(); //protect loads from being modified by the solution
     53                loads=femmodel->loads->Copy(); //protect loads from being modified by the solution
    5454        }
    5555        else{
    56                 loads=fem->loads; //modify loads  in this solution
     56                loads=femmodel->loads; //modify loads  in this solution
    5757        }
    5858
     
    6161
    6262        /*Start non-linear iteration using input velocity: */
    63         GetSolutionFromInputsx(&ug, fem->elements, fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters);
    64         Reducevectorgtofx(&uf, ug, fem->nodesets);
     63        GetSolutionFromInputsx(&ug, femmodel->elements, femmodel->nodes, femmodel->vertices, loads, femmodel->materials, femmodel->parameters);
     64        Reducevectorgtofx(&uf, ug, femmodel->nodesets);
    6565
    6666        for(;;){
     
    7171
    7272                if (verbose) _printf_("   Generating matrices\n");
    73                 //*Generate system matrices
    74                 SystemMatricesx(&Kgg, &pg,fem->elements,fem->nodes,fem->vertices,loads,fem->materials,fem->parameters,kflag,pflag);
     73                SystemMatricesx(&Kgg, &pg,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters,kflag,pflag);
    7574
    7675                if (verbose) _printf_("   Generating penalty matrices\n");
    77                 //*Generate penalty system matrices
    78                 PenaltySystemMatricesx(Kgg, pg,NULL,fem->elements,fem->nodes,fem->vertices,loads,fem->materials,fem->parameters,kflag,pflag);
    79 
     76                PenaltySystemMatricesx(Kgg, pg,NULL,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters,kflag,pflag);
     77               
    8078                if (verbose) _printf_("   reducing matrix from g to f set\n");
    81                 /*!Reduce matrix from g to f size:*/
    82                 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets);
     79                Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->Gmn,femmodel->nodesets);
    8380
    8481                /*Free ressources: */
     
    8683       
    8784                if (verbose) _printf_("   reducing load from g to f set\n");
    88                 /*!Reduce load from g to f size: */
    89                 Reduceloadfromgtofx(&pf, pg, fem->Gmn, Kfs, fem->ys, fem->nodesets);
     85                Reduceloadfromgtofx(&pf, pg, femmodel->Gmn, Kfs, femmodel->ys, femmodel->nodesets);
    9086
    9187                //no need for pg and Kfs anymore
     
    9389                MatFree(&Kfs);
    9490
    95                 /*Solve: */
    9691                if (verbose) _printf_("   solving\n");
    9792                Solverx(&uf, Kff, pf, old_uf, solver_string);
    9893
    99                 //Merge back to g set
    10094                if (verbose) _printf_("   merging solution from f to g set\n");
    101                 Mergesolutionfromftogx(&ug, uf,fem->Gmn,fem->ys,fem->nodesets);
     95                Mergesolutionfromftogx(&ug, uf,femmodel->Gmn,femmodel->ys,femmodel->nodesets);
    10296
    10397                //Update inputs using new solution:
    104                 InputUpdateFromSolutionx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,ug);
     98                InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
    10599
    106                 //Deal with penalty loads
    107100                if (verbose) _printf_("   penalty constraints\n");
    108                 PenaltyConstraintsx(&constraints_converged, &num_unstable_constraints, fem->elements,fem->nodes,fem->vertices,loads,fem->materials,fem->parameters);
     101                PenaltyConstraintsx(&constraints_converged, &num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters);
    109102
    110103                if(verbose)_printf_("   number of unstable constraints: %i\n",num_unstable_constraints);
    111104
    112105                /*Figure out if convergence is reached.*/
    113                 convergence(&converged,Kff,pf,uf,old_uf,fem->parameters);
     106                convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters);
    114107                MatFree(&Kff);VecFree(&pf);
    115108               
    116109                /*add converged to inputs: */
    117                 InputUpdateFromConstantx( fem->elements,fem->nodes, fem->vertices, fem->loads, fem->materials, fem->parameters,converged,ConvergedEnum);
     110                InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
    118111
    119112                //rift convergence
     
    137130        if (dim==3){
    138131                if(verbose)_printf_("%s\n","extruding velocity and pressure in 3d...");
    139                 InputExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VxEnum);
    140                 InputExtrudex( fem->elements,fem->nodes,fem->vertices,fem->loads,fem->materials,fem->parameters,VyEnum);
     132                InputExtrudex( femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VxEnum);
     133                InputExtrudex( femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,VyEnum);
    141134        }
    142135
     
    146139                kflag=1; pflag=0; //stiffness generation only
    147140       
    148                 SystemMatricesx(&Kgg, &pg,fem->elements,fem->nodes,fem->vertices,loads,fem->materials,fem->parameters,kflag,pflag);
    149                 Reducematrixfromgtofx(&Kff,&Kfs,Kgg,fem->Gmn,fem->nodesets);
     141                SystemMatricesx(&Kgg, &pg,femmodel->elements,femmodel->nodes,femmodel->vertices,loads,femmodel->materials,femmodel->parameters,kflag,pflag);
     142                Reducematrixfromgtofx(&Kff,&Kfs,Kgg,femmodel->Gmn,femmodel->nodesets);
    150143                MatFree(&Kgg);VecFree(&pg);
    151144
  • issm/trunk/src/m/solutions/jpl/NewFemModel.m

    r4063 r4114  
    3131
    3232                   displaystring(md.verbose,'%s','      generating single point constraints...');
    33                    [femmodel.nodes,femmodel.yg(i)]=SpcNodes(femmodel.nodes,femmodel.constraints,analysis_type);
     33                   [femmodel.nodes,femmodel.m_yg(i)]=SpcNodes(femmodel.nodes,femmodel.constraints,analysis_type);
    3434
    3535                   displaystring(md.verbose,'%s','      generating rigid body constraints...');
    36                    [femmodel.Rmg(i),femmodel.nodes]=MpcNodes(femmodel.nodes,femmodel.constraints,analysis_types);
     36                   [femmodel.m_Rmg(i),femmodel.nodes]=MpcNodes(femmodel.nodes,femmodel.constraints,analysis_types);
    3737
    3838                   displaystring(md.verbose,'%s','      generating node sets...');
    39                    femmodel.nodesets(i)=BuildNodeSets(femmodel.nodes,analysis_type);
     39                   femmodel.m_nodesets(i)=BuildNodeSets(femmodel.nodes,analysis_type);
    4040
    4141                   displaystring(md.verbose,'%s','      reducing single point constraints vector...');
    42                    femmodel.ys(i)=Reducevectorgtos(femmodel.yg(i).vector,femmodel.nodesets(i));
     42                   femmodel.m_ys(i)=Reducevectorgtos(femmodel.m_yg(i).vector,femmodel.m_nodesets(i));
    4343
    4444                   displaystring(md.verbose,'%s','      normalizing rigid body constraints matrix...');
    45                    femmodel.Gmn(i)= NormalizeConstraints(femmodel.Rmg(i),femmodel.nodesets(i));
     45                   femmodel.m_Gmn(i)= NormalizeConstraints(femmodel.m_Rmg(i),femmodel.m_nodesets(i));
    4646
    4747                   displaystring(md.verbose,'%s','      configuring element and loads...');
Note: See TracChangeset for help on using the changeset viewer.