61 integer :: arms(1:3,1:3) = reshape([0,0,0,0,0,0,0,0,0], (/3, 3/))
72 integer,
private :: dim
76 integer,
allocatable :: points(:, :)
79 type(stargeneral_arms_t) :: stargeneral
86 type(stencil_t),
intent(inout) :: this
87 integer,
intent(in) :: dim
88 integer,
intent(in) :: size
95 safe_allocate(this%points(1:this%dim, 1:size))
104 type(stencil_t),
intent(in) :: input
105 type(stencil_t),
intent(out) :: output
110 output%points = input%points
111 output%center = input%center
113 output%stargeneral%narms = input%stargeneral%narms
114 output%stargeneral%arms = input%stargeneral%arms
122 type(stencil_t),
intent(inout) :: this
126 safe_deallocate_a(this%points)
134 type(stencil_t),
intent(in) :: st1
135 type(stencil_t),
intent(in) :: st2
136 type(stencil_t),
intent(inout) :: stu
138 integer :: ii, jj, nstu
139 logical :: not_in_st1
143 assert(st1%dim == st2%dim)
149 stu%points(:, ii) = st1%points(:, ii)
160 if (all(stu%points(:, jj) == st2%points(:, ii)))
then
168 stu%points(:, nstu) = st2%points(:, ii)
196 if (all(this%points(:, ii) == 0)) this%center = ii
This module defines stencils used in Octopus.
subroutine, public stencil_end(this)
subroutine, public stencil_union(st1, st2, stu)
subroutine, public stencil_copy(input, output)
subroutine, public stencil_allocate(this, dim, size)
subroutine, public stencil_init_center(this)
set the index of the central point of the stencil
The class representing the stencil, which is used for non-local mesh operations.