public ScalarExtVelAdvection(LevelSetTracker LSTrk, SinglePhaseField LevelSet, VectorField <SinglePhaseField> LevelSetGradient, VectorField <SinglePhaseField> Velocity, EllipticExtVelAlgoControl Control, bool nearfield, out SinglePhaseField Extension) { int D = LSTrk.GridDat.SpatialDimension; double PenaltyBase = Control.PenaltyMultiplierInterface * ((double)((LevelSet.Basis.Degree + 1) * (LevelSet.Basis.Degree + D))) / ((double)D); ILevelSetForm InterfaceFlux = new ScalarVelocityInterfaceForm(PenaltyBase, LSTrk); this.nearfield = nearfield; List <DGField> Paramlist = new List <DGField> { }; Paramlist.AddRange(Velocity); Extension = new SinglePhaseField(Velocity[0].Basis, "ExtensionVelocity"); VelocityExtender = new Extender(Extension, LSTrk, InterfaceFlux, Paramlist, LevelSetGradient, Control); Advection = new ScalarVelocityAdvection(LSTrk, LevelSet, Extension, null, nearfield); }
public ScalarExtUpdate(LevelSetTracker LSTrk, SinglePhaseField LevelSet, VectorField <SinglePhaseField> LevelSetGradient, VectorField <SinglePhaseField> Velocity, EllipticExtVelAlgoControl Control, out SinglePhaseField Extension, bool nearfield) { this.LevelSet = LevelSet; this.nearfield = nearfield; int D = LSTrk.GridDat.SpatialDimension; double PenaltyBase = Control.PenaltyMultiplierInterface * ((double)((LevelSet.Basis.Degree + 1) * (LevelSet.Basis.Degree + D))) / ((double)D); ILevelSetComponent InterfaceFlux = new ScalarVelocityInterfaceForm(PenaltyBase, LSTrk); List <DGField> Paramlist = new List <DGField> { }; Paramlist.AddRange(Velocity); Extension = new SinglePhaseField(LevelSet.Basis, "ExtensionVelocity"); this.Extension = Extension; VelocityExtender = new Extender(Extension, LSTrk, InterfaceFlux, Paramlist, LevelSetGradient, Control); VelocityExtender.ConstructExtension(nearfield: nearfield); }