Changeset 15234


Ignore:
Timestamp:
06/10/13 18:22:38 (12 years ago)
Author:
bdef
Message:

BUG:fixing for one layer cases (do not update epl results in this case)

Location:
issm/trunk-jpl/src/c
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/classes/Elements/Tria.cpp

    r15230 r15234  
    63046304/*FUNCTION Tria::GetSolutionFromInputsHydrologyShreve{{{*/
    63056305void  Tria::GetSolutionFromInputsHydrologyShreve(Vector<IssmDouble>* solution){
    6306 
    63076306        const int    numdof=NDOF1*NUMVERTICES;
    63086307
     
    64986497        /*Free ressources:*/
    64996498        xDelete<int>(doflist);
     6499
    65006500}
    65016501/*}}}*/
  • issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r15223 r15234  
    108108
    109109                /*Second layer*/
    110                 if(!isefficientlayer) break;
    111                 femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
    112                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);
    113                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);
    114                 femmodel->UpdateConstraintsx();
    115                 femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum);
    116                 eplconverged = false;
    117                 /*Iteration on the EPL layer*/
    118                 for(;;){
    119                         femmodel->HydrologyTransferx();
    120                         femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL);
    121                         CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
    122                         Reduceloadx(pf,Kfs,ys); delete Kfs;
    123                         delete uf;
    124                         Solverx(&uf, Kff, pf,old_uf, df, femmodel->parameters);
    125                         delete old_uf; old_uf=uf->Duplicate();                 
    126                         if(eplcount>1) delete ug_epl;
    127                         delete Kff;delete pf;
    128                         delete df;
    129                         Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
    130                         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
    131                         ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
    132 
    133                         if (!eplconverged){
    134                                 if(VerboseConvergence()) _printf0_("   #unstable constraints = " << num_unstable_constraints << "\n");
    135                                 if(num_unstable_constraints==0) eplconverged = true;
    136                                 if (eplcount>=hydro_maxiter){
    137                                         _error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
    138                                 }
    139                         }
    140                         eplcount++;
    141 
    142                         if(eplconverged){
    143                                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum);
    144                                 InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum);
     110                if(isefficientlayer){
     111                        femmodel->SetCurrentConfiguration(HydrologyDCEfficientAnalysisEnum);
     112                        InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,true,ResetPenaltiesEnum);
     113                        InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,false,ConvergedEnum);
     114                        femmodel->UpdateConstraintsx();
     115                        femmodel->parameters->SetParam(HydrologyEfficientEnum,HydrologyLayerEnum);
     116                        eplconverged = false;
     117                        /*Iteration on the EPL layer*/
     118                        for(;;){
     119                                femmodel->HydrologyTransferx();
     120                                femmodel->SystemMatricesx(&Kff, &Kfs, &pf,&df,NULL);
     121                                CreateNodalConstraintsx(&ys,femmodel->nodes,HydrologyDCEfficientAnalysisEnum);
     122                                Reduceloadx(pf,Kfs,ys); delete Kfs;
     123                                delete uf;
     124                                Solverx(&uf, Kff, pf,old_uf, df, femmodel->parameters);
     125                                delete old_uf; old_uf=uf->Duplicate();                 
     126                                if(eplcount>1) delete ug_epl;
     127                                delete Kff;delete pf;
     128                                delete df;
     129                                Mergesolutionfromftogx(&ug_epl,uf,ys,femmodel->nodes,femmodel->parameters); delete ys;
    145130                                InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
    146                                 break;
    147                         }
    148                 }
    149 
     131                                ConstraintsStatex(&constraints_converged,&num_unstable_constraints, femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters);
     132                               
     133                                if (!eplconverged){
     134                                        if(VerboseConvergence()) _printf0_("   #unstable constraints = " << num_unstable_constraints << "\n");
     135                                        if(num_unstable_constraints==0) eplconverged = true;
     136                                        if (eplcount>=hydro_maxiter){
     137                                                _error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
     138                                        }
     139                                }
     140                                eplcount++;
     141                               
     142                                if(eplconverged){
     143                                        InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,eplconverged,ConvergedEnum);
     144                                        InputUpdateFromConstantx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,sediment_kmax,MeltingOffsetEnum);
     145                                        InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,ug_epl);
     146                                        break;
     147                                }
     148                        }
     149                }
    150150                /*System convergence check*/
    151151                if(!hydroconverged){
     
    159159                                if (!isefficientlayer){
    160160                                        if ((ndu_sed/nu_sed)<eps_hyd){
    161                                                 if(VerboseConvergence()) _printf0_(setw(50) << left << "   Converged");
     161                                                if(VerboseConvergence()) _printf0_(setw(50) << left << "   Converged \n");
    162162                                                hydroconverged=true;
    163163                                        }
     
    177177                                        if (ndu_epl==0.0 && nu_epl==0.0) nu_epl=1.0e-6; /*Hacking the case where the EPL is used but empty*/
    178178                                        if ((ndu_epl/nu_epl)<eps_hyd && (ndu_sed/nu_sed)<eps_hyd){
    179                                                 if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged");
     179                                                if (VerboseConvergence()) _printf0_(setw(50) << left << "   Converged \n");
    180180                                                hydroconverged=true;
    181181                                        }
     
    195195                if(hydroconverged)break;
    196196        }
    197 
    198197        InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_sed);
    199         InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);
    200        
     198        if(isefficientlayer)InputUpdateFromSolutionx(femmodel->elements,femmodel->nodes, femmodel->vertices, femmodel->loads, femmodel->materials, femmodel->parameters,ug_epl);
     199
    201200        /*Free ressources: */
    202201        delete ug_epl;
Note: See TracChangeset for help on using the changeset viewer.