Peano
fuseADERSolvers Namespace Reference

Functions

def compute_projector_to_point_set (quad_points_from, quad_points_to)
 Transforms the degrees of freedom located at Lagrange quadrature_points to degrees of freedom located at a set of points as defined by the parameter points. More...
 
def flatten (xss)
 
def different_basis_postprocessing_kernel (condition, order, proj, solver_name)
 
def same_basis_postprocessing_kernel (condition, order, solver_name)
 
def dg2dgFace ()
 
def fuseADERSolvers (solver1, solver2, cond_1, cond_2)
 This is a variant which would also let you remove a bunch of other unnecessary operations as well the effort of storing and loading the cells at every timestamp, however it doesn't work at the moment because the boundary face between one condition and the other needs to be both at the same time so that the cells on either side of said face receive their required information. More...
 

Variables

string compute_time_step_size
 Variant 2: quick and dirty but functional and easy to make work, also more flexible def fuseADERSolvers(solver1, solver2, condition): solver_1_cond = " and " + condition solver_2_cond = " and not ( " + condition + ")". More...
 
 _compute_time_step_size
 
 aderSolver1QuadPoints = solver1._basis.quadrature_points(render=False)
 
 aderSolver2QuadPoints = solver2._basis.quadrature_points(render=False)
 
def proj1 = flatten(compute_projector_to_point_set(aderSolver1QuadPoints, aderSolver2QuadPoints))
 
def proj2 = flatten(compute_projector_to_point_set(aderSolver2QuadPoints, aderSolver1QuadPoints))
 
 f = open("observers/dg2dgface.h", "w")
 

Function Documentation

◆ compute_projector_to_point_set()

def fuseADERSolvers.compute_projector_to_point_set (   quad_points_from,
  quad_points_to 
)

Transforms the degrees of freedom located at Lagrange quadrature_points to degrees of freedom located at a set of points as defined by the parameter points.

Let us denote by P the projection operator. The DoF are computed according to:

u@x = sum_{m} P_m u^DG_m

Returns: Projector: The corresponding degrees of freedom located at the set of points defined by the parameter x.

Definition at line 4 of file fuseADERSolvers.py.

◆ dg2dgFace()

def fuseADERSolvers.dg2dgFace ( )

Definition at line 137 of file fuseADERSolvers.py.

◆ different_basis_postprocessing_kernel()

def fuseADERSolvers.different_basis_postprocessing_kernel (   condition,
  order,
  proj,
  solver_name 
)

Definition at line 37 of file fuseADERSolvers.py.

References ccz4.str.

◆ flatten()

def fuseADERSolvers.flatten (   xss)

Definition at line 34 of file fuseADERSolvers.py.

◆ fuseADERSolvers()

def fuseADERSolvers.fuseADERSolvers (   solver1,
  solver2,
  cond_1,
  cond_2 
)

This is a variant which would also let you remove a bunch of other unnecessary operations as well the effort of storing and loading the cells at every timestamp, however it doesn't work at the moment because the boundary face between one condition and the other needs to be both at the same time so that the cells on either side of said face receive their required information.

This is not possible with a simple negated condition, and wouldn't work with a lot of more complicated conditions (e.g. bathimetries)

Definition at line 191 of file fuseADERSolvers.py.

◆ same_basis_postprocessing_kernel()

def fuseADERSolvers.same_basis_postprocessing_kernel (   condition,
  order,
  solver_name 
)

Definition at line 89 of file fuseADERSolvers.py.

Variable Documentation

◆ _compute_time_step_size

fuseADERSolvers._compute_time_step_size
private

Definition at line 258 of file fuseADERSolvers.py.

◆ aderSolver1QuadPoints

fuseADERSolvers.aderSolver1QuadPoints = solver1._basis.quadrature_points(render=False)

Definition at line 261 of file fuseADERSolvers.py.

◆ aderSolver2QuadPoints

fuseADERSolvers.aderSolver2QuadPoints = solver2._basis.quadrature_points(render=False)

Definition at line 262 of file fuseADERSolvers.py.

◆ compute_time_step_size

string fuseADERSolvers.compute_time_step_size
Initial value:
1 = """
2  double timeStepSize = std::min( repositories::""" + solver1.get_name_of_global_instance() + """.getAdmissibleTimeStepSize(),
3  repositories::""" + solver2.get_name_of_global_instance() + """.getAdmissibleTimeStepSize());
4  """

Variant 2: quick and dirty but functional and easy to make work, also more flexible def fuseADERSolvers(solver1, solver2, condition): solver_1_cond = " and " + condition solver_2_cond = " and not ( " + condition + ")".

Definition at line 253 of file fuseADERSolvers.py.

◆ f

◆ proj1

◆ proj2