Index: ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp =================================================================== --- ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp (revision 25464) +++ ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp (revision 25465) @@ -9,18 +9,15 @@ void GroundinglineMigrationx(Elements* elements,Nodes* nodes, Vertices* vertices,Loads* loads,Materials* materials, Parameters* parameters){ - int migration_style,analysis_type; - IssmDouble *vertices_potentially_ungrounding = NULL; - IssmDouble *phi_ungrounding = NULL; - Element *element = NULL; + int migration_style; + IssmDouble *vertices_potentially_ungrounding = NULL; + IssmDouble *phi_ungrounding = NULL; /*retrieve parameters: */ parameters->FindParam(&migration_style,GroundinglineMigrationEnum); - parameters->FindParam(&analysis_type,AnalysisTypeEnum); - if(migration_style==NoneEnum) return; - if(VerboseModule()) _printf0_(" Migrating grounding line\n"); + if(VerboseModule()) _printf0_(" Migrating grounding line based on "<Size();i++){ - element=xDynamicCast(elements->GetObjectByOffset(i)); + Element* element=xDynamicCast(elements->GetObjectByOffset(i)); element->MigrateGroundingLine(phi_ungrounding); } Index: ../trunk-jpl/src/c/Makefile.am =================================================================== --- ../trunk-jpl/src/c/Makefile.am (revision 25464) +++ ../trunk-jpl/src/c/Makefile.am (revision 25465) @@ -311,6 +311,7 @@ ./cores/damage_core.cpp \ ./cores/levelsetfunctionslope_core.cpp \ ./cores/movingfront_core.cpp \ + ./cores/groundingline_core.cpp \ ./modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp \ ./classes/Loads/Riftfront.cpp \ ./modules/ConstraintsStatex/RiftConstraintsState.cpp \ Index: ../trunk-jpl/src/c/cores/groundingline_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/groundingline_core.cpp (nonexistent) +++ ../trunk-jpl/src/c/cores/groundingline_core.cpp (revision 25465) @@ -0,0 +1,42 @@ +/*!\file: groundingline_core.cpp + * \brief: core of the groundingline solution + */ + +#include "./cores.h" +#include "../toolkits/toolkits.h" +#include "../classes/classes.h" +#include "../shared/shared.h" +#include "../modules/modules.h" +#include "../solutionsequences/solutionsequences.h" + +void groundingline_core(FemModel* femmodel){ + + /*Start profiler*/ + femmodel->profiler->Start(GROUNDINGLINECORE); + + /* intermediaries */ + bool save_results; + + /* recover parameters */ + femmodel->parameters->FindParam(&save_results,SaveResultsEnum); + + /*Move grounding line*/ + GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); + + /*Update geometry and mask accordingly*/ + femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum); + extrudefrombase_core(femmodel); + femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum); + extrudefrombase_core(femmodel); + femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum); + extrudefrombase_core(femmodel); + + if(save_results){ + if(VerboseSolution()) _printf0_(" saving groundingline results\n"); + int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum}; + femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); + } + + /*Stop profiler*/ + femmodel->profiler->Stop(GROUNDINGLINECORE); +} Index: ../trunk-jpl/src/c/cores/transient_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/transient_core.cpp (revision 25464) +++ ../trunk-jpl/src/c/cores/transient_core.cpp (revision 25465) @@ -220,6 +220,7 @@ } thermal_core(femmodel); } + /* Using Hydrology dc coupled we need to compute smb in the hydrology inner time loop*/ if(issmb) { if(VerboseSolution()) _printf0_(" computing smb\n"); @@ -231,7 +232,7 @@ int hydrology_model; hydrology_core(femmodel); femmodel->parameters->FindParam(&hydrology_model,HydrologyModelEnum); - if(hydrology_model!=HydrologydcEnum && issmb)smb_core(femmodel); + if(hydrology_model!=HydrologydcEnum && issmb) smb_core(femmodel); } if(isstressbalance && (step%sb_coupling_frequency==0 || step==1) ) { @@ -259,27 +260,8 @@ } if(isgroundingline){ - - /*Start profiler*/ - femmodel->profiler->Start(GROUNDINGLINECORE); - if(VerboseSolution()) _printf0_(" computing new grounding line position\n"); - GroundinglineMigrationx(femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); - - femmodel->parameters->SetParam(MaskOceanLevelsetEnum,InputToExtrudeEnum); - extrudefrombase_core(femmodel); - femmodel->parameters->SetParam(BaseEnum,InputToExtrudeEnum); - extrudefrombase_core(femmodel); - femmodel->parameters->SetParam(SurfaceEnum,InputToExtrudeEnum); - extrudefrombase_core(femmodel); - - /*Stop profiler*/ - femmodel->profiler->Stop(GROUNDINGLINECORE); - - if(save_results){ - int outputs[3] = {SurfaceEnum,BaseEnum,MaskOceanLevelsetEnum}; - femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); - } + groundingline_core(femmodel); } if(isgia){ @@ -295,6 +277,9 @@ if(isesa) esa_core(femmodel); /*Sea level rise: */ - if(isslr) sealevelchange_core(femmodel); + if(isslr){ + if(VerboseSolution()) _printf0_(" computing sea level rise\n"); + sealevelchange_core(femmodel); + } }/*}}}*/ Index: ../trunk-jpl/src/c/cores/esa_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/esa_core.cpp (revision 25464) +++ ../trunk-jpl/src/c/cores/esa_core.cpp (revision 25465) @@ -63,7 +63,7 @@ } /*early return: */ - if( !iscoupler & !isesa) return; //we are not interested in being here :) + if(!iscoupler & !isesa) return; //we are not interested in being here :) /*In what follows we assume we are all running esa, either in coupled, or uncoupled mode:*/ if(VerboseSolution()) _printf0_(" computing elastic adjustment\n"); Index: ../trunk-jpl/src/c/cores/cores.h =================================================================== --- ../trunk-jpl/src/c/cores/cores.h (revision 25464) +++ ../trunk-jpl/src/c/cores/cores.h (revision 25465) @@ -25,6 +25,7 @@ void surfaceslope_core(FemModel* femmodel); void levelsetfunctionslope_core(FemModel* femmodel); void movingfront_core(FemModel* femmodel); +void groundingline_core(FemModel* femmodel); void bedslope_core(FemModel* femmodel); void meshdeformation_core(FemModel* femmodel); void control_core(FemModel* femmodel); Index: ../trunk-jpl/src/c/cores/sealevelchange_core.cpp =================================================================== --- ../trunk-jpl/src/c/cores/sealevelchange_core.cpp (revision 25464) +++ ../trunk-jpl/src/c/cores/sealevelchange_core.cpp (revision 25465) @@ -39,9 +39,6 @@ /*Should we be here?:*/ if(!isslr)return; - /*Verbose: */ - if(VerboseSolution()) _printf0_(" computing sea level rise\n"); - /*Run gia core: */ if(isgia){ #ifdef _HAVE_GIA_