Ignore:
Timestamp:
09/16/13 09:43:55 (12 years ago)
Author:
Mathieu Morlighem
Message:

merged trunk-jpl and trunk for revision 16135

Location:
issm/trunk
Files:
1 deleted
13 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk

  • issm/trunk/src

  • issm/trunk/src/c

    • Property svn:ignore
      •  

        old new  
        1414probe.results
        1515stXXXX*
        16 
         16.deps
         17.dirstamp
  • issm/trunk/src/c/solutionsequences

    • Property svn:ignore set to
      .deps
      .dirstamp
  • issm/trunk/src/c/solutionsequences/convergence.cpp

    r15104 r16137  
    4040
    4141        /*get convergence options*/
    42         parameters->FindParam(&eps_res,DiagnosticRestolEnum);
    43         parameters->FindParam(&eps_rel,DiagnosticReltolEnum);
    44         parameters->FindParam(&eps_abs,DiagnosticAbstolEnum);
     42        parameters->FindParam(&eps_res,StressbalanceRestolEnum);
     43        parameters->FindParam(&eps_rel,StressbalanceReltolEnum);
     44        parameters->FindParam(&eps_abs,StressbalanceAbstolEnum);
    4545        parameters->FindParam(&yts,ConstantsYtsEnum);
    4646
  • issm/trunk/src/c/solutionsequences/solutionsequence_adjoint_linear.cpp

    r15002 r16137  
    2626        femmodel->UpdateConstraintsx();
    2727
    28         femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     28        SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL,femmodel);
    2929        CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    3030        Reduceloadx(pf, Kfs, ys,true); delete Kfs; //true means spc = 0
    3131        Solverx(&uf, Kff, pf, NULL, df, femmodel->parameters); delete Kff; delete pf; delete df;
    3232        Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters,true); delete ys; //true means spc0
    33         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
     33        InputUpdateFromSolutionx(femmodel,ug);
    3434        delete ug; delete uf;
    3535}
  • issm/trunk/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r15352 r16137  
    1010void solutionsequence_hydro_nonlinear(FemModel* femmodel){
    1111        /*solution : */
    12         Vector<IssmDouble>* ug_sed=NULL;
     12        Vector<IssmDouble>* ug_sed=NULL;
     13        Vector<IssmDouble>* uf_sed=NULL;
     14        Vector<IssmDouble>* uf_sed_sub_iter=NULL;
     15        Vector<IssmDouble>* ug_sed_main_iter=NULL;
     16
    1317        Vector<IssmDouble>* ug_epl=NULL;
    14         Vector<IssmDouble>* uf=NULL;
    15         Vector<IssmDouble>* uf_int_iter=NULL;
    16         Vector<IssmDouble>* ug_sed_main_iter=NULL;
    17         Vector<IssmDouble>* ug_epl_main_iter=NULL;
     18        Vector<IssmDouble>* uf_epl=NULL;
     19        Vector<IssmDouble>* uf_epl_sub_iter=NULL;
     20        Vector<IssmDouble>* ug_epl_main_iter=NULL;
     21
    1822        Vector<IssmDouble>* ys=NULL;
    19         Vector<IssmDouble>* dug=NULL;
    20         Vector<IssmDouble>* old_ug=NULL;
    21        
     23        Vector<IssmDouble>* dug=NULL;
     24
    2225        Matrix<IssmDouble>* Kff=NULL;
    2326        Matrix<IssmDouble>* Kfs=NULL;
     
    3740
    3841        /*Recover parameters: */
    39         femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);//FIXME
     42        femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    4043        femmodel->parameters->FindParam(&isefficientlayer,HydrologydcIsefficientlayerEnum);
    4144        femmodel->parameters->FindParam(&eps_hyd,HydrologydcRelTolEnum);
     
    4346        hydro_maxiter=150;
    4447        hydrocount=1;
    45 
    46         /*Iteration on the two layers*/
    47         femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    48         GetSolutionFromInputsx(&ug_sed, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
     48        hydroconverged=false;
     49
     50        /*Retrieve inputs as the initial state for the non linear iteration*/
     51        //femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
     52        GetSolutionFromInputsx(&ug_sed,femmodel);
     53
    4954        if(isefficientlayer) {
    5055                femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
    51                 GetSolutionFromInputsx(&ug_epl, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
     56                GetSolutionFromInputsx(&ug_epl,femmodel);
    5257        }
    5358
    54         hydroconverged=false;
     59        /*Iteration on the two layers*/
    5560        for(;;){
    5661                sedcount=1;
    5762                eplcount=1;
    5863                //save pointer to old velocity
    59                 delete ug_sed_main_iter;
    60                 ug_sed_main_iter=ug_sed;
     64                ug_sed_main_iter=ug_sed->Duplicate();
     65                ug_sed->Copy(ug_sed_main_iter);
    6166                if(isefficientlayer){
    62                         delete ug_epl_main_iter;
    63                         ug_epl_main_iter=ug_epl;
     67                        ug_epl_main_iter=ug_epl->Duplicate();
     68                        ug_epl->Copy(ug_epl_main_iter);
    6469                }
    6570
    6671                femmodel->SetCurrentConfiguration(HydrologyDCInefficientAnalysisEnum);
    67                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);
    68                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);
     72                InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
     73                InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
    6974                femmodel->UpdateConstraintsx();
    7075                femmodel->parameters->SetParam(HydrologySedimentEnum,HydrologyLayerEnum);
     
    7479                for(;;){
    7580                        femmodel->HydrologyTransferx();
    76                         femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df, &sediment_kmax);
     81                        SystemMatricesx(&Kff,&Kfs,&pf,&df,&sediment_kmax,femmodel);
    7782                        CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCInefficientAnalysisEnum);
    7883                        Reduceloadx(pf,Kfs,ys); delete Kfs;
    79                         delete uf;
    80                         Solverx(&uf, Kff, pf,uf_int_iter, df, femmodel->parameters);
    81                         delete uf_int_iter; uf_int_iter=uf->Duplicate();
    82                         if(sedcount>1)delete ug_sed; /*Not on first time to avoid deleting ug_sed_main_iter*/
     84                        delete uf_sed;
     85                        Solverx(&uf_sed,Kff,pf,uf_sed_sub_iter,df,femmodel->parameters);
    8386                        delete Kff; delete pf; delete df;
    84 
    85                         Mergesolutionfromftogx(&ug_sed,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
    86                         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);
    87                         ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     87                        delete uf_sed_sub_iter;
     88                        uf_sed_sub_iter=uf_sed->Duplicate();
     89                        uf_sed->Copy(uf_sed_sub_iter);
     90                        delete ug_sed;
     91                        Mergesolutionfromftogx(&ug_sed,uf_sed,ys,femmodel->nodes,femmodel->parameters); delete ys;
     92                        InputUpdateFromSolutionx(femmodel,ug_sed);
     93                        ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
    8894
    8995                        if (!sedconverged){
     
    98104                        if(sedconverged){
    99105                                femmodel->parameters->SetParam(sediment_kmax,HydrologySedimentKmaxEnum);
    100                                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sedconverged,ConvergedEnum);
    101                                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_sed);
    102                                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,HydrologySedimentKmaxEnum);
     106                                InputUpdateFromConstantx(femmodel,sedconverged,ConvergedEnum);
     107                                InputUpdateFromSolutionx(femmodel,ug_sed);
     108                                InputUpdateFromConstantx(femmodel,sediment_kmax,HydrologySedimentKmaxEnum);
    103109                                break;
    104110                        }
     
    108114                if(isefficientlayer){
    109115                        femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
    110                         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);
    111                         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);
     116                        InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
     117                        InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
    112118                        femmodel->HydrologyEPLupdateDomainx();
    113119                        femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum);
     120
     121                        /*Iteration on the EPL layer*/
    114122                        eplconverged = false;
    115                         /*Iteration on the EPL layer*/
    116123                        for(;;){
    117124                                femmodel->HydrologyTransferx();
    118                                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL);
     125                                SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
    119126                                CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
    120127                                Reduceloadx(pf,Kfs,ys); delete Kfs;
    121                                 delete uf;
    122                                 Solverx(&uf, Kff, pf,uf_int_iter, df, femmodel->parameters);
    123                                 delete uf_int_iter; uf_int_iter=uf->Duplicate();
    124                                 if(eplcount>1) delete ug_epl;
    125                                 delete Kff;delete pf;
    126                                 delete df;
    127                                 Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
    128                                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
    129                                 ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     128                                delete uf_epl;
     129                                Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
     130                                delete Kff; delete pf; delete df;
     131                                delete uf_epl_sub_iter;
     132                                uf_epl_sub_iter=uf_epl->Duplicate();
     133                                uf_epl->Copy(uf_epl_sub_iter);
     134                                delete ug_epl;
     135                                Mergesolutionfromftogx(&ug_epl,uf_epl,ys,femmodel->nodes,femmodel->parameters); delete ys;
     136                                InputUpdateFromSolutionx(femmodel,ug_epl);
     137                                ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
    130138                                femmodel->HydrologyEPLupdateDomainx();                 
    131                                
     139
    132140                                if (!eplconverged){
    133141                                        if(VerboseConvergence()) _printf0_("   # EPL unstable constraints = " << num_unstable_constraints << "\n");
     
    140148
    141149                                if(eplconverged){
    142                                         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum);
    143                                         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum);
    144                                         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
     150                                        InputUpdateFromConstantx(femmodel,eplconverged,ConvergedEnum);
     151                                        InputUpdateFromConstantx(femmodel,sediment_kmax,MeltingOffsetEnum);
     152                                        InputUpdateFromSolutionx(femmodel,ug_epl);
    145153                                        break;
    146154                                }
     
    153161                        ug_sed_main_iter->Copy(dug);   
    154162                        dug->AYPX(ug_sed,-1.0);
    155                         ndu_sed=dug->Norm(NORM_TWO); nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
     163                        ndu_sed=dug->Norm(NORM_TWO);
     164                        delete dug;
     165                        nu_sed=ug_sed_main_iter->Norm(NORM_TWO);
     166                        delete ug_sed_main_iter;
    156167                        if (xIsNan<IssmDouble>(ndu_sed) || xIsNan<IssmDouble>(nu_sed)) _error_("Sed convergence criterion is NaN!");
    157168                        if (!xIsNan<IssmDouble>(eps_hyd)){
     
    171182                                        dug->AYPX(ug_epl,-1.0);
    172183                                        ndu_epl=dug->Norm(NORM_TWO);
     184                                        delete dug;
    173185                                        nu_epl=ug_epl_main_iter->Norm(NORM_TWO);
    174 
     186                                        delete ug_epl_main_iter;
    175187                                        if (xIsNan<IssmDouble>(ndu_epl) || xIsNan<IssmDouble>(nu_epl)) _error_("EPL convergence criterion is NaN!");
    176188                                        if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
     
    194206                if(hydroconverged)break;
    195207        }
    196         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_sed);
    197         if(isefficientlayer)InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);
     208
     209        InputUpdateFromSolutionx(femmodel,ug_sed);
     210        if(isefficientlayer)InputUpdateFromSolutionx(femmodel,ug_epl);
    198211
    199212        /*Free ressources: */
    200213        delete ug_epl;
    201214        delete ug_sed;
    202         delete uf;
    203         delete uf_int_iter;
    204         delete ug_sed_main_iter;
    205         delete ug_epl_main_iter;
    206         delete dug;
     215        delete uf_sed;
     216        delete uf_epl;
     217        delete uf_sed_sub_iter;
     218        delete uf_epl_sub_iter;
     219        //delete dug;
    207220}
  • issm/trunk/src/c/solutionsequences/solutionsequence_linear.cpp

    r15002 r16137  
    2424        femmodel->UpdateConstraintsx();
    2525
    26         femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     26        SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
    2727        CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    2828        Reduceloadx(pf, Kfs, ys); delete Kfs;
     
    3535//#endif
    3636        Mergesolutionfromftogx(&ug, uf,ys,femmodel->nodes,femmodel->parameters);delete uf; delete ys;
    37         InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
     37        InputUpdateFromSolutionx(femmodel,ug);
    3838        delete ug; 
    3939}
  • issm/trunk/src/c/solutionsequences/solutionsequence_newton.cpp

    r15104 r16137  
    3333
    3434        /*Recover parameters: */
    35         femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
     35        femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
    3636        femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    37         femmodel->parameters->FindParam(&newton,DiagnosticIsnewtonEnum);
     37        femmodel->parameters->FindParam(&newton,StressbalanceIsnewtonEnum);
    3838        femmodel->UpdateConstraintsx();
    3939
     
    4242
    4343        /*Start non-linear iteration using input velocity: */
    44         GetSolutionFromInputsx(&ug,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     44        GetSolutionFromInputsx(&ug,femmodel);
    4545        Reducevectorgtofx(&uf,ug,femmodel->nodes,femmodel->parameters);
    4646
    4747        //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
    48         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,converged,ConvergedEnum);
    49         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     48        InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
     49        InputUpdateFromSolutionx(femmodel,ug);
    5050
    5151        for(;;){
     
    5656                /*Solver forward model*/
    5757                if(count==1 || newton==2){
    58                         femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     58                        SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
    5959                        CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    6060                        Reduceloadx(pf,Kfs,ys);delete Kfs;
    6161                        Solverx(&uf,Kff,pf,old_uf,df,femmodel->parameters);delete df; delete Kff; delete pf;
    6262                        Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
    63                         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     63                        InputUpdateFromSolutionx(femmodel,ug);
    6464                        delete old_ug;old_ug=ug;
    6565                        delete old_uf;old_uf=uf;
     
    6868
    6969                /*Prepare next iteration using Newton's method*/
    70                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);delete df;
     70                SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);delete df;
    7171                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    7272                Reduceloadx(pf,Kfs,ys);delete Kfs;
    7373
    7474                pJf=pf->Duplicate();
    75                 Kff->MatMult(uf,pJf);// delete Kff);
    76                 pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);     //delete pf);
     75                Kff->MatMult(uf,pJf);
     76                pJf->Scale(-1.0); pJf->AXPY(pf,+1.0);
    7777
    78                 femmodel->CreateJacobianMatrixx(&Jff,kmax);
     78                CreateJacobianMatrixx(&Jff,femmodel,kmax);
    7979                Solverx(&duf,Jff,pJf,NULL,NULL,femmodel->parameters); delete Jff; delete pJf;
    8080                uf->AXPY(duf, 1.0); delete duf;
    8181                Mergesolutionfromftogx(&ug,uf,ys,femmodel->nodes,femmodel->parameters);delete ys;
    82                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug);
     82                InputUpdateFromSolutionx(femmodel,ug);
    8383
    8484                /*Check convergence*/
  • issm/trunk/src/c/solutionsequences/solutionsequence_nonlinear.cpp

    r15197 r16137  
    3333
    3434        /*Recover parameters: */
    35         femmodel->parameters->FindParam(&min_mechanical_constraints,DiagnosticRiftPenaltyThresholdEnum);
    36         femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
     35        femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
     36        femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
    3737        femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    3838        femmodel->UpdateConstraintsx();
     
    4747
    4848        /*Start non-linear iteration using input velocity: */
    49         GetSolutionFromInputsx(&ug, femmodel->elements, femmodel->nodes, femmodel->vertices,femmodel->loads, femmodel->materials, femmodel->parameters);
     49        GetSolutionFromInputsx(&ug,femmodel);
    5050        Reducevectorgtofx(&uf, ug, femmodel->nodes,femmodel->parameters);
    5151
    5252        //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
    53         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
    54         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
     53        InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
     54        InputUpdateFromSolutionx(femmodel,ug);
    5555
    5656        for(;;){
     
    6060                delete ug;
    6161
    62                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf, &df, NULL);
     62                SystemMatricesx(&Kff,&Kfs,&pf,&df,NULL,femmodel);
    6363                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    6464                Reduceloadx(pf, Kfs, ys); delete Kfs;
     
    6767
    6868                convergence(&converged,Kff,pf,uf,old_uf,femmodel->parameters); delete Kff; delete pf; delete df;
    69                 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
    70                 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);
     69                InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
     70                InputUpdateFromSolutionx(femmodel,ug);
    7171
    72                 ConstraintsStatex(&constraints_converged, &num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     72                ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
    7373                if(VerboseConvergence()) _printf0_("   number of unstable constraints: " << num_unstable_constraints << "\n");
    7474
     
    9393                        _printf0_("   maximum number of nonlinear iterations (" << max_nonlinear_iterations << ") exceeded\n");
    9494                        converged=true;
    95                         InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
    96                         InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug);               
     95                        InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
     96                        InputUpdateFromSolutionx(femmodel,ug);         
    9797                        bool max_iteration_state=true;
    9898                        int tempStep=1;
  • issm/trunk/src/c/solutionsequences/solutionsequence_stokescoupling_nonlinear.cpp

    r15104 r16137  
    1 /*!\file: solutionsequence_stokescoupling_nonlinear.cpp
    2  * \brief: core of the coupling between stokes and macayealpattyn
     1/*!\file: solutionsequence_FScoupling_nonlinear.cpp
     2 * \brief: core of the coupling between FS and SSAHO
    33 */
    44
     
    99#include "../modules/modules.h"
    1010
    11 void solutionsequence_stokescoupling_nonlinear(FemModel* femmodel,bool conserve_loads){
     11void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads){
    1212
    1313        /*intermediary: */
     
    3535
    3636        /*Recover parameters: */
    37         femmodel->parameters->FindParam(&min_mechanical_constraints,DiagnosticRiftPenaltyThresholdEnum);
    38         femmodel->parameters->FindParam(&max_nonlinear_iterations,DiagnosticMaxiterEnum);
     37        femmodel->parameters->FindParam(&min_mechanical_constraints,StressbalanceRiftPenaltyThresholdEnum);
     38        femmodel->parameters->FindParam(&max_nonlinear_iterations,StressbalanceMaxiterEnum);
    3939        femmodel->UpdateConstraintsx();
    4040
     
    4343
    4444        /*First get ug_horiz:*/
    45         femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
    46         GetSolutionFromInputsx(&ug_horiz, femmodel->elements, femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters);
     45        femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
     46        GetSolutionFromInputsx(&ug_horiz,femmodel);
    4747        Reducevectorgtofx(&uf_horiz, ug_horiz, femmodel->nodes,femmodel->parameters);
    4848
    4949        for(;;){
    5050
    51                 /*First diagnostic horiz:*/
    52                 femmodel->SetCurrentConfiguration(DiagnosticHorizAnalysisEnum);
     51                /*First stressbalance horiz:*/
     52                femmodel->SetCurrentConfiguration(StressbalanceAnalysisEnum);
    5353                femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    5454
    5555                //Update once again the solution to make sure that vx and vxold are similar (for next step in transient or steadystate)
    56                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz);
     56                InputUpdateFromSolutionx(femmodel,ug_horiz);
    5757                delete ug_horiz;
    5858
     
    6161
    6262                /*solve: */
    63                 femmodel->SystemMatricesx(&Kff_horiz, &Kfs_horiz, &pf_horiz, &df_horiz, NULL);
     63                SystemMatricesx(&Kff_horiz, &Kfs_horiz, &pf_horiz, &df_horiz, NULL,femmodel);
    6464                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    6565                Reduceloadx(pf_horiz, Kfs_horiz, ys); delete Kfs_horiz;
    6666                Solverx(&uf_horiz, Kff_horiz, pf_horiz, old_uf_horiz, df_horiz,femmodel->parameters);
    6767                Mergesolutionfromftogx(&ug_horiz, uf_horiz,ys,femmodel->nodes,femmodel->parameters); delete ys;
    68                 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_horiz);
     68                InputUpdateFromSolutionx(femmodel,ug_horiz);
    6969
    7070                convergence(&converged,Kff_horiz,pf_horiz,uf_horiz,old_uf_horiz,femmodel->parameters); delete Kff_horiz; delete pf_horiz; delete df_horiz;
    7171
    7272                /*Second compute vertical velocity: */
    73                 femmodel->SetCurrentConfiguration(DiagnosticVertAnalysisEnum);
     73                femmodel->SetCurrentConfiguration(StressbalanceVerticalAnalysisEnum);
    7474                femmodel->parameters->FindParam(&configuration_type,ConfigurationTypeEnum);
    7575
    7676                /*solve: */
    77                 femmodel->SystemMatricesx(&Kff_vert, &Kfs_vert, &pf_vert,  &df_vert,NULL);
     77                SystemMatricesx(&Kff_vert, &Kfs_vert, &pf_vert, &df_vert,NULL,femmodel);
    7878                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    7979                Reduceloadx(pf_vert, Kfs_vert, ys); delete Kfs_vert;
     
    8282                delete uf_vert;
    8383                delete ys;
    84                 InputUpdateFromSolutionx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_vert);
     84                InputUpdateFromSolutionx(femmodel,ug_vert);
    8585                delete ug_vert;
    8686
  • issm/trunk/src/c/solutionsequences/solutionsequence_thermal_nonlinear.cpp

    r15104 r16137  
    4141        converged=false;
    4242
    43         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);
    44         InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);
     43        InputUpdateFromConstantx(femmodel,true,ResetPenaltiesEnum);
     44        InputUpdateFromConstantx(femmodel,false,ConvergedEnum);
    4545        femmodel->UpdateConstraintsx();
    4646
    4747        for(;;){
    4848
    49                 femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df, &melting_offset);
     49                delete tf_old; tf_old=tf;
     50                SystemMatricesx(&Kff, &Kfs, &pf,&df, &melting_offset,femmodel);
    5051                CreateNodalConstraintsx(&ys,femmodel->nodes,configuration_type);
    51                 Reduceloadx(pf, Kfs, ys); delete Kfs; delete tf;
     52                Reduceloadx(pf, Kfs, ys); delete Kfs;
    5253                Solverx(&tf, Kff, pf,tf_old, df, femmodel->parameters);
    53                 delete tf_old; tf_old=tf->Duplicate();
    5454                delete Kff;delete pf;delete tg; delete df;
    5555                Mergesolutionfromftogx(&tg, tf,ys,femmodel->nodes,femmodel->parameters); delete ys;
    56                 InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,tg);
     56                InputUpdateFromSolutionx(femmodel,tg);
    5757
    58                 ConstraintsStatex(&constraints_converged, &num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     58                ConstraintsStatex(&constraints_converged,&num_unstable_constraints,femmodel);
    5959
    6060                if (!converged){
     
    6868                count++;
    6969
    70                 InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,converged,ConvergedEnum);
     70                InputUpdateFromConstantx(femmodel,converged,ConvergedEnum);
    7171
    7272                if(converged)break;
    7373        }
    7474
    75         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,tg);
    76         InputUpdateFromConstantx( femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,melting_offset,MeltingOffsetEnum);
     75        InputUpdateFromSolutionx(femmodel,tg);
     76        InputUpdateFromConstantx(femmodel,melting_offset,MeltingOffsetEnum);
    7777
    7878        /*Free ressources: */
  • issm/trunk/src/c/solutionsequences/solutionsequences.h

    r15055 r16137  
    1616void solutionsequence_nonlinear(FemModel* femmodel,bool conserve_loads);
    1717void solutionsequence_newton(FemModel* femmodel);
    18 void solutionsequence_stokescoupling_nonlinear(FemModel* femmodel,bool conserve_loads);
     18void solutionsequence_FScoupling_nonlinear(FemModel* femmodel,bool conserve_loads);
    1919void solutionsequence_linear(FemModel* femmodel);
    2020void solutionsequence_adjoint_linear(FemModel* femmodel);
Note: See TracChangeset for help on using the changeset viewer.