jacobian_block Interface

public interface jacobian_block

Calls

interface~~jacobian_block~~CallsGraph interface~jacobian_block jacobian_block proc~constructor~6 constructor interface~jacobian_block->proc~constructor~6

Contents


Module Procedures

private function constructor(source_field, direction, extra_derivative, boundary_locs, boundary_types, boundary_operations, coef) result(this)

Author
Chris MacMackin
Date
December 2016

Build a block in a Jacobian matrix, with the form where is a scalar field and is the differentiation operator in the -direction. Additionally, a further differentiation operator may be added to the right hand side of this matrix block. Optional arguments allow for handling of boundary conditions. See the end of the documentation of the jacobian_block type for a description of how boundary conditions are treated.

Arguments

Type IntentOptional AttributesName
class(scalar_field), intent(in) :: source_field

A scalar field () making up this block of the Jacobian

integer, intent(in) :: direction

The direction in which field derivatives are taken.

integer, intent(in), optional :: extra_derivative

If present, specifies the direction of a differentiation operator to be added to the right hand side of this matrix block.

integer, intent(in), optional dimension(:):: boundary_locs

The locations in the raw representation of rhs for which boundary conditions are specified. Defaults to there being none.

integer, intent(in), optional dimension(:):: boundary_types

Integers specifying the type of boundary condition. The type of boundary condition corresponding to a given integer is specified in boundary_types_mod. Only Dirichlet and Neumann conditions are supported. Defaults to Dirichlet. The order in which they are stored must match that of boundary_locs.

procedure(jacobian_block_bounds), optional :: boundary_operations

A function specifying the values to place at the boundaries of the result when using the Jacobian block for multiplication. By default, all boundaries are set to 0. The order in which the resulting values are stored should match that of boundary_locs.

real(kind=r8), intent(in), optional :: coef

An optional coefficient by which the the term in the operator will be multipled. Default value is 1.

Return Value type(jacobian_block)

A new Jacobian block