Changeset 23387


Ignore:
Timestamp:
10/05/18 07:12:10 (6 years ago)
Author:
bdef
Message:

CHG: streamlining in EPL activation and dealing with frozen nodes EffectivPressure

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

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/analyses/HydrologyDCEfficientAnalysis.cpp

    r23377 r23387  
    607607                                /*centered*/
    608608                                //thickness[i] = old_thickness[i]*(1.0+opening-closing)/(1.0-opening+closing);
    609 
    610                                 //if(element->nodes[i]->Sid()==2299){
    611                                 //      printf("for node %i \n",element->nodes[i]->Sid());
    612                                 //      printf(" old thickness is  %g \n",old_thickness[i]);
    613                                 //      printf(" new thickness is  %g \n",thickness[i]);
    614                                 //}
    615609                                /*Take care of otherthikening*/
    616610                                if(thickness[i]>max_thick){
     
    709703                if(old_active[i]>0.){
    710704                        vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
    711                         /* If epl thickness gets under colapse thickness, close the layer */
    712                         if(epl_thickness[i]<colapse_thick){
    713                                 //if(element->nodes[i]->Sid()==2299){
    714                                         //printf("masking node %i with thickness %f\n",element->nodes[i]->Sid(),epl_thickness[i]);}
     705                        /* If epl thickness gets under colapse thickness, close the layer if there is no residual*/
     706                        if(epl_thickness[i]<colapse_thick && residual[i]<=0.){
    715707                                vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
    716708                                recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
    717709                        }
    718710                }
    719                 /*If node is now closed bring its thickness back to initial*/
    720711                if (old_active[i]==0.){
    721                         epl_thickness[i]=init_thick;
    722712                        /*Activate if we have a residual from sediment*/
    723713                        if(residual[i]>0.){
    724714                                vec_mask->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
    725                                 if(old_active[i]==0.){
    726                                         recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
    727                                 }
     715                                recurence->SetValue(basalelement->nodes[i]->Sid(),1.,INS_VAL);
     716                        }
     717                        else{
     718                                /*If node is now closed bring its thickness back to initial*/
     719                                epl_thickness[i]=init_thick;
     720                                vec_mask->SetValue(basalelement->nodes[i]->Sid(),0.,INS_VAL);
    728721                        }
    729722                }
  • issm/trunk-jpl/src/c/analyses/HydrologyDCInefficientAnalysis.cpp

    r23377 r23387  
    2828
    2929        /*retrieve some parameters: */
    30          bool   issmb;
     30        bool   issmb;
    3131        iomodel->FindConstant(&issmb,"md.transient.issmb");
    3232        iomodel->FindConstant(&hydrology_model,"md.hydrology.model");
     
    374374        }
    375375        if(smb_model==SMBgradientscomponentsEnum){
    376                 surface_runoff_input = basalelement->GetInput(SmbRunoffEnum); _assert_(surface_runoff_input); 
     376                surface_runoff_input = basalelement->GetInput(SmbRunoffEnum); _assert_(surface_runoff_input);
    377377        }
    378378
     
    518518        /*Use the dof list to index into the solution vector: */
    519519
    520         /*need to introduce thawed test herre*/
    521520        for(int i=0;i<numnodes;i++){
    522521                values[i] =solution[doflist[i]];
     
    546545                kappa=kmax*pow(10.,penalty_factor);
    547546
     547
     548                Input* thawed_element_input = basalelement->GetInput(HydrologydcMaskThawedEltEnum); _assert_(thawed_element_input);
     549                thawed_element_input->GetInputValue(&thawed_element);
     550
    548551                for(int i=0;i<numnodes;i++){
     552                        /*frozen elements heads are set to base elevation*/
     553                        if(!thawed_element){
     554                                values[i]=base[i];
     555                        }
    549556                        GetHydrologyDCInefficientHmax(&h_max,basalelement,basalelement->GetNode(i));
    550557                        if(values[i]>h_max) {
     
    555562                                residual[i] = 0.;
    556563                        }
    557                         //adding base in min to take into account heads under bed wich don't change N
    558                         //pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(max((min(h_max,values[i])-base[i]),0.0)));
    559564                        pressure[i]=(rho_ice*g*thickness[i])-(rho_freshwater*g*(values[i]-base[i]));
     565
    560566                }
    561567                xDelete<IssmDouble>(thickness);
  • issm/trunk-jpl/src/c/solutionsequences/solutionsequence_hydro_nonlinear.cpp

    r22902 r23387  
    190190                                Reduceloadx(pf,Kfs,ys); delete Kfs;
    191191                                delete uf_epl;
     192
    192193                                femmodel->profiler->Start(SOLVER);
    193194                                Solverx(&uf_epl,Kff,pf,uf_epl_sub_iter,df,femmodel->parameters);
    194195                                femmodel->profiler->Stop(SOLVER);
     196
    195197                                delete Kff; delete pf; delete df;
    196198                                delete uf_epl_sub_iter;
    197                                 uf_epl_sub_iter=uf_epl->Duplicate();
     199                                uf_epl_sub_iter=uf_epl->Duplicate();_assert_(uf_epl_sub_iter);
    198200                                uf_epl->Copy(uf_epl_sub_iter);
    199201                                delete ug_epl;
     
    215217                                        _error_("   maximum number of EPL iterations (" << hydro_maxiter << ") exceeded");
    216218                                }
    217                                 //If there is some colapse go through sediment again
    218                                 /* if(ThickCount<L2Count)eplconverged=true; */
    219219                                eplcount++;
    220220
Note: See TracChangeset for help on using the changeset viewer.