ct = Context.get() domain = ct.domain nd = domain.nd mesh = domain.MeshOptions genMesh = mesh.genMesh movingDomain = ct.movingDomain T = ct.T LevelModelType = NCLS.LevelModel coefficients = NCLS.Coefficients(V_model=0, RD_model=3, ME_model=2, checkMass=False, useMetrics=ct.useMetrics, epsFact=ct.ecH, sc_uref=ct.ls_sc_uref, sc_beta=ct.ls_sc_beta, movingDomain=movingDomain) def getDBC_ls(x,flag): if flag == ct.tank.boundaryTags['x+']: return lambda x,t: x[1] - ct.inflow_level elif flag == ct.tank.boundaryTags['x-']: return lambda x,t: x[1] - ct.inflow_level dirichletConditions = {0: lambda x, flag: None} advectiveFluxBoundaryConditions = {0: lambda x, flag: None} diffusiveFluxBoundaryConditions = {0: {}}
parallelPartitioningType = ct.parallelPartitioningType nLayersOfOverlapForParallel = ct.nLayersOfOverlapForParallel restrictFineSolutionToAllMeshes = ct.restrictFineSolutionToAllMeshes triangleOptions = ct.triangleOptions timeIntegration = TimeIntegration.BackwardEuler_cfl stepController = StepControl.Min_dt_controller femSpaces = {0:ct.basis} elementQuadrature = ct.elementQuadrature elementBoundaryQuadrature = ct.elementBoundaryQuadrature massLumping = False conservativeFlux = None numericalFluxType = NCLS.NumericalFlux subgridError = NCLS.SubgridError(physics.coefficients, ct.nd) shockCapturing = NCLS.ShockCapturing(physics.coefficients, ct.nd, shockCapturingFactor = ct.ls_shockCapturingFactor, lag = ct.ls_lag_shockCapturing) fullNewtonFlag = True multilevelNonlinearSolver = NonlinearSolvers.Newton levelNonlinearSolver = NonlinearSolvers.Newton nonlinearSmoother = None linearSmoother = None matrix = LinearAlgebraTools.SparseMatrix if ct.opts.parallel:
from proteus import * from proteus.default_p import * from obstacleInTank3d import * from proteus.mprans import NCLS LevelModelType = NCLS.LevelModel coefficients = NCLS.Coefficients(V_model=0, RD_model=3, ME_model=1, checkMass=False, useMetrics=useMetrics, sc_uref=ls_sc_uref, sc_beta=ls_sc_beta) def getDBC_ls(x, flag): pass dirichletConditions = {0: getDBC_ls} class Shock_phi: def uOfXT(self, x, t): return shockSignedDistance(x) initialConditions = {0: Shock_phi()} fluxBoundaryConditions = {0: 'outFlow'}
from proteus import * from proteus.default_p import * from tank import * from proteus.mprans import NCLS LevelModelType = NCLS.LevelModel coefficients = NCLS.Coefficients(V_model=0, RD_model=3, ME_model=2, checkMass=False, useMetrics=useMetrics, epsFact=epsFact_consrv_heaviside, sc_uref=ls_sc_uref, sc_beta=ls_sc_beta) def getDBC_ls(x, flag): if flag == boundaryTags['left']: return wavePhi else: return None dirichletConditions = {0: getDBC_ls} advectiveFluxBoundaryConditions = {} diffusiveFluxBoundaryConditions = {0: {}} class PerturbedSurface_phi:
domain = ct.domain nd = domain.nd mesh = domain.MeshOptions genMesh = mesh.genMesh movingDomain = ct.movingDomain T = ct.T LevelModelType = NCLS.LevelModel coefficients = NCLS.Coefficients(V_model=int(ct.movingDomain)+0, RD_model=int(ct.movingDomain)+3, ME_model=int(ct.movingDomain)+2, checkMass=False, useMetrics=ct.useMetrics, epsFact=ct.epsFact_consrv_heaviside, sc_uref=ct.ls_sc_uref, sc_beta=ct.ls_sc_beta, movingDomain=ct.movingDomain) dirichletConditions = {0: lambda x, flag: None} advectiveFluxBoundaryConditions = {} diffusiveFluxBoundaryConditions = {0: {}} class PHI_IC: def uOfXT(self, x, t): return x[nd-1] - ct.water_level
V_model=None, RD_model=None, ME_model=0, checkMass=False, epsFact=0.0, useMetrics=1.0, STABILIZATION_TYPE=2, LUMPED_MASS_MATRIX=False, ENTROPY_TYPE=2, FCT=True, num_fct_iter=1) elif useNCLS: LevelModelType = NCLS.LevelModel coefficients = NCLS.Coefficients(V_model=None, RD_model=None, ME_model=0, checkMass=False, epsFact=0.0, useMetrics=1.0) elif useVOF: LevelModelType = VOF.LevelModel coefficients = VOF.Coefficients(LS_model=None, V_model=None, RD_model=None, ME_model=0, checkMass=False, epsFact=0.0, useMetrics=1.0, FCT=False) elif useHJ: coefficients = ConstantVelocityLevelSet(b=velocity) else:
#stepController = FLCBDF_controller stepController = StepControl.Min_dt_cfl_controller time_tol = 10.0 * ls_nl_atol_res atol_u = {0: time_tol} rtol_u = {0: time_tol} else: timeIntegration = TimeIntegration.BackwardEuler_cfl stepController = StepControl.Min_dt_cfl_controller femSpaces = {0: basis} massLumping = False conservativeFlux = None numericalFluxType = NCLS.NumericalFlux subgridError = NCLS.SubgridError(coefficients=physics.coefficients, nd=domain.nd) shockCapturing = NCLS.ShockCapturing( physics.coefficients, domain.nd, shockCapturingFactor=ls_shockCapturingFactor, lag=ls_lag_shockCapturing) fullNewtonFlag = True multilevelNonlinearSolver = NonlinearSolvers.Newton levelNonlinearSolver = NonlinearSolvers.Newton nonlinearSmoother = None linearSmoother = None matrix = LinearAlgebraTools.SparseMatrix