6 ! reporting to Lawrence Mitchell
7 ! for the test case to David Ham
14 integer, dimension(:), pointer :: colm
=>null()
18 type(csr_foo
) :: sparsity
19 end type block_csr_matrix
21 interface attach_block
22 module procedure block_csr_attach_block
26 module procedure sparsity_size
29 public
:: size
, attach_block
31 subroutine block_csr_attach_block(matrix
, val
)
32 type(block_csr_matrix
), intent(inout
) :: matrix
33 real, dimension(size(matrix
%sparsity
%colm
)), intent(in
), target
:: val
34 end subroutine block_csr_attach_block
36 pure
function sparsity_size(sparsity
, dim
)
37 integer :: sparsity_size
38 type(csr_foo
), intent(in
) :: sparsity
39 integer, optional
, intent(in
) :: dim
40 end function sparsity_size
41 end module sparse_tools
43 module global_numbering
47 type ele_numbering_type
49 end type ele_numbering_type
53 type(ele_numbering_type
), pointer :: numbering
=>null()
60 module procedure sparsity_size
63 pure
function sparsity_size(sparsity
, dim
)
64 integer :: sparsity_size
65 type(csr_sparsity
), intent(in
) :: sparsity
66 integer, optional
, intent(in
) :: dim
67 end function sparsity_size
69 subroutine make_boundary_numbering(EEList
, xndglno
, ele_n
)
70 type(csr_sparsity
), intent(in
) :: EEList
71 type(element_type
), intent(in
) :: ele_n
72 integer, dimension(size(EEList
,1)*ele_n
%loc
), intent(in
), target
::&
74 integer, dimension(ele_n
%numbering
%boundaries
) :: neigh
77 end subroutine make_boundary_numbering
78 end module global_numbering
80 module sparse_matrices_fields
84 real, dimension(:), pointer :: val
87 subroutine csr_mult_T_scalar(x
)
88 type(scalar_field
), intent(inout
) :: x
89 real, dimension(:), allocatable
:: tmp
92 end subroutine csr_mult_T_scalar
93 end module sparse_matrices_fields
96 use sparse_matrices_fields