Changeset 24040


Ignore:
Timestamp:
06/24/19 04:29:29 (6 years ago)
Author:
Mathieu Morlighem
Message:

CHG: added kill iceberg option

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

Legend:

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

    r23837 r24040  
    102102/*}}}*/
    103103void LevelsetAnalysis::UpdateParameters(Parameters* parameters,IoModel* iomodel,int solution_enum,int analysis_enum){/*{{{*/
     104
    104105        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.stabilization",LevelsetStabilizationEnum));
    105106        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.reinit_frequency",LevelsetReinitFrequencyEnum));
     107        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.kill_icebergs",LevelsetKillIcebergsEnum));
    106108        parameters->AddObject(iomodel->CopyConstantObject("md.levelset.calving_max",CalvingMaxEnum));
    107109       
  • issm/trunk-jpl/src/c/cores/movingfront_core.cpp

    r24038 r24040  
    1616
    1717        /* intermediaries */
    18         bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront;
     18        bool save_results,isstressbalance,ismasstransport,isthermal,isenthalpy,islevelset,ismovingfront,killicebergs;
    1919        int  domaintype, num_extrapol_vars, index,reinit_frequency,step;
    2020        int* extrapol_vars=NULL;
     
    2929        femmodel->parameters->FindParam(&ismovingfront,TransientIsmovingfrontEnum);
    3030        femmodel->parameters->FindParam(&reinit_frequency,LevelsetReinitFrequencyEnum);
     31        femmodel->parameters->FindParam(&killicebergs,LevelsetKillIcebergsEnum);
    3132        femmodel->parameters->FindParam(&step,StepEnum);
    3233        if(isthermal && domaintype==Domain3DEnum) femmodel->parameters->FindParam(&isenthalpy,ThermalIsenthalpyEnum);
     
    8990
    9091        /*Kill ice berg to avoid free body motion*/
    91 //      if(VerboseSolution()) _printf0_("   looking for icebergs to kill\n");
    92 //      KillIcebergsx(femmodel);
     92        if(killicebergs){
     93                if(VerboseSolution()) _printf0_("   looking for icebergs to kill\n");
     94                KillIcebergsx(femmodel);
     95        }
    9396
    9497        /*Reset levelset if needed*/
  • issm/trunk-jpl/src/c/modules/KillIcebergsx/KillIcebergsx.cpp

    r24037 r24040  
    5656                                Element* element=xDynamicCast<Element*>(femmodel->elements->GetObjectByOffset(i));
    5757
     58                                if(!element->IsIceInElement()) continue;
    5859                                if(!element_flag[i]){
    5960                                        int numvertices = element->GetNumberOfVertices();
     
    9192                }
    9293        }
     94        int temp = PressureEnum;
     95        InputUpdateFromVectorx(femmodel,local_mask,PressureEnum,VertexLIdEnum);
     96        femmodel->RequestedOutputsx(&femmodel->results,&temp,1);
    9397
    94         InputUpdateFromVectorx(femmodel,local_mask,PressureEnum,VertexLIdEnum);
    9598        /*Cleanup*/
    9699        xDelete<bool>(element_flag);
  • issm/trunk-jpl/src/c/shared/Enum/Enum.vim

    r24019 r24040  
    221221syn keyword cConstant InversionStepThresholdEnum
    222222syn keyword cConstant InversionTypeEnum
     223syn keyword cConstant LevelsetKillIcebergsEnum
    223224syn keyword cConstant LevelsetReinitFrequencyEnum
    224225syn keyword cConstant LevelsetStabilizationEnum
     
    12691270syn keyword cType Cfsurfacesquare
    12701271syn keyword cType Channel
    1271 syn keyword cType classes
    12721272syn keyword cType Constraint
    12731273syn keyword cType Constraints
     
    12761276syn keyword cType ControlInput
    12771277syn keyword cType Covertree
     1278syn keyword cType DataSetParam
    12781279syn keyword cType DatasetInput
    1279 syn keyword cType DataSetParam
    12801280syn keyword cType Definition
    12811281syn keyword cType DependentObject
     
    12901290syn keyword cType ElementHook
    12911291syn keyword cType ElementMatrix
     1292syn keyword cType ElementVector
    12921293syn keyword cType Elements
    1293 syn keyword cType ElementVector
    12941294syn keyword cType ExponentialVariogram
    12951295syn keyword cType ExternalResult
     
    12981298syn keyword cType Friction
    12991299syn keyword cType Gauss
    1300 syn keyword cType GaussianVariogram
    1301 syn keyword cType gaussobjects
    13021300syn keyword cType GaussPenta
    13031301syn keyword cType GaussSeg
    13041302syn keyword cType GaussTetra
    13051303syn keyword cType GaussTria
     1304syn keyword cType GaussianVariogram
    13061305syn keyword cType GenericExternalResult
    13071306syn keyword cType GenericOption
     
    13111310syn keyword cType Input
    13121311syn keyword cType Inputs
    1313 syn keyword cType IntArrayInput
    13141312syn keyword cType IntInput
    13151313syn keyword cType IntMatParam
     
    13191317syn keyword cType IssmDirectApplicInterface
    13201318syn keyword cType IssmParallelDirectApplicInterface
    1321 syn keyword cType krigingobjects
    13221319syn keyword cType Load
    13231320syn keyword cType Loads
     
    13301327syn keyword cType Matice
    13311328syn keyword cType Matlitho
    1332 syn keyword cType matrixobjects
    13331329syn keyword cType MatrixParam
    13341330syn keyword cType Misfit
     
    13431339syn keyword cType Observations
    13441340syn keyword cType Option
     1341syn keyword cType OptionUtilities
    13451342syn keyword cType Options
    1346 syn keyword cType OptionUtilities
    13471343syn keyword cType Param
    13481344syn keyword cType Parameters
     
    13571353syn keyword cType Regionaloutput
    13581354syn keyword cType Results
     1355syn keyword cType RiftStruct
    13591356syn keyword cType Riftfront
    1360 syn keyword cType RiftStruct
    13611357syn keyword cType Seg
    13621358syn keyword cType SegInput
     1359syn keyword cType SegRef
    13631360syn keyword cType Segment
    1364 syn keyword cType SegRef
    13651361syn keyword cType SpcDynamic
    13661362syn keyword cType SpcStatic
     
    13821378syn keyword cType Vertex
    13831379syn keyword cType Vertices
     1380syn keyword cType classes
     1381syn keyword cType gaussobjects
     1382syn keyword cType krigingobjects
     1383syn keyword cType matrixobjects
    13841384syn keyword cType AdjointBalancethickness2Analysis
    13851385syn keyword cType AdjointBalancethicknessAnalysis
     
    14001400syn keyword cType FreeSurfaceBaseAnalysis
    14011401syn keyword cType FreeSurfaceTopAnalysis
     1402syn keyword cType GLheightadvectionAnalysis
    14021403syn keyword cType GiaIvinsAnalysis
    1403 syn keyword cType GLheightadvectionAnalysis
    14041404syn keyword cType HydrologyDCEfficientAnalysis
    14051405syn keyword cType HydrologyDCInefficientAnalysis
  • issm/trunk-jpl/src/c/shared/Enum/EnumDefinitions.h

    r24019 r24040  
    215215        InversionStepThresholdEnum,
    216216        InversionTypeEnum,
     217        LevelsetKillIcebergsEnum,
    217218        LevelsetReinitFrequencyEnum,
    218219        LevelsetStabilizationEnum,
  • issm/trunk-jpl/src/c/shared/Enum/EnumToStringx.cpp

    r24019 r24040  
    223223                case InversionStepThresholdEnum : return "InversionStepThreshold";
    224224                case InversionTypeEnum : return "InversionType";
     225                case LevelsetKillIcebergsEnum : return "LevelsetKillIcebergs";
    225226                case LevelsetReinitFrequencyEnum : return "LevelsetReinitFrequency";
    226227                case LevelsetStabilizationEnum : return "LevelsetStabilization";
  • issm/trunk-jpl/src/c/shared/Enum/StringToEnumx.cpp

    r24019 r24040  
    226226              else if (strcmp(name,"InversionStepThreshold")==0) return InversionStepThresholdEnum;
    227227              else if (strcmp(name,"InversionType")==0) return InversionTypeEnum;
     228              else if (strcmp(name,"LevelsetKillIcebergs")==0) return LevelsetKillIcebergsEnum;
    228229              else if (strcmp(name,"LevelsetReinitFrequency")==0) return LevelsetReinitFrequencyEnum;
    229230              else if (strcmp(name,"LevelsetStabilization")==0) return LevelsetStabilizationEnum;
     
    259260              else if (strcmp(name,"MaterialsMeltingpoint")==0) return MaterialsMeltingpointEnum;
    260261              else if (strcmp(name,"MaterialsMixedLayerCapacity")==0) return MaterialsMixedLayerCapacityEnum;
    261               else if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
    262262         else stage=3;
    263263   }
    264264   if(stage==3){
    265               if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
     265              if (strcmp(name,"MaterialsMuWater")==0) return MaterialsMuWaterEnum;
     266              else if (strcmp(name,"MaterialsRheologyLaw")==0) return MaterialsRheologyLawEnum;
    266267              else if (strcmp(name,"MaterialsRhoFreshwater")==0) return MaterialsRhoFreshwaterEnum;
    267268              else if (strcmp(name,"MaterialsRhoIce")==0) return MaterialsRhoIceEnum;
     
    382383              else if (strcmp(name,"SmbT0wet")==0) return SmbT0wetEnum;
    383384              else if (strcmp(name,"SmbTdiff")==0) return SmbTdiffEnum;
    384               else if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
    385385         else stage=4;
    386386   }
    387387   if(stage==4){
    388               if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
     388              if (strcmp(name,"SmbThermoDeltaTScaling")==0) return SmbThermoDeltaTScalingEnum;
     389              else if (strcmp(name,"SmoothThicknessMultiplier")==0) return SmoothThicknessMultiplierEnum;
    389390              else if (strcmp(name,"SolutionType")==0) return SolutionTypeEnum;
    390391              else if (strcmp(name,"SteadystateMaxiter")==0) return SteadystateMaxiterEnum;
     
    505506              else if (strcmp(name,"DeviatoricStresszz")==0) return DeviatoricStresszzEnum;
    506507              else if (strcmp(name,"DeviatoricStress1")==0) return DeviatoricStress1Enum;
    507               else if (strcmp(name,"DeviatoricStress2")==0) return DeviatoricStress2Enum;
    508508         else stage=5;
    509509   }
    510510   if(stage==5){
    511               if (strcmp(name,"DistanceToCalvingfront")==0) return DistanceToCalvingfrontEnum;
     511              if (strcmp(name,"DeviatoricStress2")==0) return DeviatoricStress2Enum;
     512              else if (strcmp(name,"DistanceToCalvingfront")==0) return DistanceToCalvingfrontEnum;
    512513              else if (strcmp(name,"DistanceToGroundingline")==0) return DistanceToGroundinglineEnum;
    513514              else if (strcmp(name,"Domain2Dhorizontal")==0) return Domain2DhorizontalEnum;
     
    628629              else if (strcmp(name,"NewDamage")==0) return NewDamageEnum;
    629630              else if (strcmp(name,"Node")==0) return NodeEnum;
    630               else if (strcmp(name,"OmegaAbsGradient")==0) return OmegaAbsGradientEnum;
    631631         else stage=6;
    632632   }
    633633   if(stage==6){
    634               if (strcmp(name,"P0")==0) return P0Enum;
     634              if (strcmp(name,"OmegaAbsGradient")==0) return OmegaAbsGradientEnum;
     635              else if (strcmp(name,"P0")==0) return P0Enum;
    635636              else if (strcmp(name,"P1")==0) return P1Enum;
    636637              else if (strcmp(name,"Pressure")==0) return PressureEnum;
     
    751752              else if (strcmp(name,"SmbWini")==0) return SmbWiniEnum;
    752753              else if (strcmp(name,"SmbZMax")==0) return SmbZMaxEnum;
    753               else if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
    754754         else stage=7;
    755755   }
    756756   if(stage==7){
    757               if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
     757              if (strcmp(name,"SmbZMin")==0) return SmbZMinEnum;
     758              else if (strcmp(name,"SmbZTop")==0) return SmbZTopEnum;
    758759              else if (strcmp(name,"SmbZY")==0) return SmbZYEnum;
    759760              else if (strcmp(name,"StrainRateeffective")==0) return StrainRateeffectiveEnum;
     
    874875              else if (strcmp(name,"Outputdefinition60")==0) return Outputdefinition60Enum;
    875876              else if (strcmp(name,"Outputdefinition61")==0) return Outputdefinition61Enum;
    876               else if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
    877877         else stage=8;
    878878   }
    879879   if(stage==8){
    880               if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
     880              if (strcmp(name,"Outputdefinition62")==0) return Outputdefinition62Enum;
     881              else if (strcmp(name,"Outputdefinition63")==0) return Outputdefinition63Enum;
    881882              else if (strcmp(name,"Outputdefinition64")==0) return Outputdefinition64Enum;
    882883              else if (strcmp(name,"Outputdefinition65")==0) return Outputdefinition65Enum;
     
    997998              else if (strcmp(name,"ElementHook")==0) return ElementHookEnum;
    998999              else if (strcmp(name,"ElementSId")==0) return ElementSIdEnum;
    999               else if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
    10001000         else stage=9;
    10011001   }
    10021002   if(stage==9){
    1003               if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
     1003              if (strcmp(name,"EnthalpyAnalysis")==0) return EnthalpyAnalysisEnum;
     1004              else if (strcmp(name,"EsaAnalysis")==0) return EsaAnalysisEnum;
    10041005              else if (strcmp(name,"EsaSolution")==0) return EsaSolutionEnum;
    10051006              else if (strcmp(name,"EsaTransitions")==0) return EsaTransitionsEnum;
     
    11201121              else if (strcmp(name,"MaxDivergence")==0) return MaxDivergenceEnum;
    11211122              else if (strcmp(name,"MaxVel")==0) return MaxVelEnum;
    1122               else if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
    11231123         else stage=10;
    11241124   }
    11251125   if(stage==10){
    1126               if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
     1126              if (strcmp(name,"MaxVx")==0) return MaxVxEnum;
     1127              else if (strcmp(name,"MaxVy")==0) return MaxVyEnum;
    11271128              else if (strcmp(name,"MaxVz")==0) return MaxVzEnum;
    11281129              else if (strcmp(name,"Melange")==0) return MelangeEnum;
     
    12431244              else if (strcmp(name,"ThermalAnalysis")==0) return ThermalAnalysisEnum;
    12441245              else if (strcmp(name,"ThermalSolution")==0) return ThermalSolutionEnum;
    1245               else if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
    12461246         else stage=11;
    12471247   }
    12481248   if(stage==11){
    1249               if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
     1249              if (strcmp(name,"ThicknessErrorEstimator")==0) return ThicknessErrorEstimatorEnum;
     1250              else if (strcmp(name,"TotalCalvingFluxLevelset")==0) return TotalCalvingFluxLevelsetEnum;
    12501251              else if (strcmp(name,"TotalFloatingBmb")==0) return TotalFloatingBmbEnum;
    12511252              else if (strcmp(name,"TotalFloatingBmbScaled")==0) return TotalFloatingBmbScaledEnum;
Note: See TracChangeset for help on using the changeset viewer.