Index: ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp =================================================================== --- ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp (revision 17706) +++ ../trunk-jpl/src/c/modules/GroundinglineMigrationx/GroundinglineMigrationx.cpp (revision 17707) @@ -94,7 +94,7 @@ phi[i]=-1.; } else{ - _error_("not supported (vertexfloating="<elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters); + + if(groundingline_migration==ContactEnum){ + femmodel->parameters->SetParam(MaskGroundediceLevelsetEnum,InputToExtrudeEnum); + extrudefrombase_core(femmodel); + } if(save_results){ int outputs[3] = {SurfaceEnum,BaseEnum,MaskGroundediceLevelsetEnum}; femmodel->RequestedOutputsx(&femmodel->results,&outputs[0],3); Index: ../trunk-jpl/src/c/classes/Elements/Tria.cpp =================================================================== --- ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 17706) +++ ../trunk-jpl/src/c/classes/Elements/Tria.cpp (revision 17707) @@ -4367,9 +4367,34 @@ density = rho_ice/rho_water; oldfloating = this->IsFloating(); //figure out if element is floating before we start to change everything - if(migration_style==ContactEnum){ - for(i=0;iPid()]; + if(migration_style == ContactEnum){ + for(i = 0;i < NUMVERTICES;i++) phi[i] = phi_ungrounding[vertices[i]->Pid()]; this->inputs->AddInput(new TriaInput(MaskGroundediceLevelsetEnum,&phi[0],P1Enum)); + + /*go through vertices, and update inputs, considering them to be TriaVertex type: */ + for(i = 0;i < NUMVERTICES;i++){ + /*Ice shelf: if bed below bathymetry, impose it at the bathymetry and update surface, elso do nothing */ + if(phi[i] >= 0.){ + if(b[i] < r[i]){ + b[i] = r[i]; + } + } + } + + /*Add basal melting rate if element just ungrounded*/ + for(i=0;iinputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0],P1Enum)); + } + + /*Update inputs*/ + this->inputs->AddInput(new TriaInput(BaseEnum,&b[0],P1Enum)); return; } @@ -4437,7 +4462,7 @@ } } - /*Add basal melting rate if element just ungrounded*/ + /*Add basal melting rate if element just ungrounded*/ if(!oldfloating && floatingelement==true){ for(i=0;iinputs->AddInput(new TriaInput(BasalforcingsMeltingRateEnum,&melting[0],P1Enum));