cbcflow.schemes.utils module¶
Utility functions and classes shared between scheme implementations.
Modules:
Classes¶
-
class
cbcflow.schemes.utils.NSSpacePoolMixed(mesh, u_degree, p_degree, u_family='auto', p_family='auto')¶ Bases:
cbcflow.schemes.utils.spaces.NSSpacePoolA function space pool with custom named spaces for use with mixed Navier-Stokes schemes.
-
class
cbcflow.schemes.utils.NSSpacePoolSplit(mesh, u_degree, p_degree, u_family='auto', p_family='auto')¶ Bases:
cbcflow.schemes.utils.spaces.NSSpacePoolA function space pool with custom named spaces for use with split Navier-Stokes schemes.
-
class
cbcflow.schemes.utils.NSSpacePool(mesh, u_degree, p_degree, u_family='auto', p_family='auto')¶ A function space pool with custom named spaces for use with Navier-Stokes schemes.
-
DQ¶ Vector valued space for pressure gradient.
-
DQ0¶ Scalar valued space for pressure gradient component.
-
DU¶ Vector valued space for gradients of single velocity components.
-
DU0¶ Scalar valued space for gradient component of single velocity component.
-
DV¶ Tensor valued space for gradients of velocity vector.
-
Q¶ Scalar valued space for pressure.
-
U¶ Scalar valued space for velocity components.
-
V¶ Vector valued space for velocity vector.
-
W¶ Mixed velocity-pressure space.
-
-
class
cbcflow.schemes.utils.NSSpacePoolSegregated(mesh, u_degree, p_degree, u_family='auto', p_family='auto')¶ Bases:
cbcflow.schemes.utils.spaces.NSSpacePoolA function space pool with custom named spaces for use with segregated Navier-Stokes schemes.
-
class
cbcflow.schemes.utils.RhsGenerator(space)¶ Bases:
objectClass for storing the instructions to create the RHS vector b. The two main purposes of this class are:
- make it easy to define the LHS and RHS in the same place
- make it easy to generate RHS from matrix-XXX products, where XXX may be either * a Constant (which can be projected to a vector at once) * an Expression (which must be projected each time, because its parameters may change) * a Function
Functions¶
-
cbcflow.schemes.utils.make_rhs_pressure_bcs(problem, spaces, bcs, v)¶
-
cbcflow.schemes.utils.assign_ics_mixed(up0, spaces, ics)¶ Assign initial conditions from ics to up0.
up0 is a mixed function in spaces.W = spaces.V * spaces.Q, while ics = (icu, icp); icu = (icu0, icu1, ...).
-
cbcflow.schemes.utils.assign_ics_split(u0, p0, spaces, ics)¶ Assign initial conditions from ics to u0, p0.
u0 is a vector valued function in spaces.V and p0 is a scalar function in spaces.Q, while ics = (icu, icp); icu = (icu0, icu1, ...).
-
cbcflow.schemes.utils.compute_regular_timesteps(problem)¶ Compute fixed timesteps for problem.
The first timestep will be T0 while the last timestep will be in the interval [T, T+dt).
Returns (dt, timesteps, start_timestep).
-
cbcflow.schemes.utils.create_solver(solver, preconditioner='default')¶ Create solver from arguments. Should be flexible to handle
- strings specifying the solver and preconditioner types
- PETScKrylovSolver/PETScPreconditioner objects
- petsc4py.PETSC.KSP/petsc4py.PETSC.pc objects
or any combination of the above
-
cbcflow.schemes.utils.make_segregated_velocity_bcs(problem, spaces, bcs)¶
-
cbcflow.schemes.utils.make_velocity_bcs(problem, spaces, bcs)¶
-
cbcflow.schemes.utils.assign_ics_segregated(u0, p0, spaces, ics)¶ Assign initial conditions from ics to u0[:], p0.
u0 is a list of scalar functions each in spaces.U and p0 is a scalar function in spaces.Q, while ics = (icu, icp); icu = (icu0, icu1, ...).
-
cbcflow.schemes.utils.make_pressure_bcs(problem, spaces, bcs)¶
-
cbcflow.schemes.utils.make_mixed_velocity_bcs(problem, spaces, bcs)¶