38  use, 
intrinsic :: iso_c_binding, only : c_ptr
 
   40  use json_module, 
only : json_file
 
   52     procedure, pass(this) :: apply_scalar_dev => &
 
   54     procedure, pass(this) :: apply_vector_dev => &
 
   59     procedure, pass(this) :: init_from_components => &
 
 
   74    type(
coef_t), 
target, 
intent(in) :: coef
 
   75    type(json_file), 
intent(inout) :: json
 
   77    call this%init_from_components(coef)
 
 
   84    type(
coef_t), 
target, 
intent(in) :: coef
 
   86    call this%init_base(coef)
 
 
   93    integer, 
intent(in) :: n
 
   94    real(kind=
rp), 
intent(inout), 
dimension(n) :: x
 
   96    logical, 
intent(in), 
optional :: strong
 
  100    if (
present(strong)) 
then 
 
  120    integer, 
intent(in) :: n
 
  121    real(kind=
rp), 
intent(inout), 
dimension(n) :: x
 
  122    real(kind=
rp), 
intent(inout), 
dimension(n) :: y
 
  123    real(kind=
rp), 
intent(inout), 
dimension(n) :: z
 
  125    logical, 
intent(in), 
optional :: strong
 
  129    if (
present(strong)) 
then 
 
  150    type(c_ptr), 
intent(inout) :: x_d
 
  152    logical, 
intent(in), 
optional :: strong
 
  153    type(c_ptr), 
intent(inout) :: strm
 
  156    if (
present(strong)) 
then 
  162    if (strong_ .and. (this%msk(0) .gt. 0)) 
then 
  164            size(this%msk), strm)
 
 
  173    type(c_ptr), 
intent(inout) :: x_d
 
  174    type(c_ptr), 
intent(inout) :: y_d
 
  175    type(c_ptr), 
intent(inout) :: z_d
 
  177    logical, 
intent(in), 
optional :: strong
 
  178    type(c_ptr), 
intent(inout) :: strm
 
  181    if (
present(strong)) 
then 
  187    if (strong_ .and. (this%msk(0) .gt. 0)) 
then 
  189            size(this%msk), strm)
 
 
  198    call this%free_base()
 
 
  205    logical, 
optional, 
intent(in) :: only_facets
 
  206    logical :: only_facets_
 
  208    if (
present(only_facets)) 
then 
  209       only_facets_ = only_facets
 
  211       only_facets_ = .false.
 
  214    call this%finalize_base(only_facets_)
 
 
Defines a boundary condition.
 
subroutine, public device_zero_dirichlet_apply_vector(msk, x, y, z, m, strm)
 
subroutine, public device_zero_dirichlet_apply_scalar(msk, x, m, strm)
 
integer, parameter, public rp
Global precision used in computations.
 
Module with things related to the simulation time.
 
Defines a zero-valued Dirichlet boundary condition.
 
subroutine zero_dirichlet_apply_scalar(this, x, n, time, strong)
Apply boundary condition to a scalar field. to a vector x.
 
subroutine zero_dirichlet_apply_vector_dev(this, x_d, y_d, z_d, time, strong, strm)
Apply boundary condition to a vector field, device version.
 
subroutine zero_dirichlet_init(this, coef, json)
Constructor.
 
subroutine zero_dirichlet_apply_scalar_dev(this, x_d, time, strong, strm)
Apply boundary condition to a scalar field, device version.
 
subroutine zero_dirichlet_free(this)
Destructor.
 
subroutine zero_dirichlet_init_from_components(this, coef)
Constructor.
 
subroutine zero_dirichlet_finalize(this, only_facets)
Finalize.
 
subroutine zero_dirichlet_apply_vector(this, x, y, z, n, time, strong)
Apply boundary condition to a vector field.
 
Base type for a boundary condition.
 
Coefficients defined on a given (mesh, ) tuple. Arrays use indices (i,j,k,e): element e,...
 
A struct that contains all info about the time, expand as needed.
 
Zero-valued Dirichlet boundary condition. Used for no-slip walls, but also for various auxillary cond...