Ejemplo n.º 1
0
        public ParticleLevelSet(VectorField <SinglePhaseField> Velocity_New, VectorField <SinglePhaseField> Velocity_Old,
                                SinglePhaseField Interface, LevelSetTracker InterfaceTrck, VectorField <SinglePhaseField> LevelSetGradient,
                                int TargetNbrParticlesPerCell, int UpperLimitParticlesPerCell, int LowerLimitParticlesPerCell, double Band_max, double Band_min,
                                double Radius_max, double Radius_min, int max_AddandAttract_Iteration, int NarrowBandWidth, IGridData Grid,
                                bool LevelSetCorrectionWithNeighbourCells, int ReseedingInterval, MinimalDistanceSearchMode LevelSetCorrection,
                                TopologyMergingMode TopologyMerging, NormalVectorDampingMode NormalVectorDamping)

            : base(Velocity_New, Velocity_Old, Interface, InterfaceTrck, LevelSetGradient, NarrowBandWidth, Grid, ReseedingInterval, LevelSetCorrection,
                   TopologyMerging, NormalVectorDamping, TargetNbrParticlesPerCell, UpperLimitParticlesPerCell, LowerLimitParticlesPerCell)
        {
            if (TargetNbrParticlesPerCell <= 0)
            {
                throw new Exception("Target number of particles per cell must not be lower than 1.");
            }
            if (TargetNbrParticlesPerCell > UpperLimitParticlesPerCell)
            {
                throw new Exception("The upper limit of particles per cell must be equal or higher than the target number of particles per cell.");
            }
            if (TargetNbrParticlesPerCell < LowerLimitParticlesPerCell)
            {
                throw new Exception("The lower limit of particles per cell must be equal or lower than the target number of particles per cell.");
            }
            this.Band_max   = Band_max;
            this.Band_min   = Band_min;
            this.Radius_max = Radius_max;
            this.Radius_min = Radius_min;
            this.max_AddandAttract_Iteration = max_AddandAttract_Iteration;
            CorrectionCells  = InterfaceTracker.Regions.GetNearFieldMask(1);
            ReseedingWdith   = NarrowBandWidth;
            Reinitialization = new FastMarchReinit(Interface.Basis);
        }
Ejemplo n.º 2
0
        public FrontTrackingLevelSet2D(VectorField <SinglePhaseField> Velocity_New, VectorField <SinglePhaseField> Velocity_Old, SinglePhaseField Interface, LevelSetTracker InterfaceTrck,
                                       VectorField <SinglePhaseField> LevelSetGradient, int max_AddandAttract_Iteration, int NarrowBandWidth, IGridData Grid, bool LevelSetCorrectionWithNeighbourCells,
                                       int ReseedingInterval, MinimalDistanceSearchMode LevelSetCorrection, TopologyMergingMode TopologyMerging,
                                       NormalVectorDampingMode NormalVectorDamping, double EdgeLengthToCurvatureFraction)

            : base(Velocity_New, Velocity_Old, Interface, InterfaceTrck, LevelSetGradient, NarrowBandWidth, Grid, ReseedingInterval,
                   LevelSetCorrection, TopologyMerging, NormalVectorDamping, 1)
        {
            this.EdgeLengthToCurvatureFraction = EdgeLengthToCurvatureFraction;
        }