2 #include "sll_working_precision.h"
22 sll_int32 :: s_deg_0(3)
23 sll_int32 :: n_dofs(3)
24 sll_real64 :: delta_x(3)
25 sll_int32 :: n_total0, n_total1
43 sll_int32,
intent(in) :: s_deg_0(3)
44 sll_int32,
intent(in) :: n_dofs(3)
45 sll_real64,
intent(in) :: delta_x(3)
48 self%s_deg_0 = s_deg_0
50 self%n_total0 = product(n_dofs)
51 self%n_total1 = (n_dofs(1)-1)*n_dofs(2)*n_dofs(3)
52 self%delta_x = delta_x
54 self%n_rows = self%n_total0
55 self%n_cols = self%n_total0
57 self%n_global_rows = self%n_rows
58 self%n_global_cols = self%n_cols
71 sll_real64,
intent( in ) :: x(:)
72 sll_real64,
intent( out ) :: y(:)
74 sll_real64 :: scratch(2*self%n_total0+self%n_total1), scratch1(2*self%n_total0+self%n_total1)
78 call self%mass%dot(scratch, scratch1)
module for abstract linear operator
module for a block linear operator
subroutine create_linear_operator_poisson_clamped_3d(self, mass, s_deg_0, n_dofs, delta_x)
subroutine dot_poisson_clamped_3d(self, x, y)
subroutine free_poisson_clamped_3d(self)
subroutine print_info_poisson_clamped_3d(self)
Utilites for Maxwell solver's with spline finite elements using sparse matrices.
subroutine, public sll_s_multiply_g_clamped(n_dofs, delta_x, s_deg_0, field_in, field_out)
Multiply by dicrete gradient matrix.
subroutine, public sll_s_multiply_gt_clamped(n_dofs, delta_x, s_deg_0, field_in, field_out)
Multiply by transpose of dicrete gradient matrix.
class for abstract linear operator
class for a linear operator_block