GCC Code Coverage Report


Directory: src/athena/
File: src/athena/athena_misc_types_sub.f90
Date: 2026-04-15 16:08:59
Exec Total Coverage
Lines: 104 109 95.4%
Functions: 0 0 -%
Branches: 514 942 54.6%

Line Branch Exec Source
1 submodule(athena__misc_types) athena__misc_types_submodule
2 !! Submodule containing implementations for derived types
3 use coreutils, only: stop_program, print_warning
4
5
6
7 contains
8
9 !###############################################################################
10 146 pure module function create_attribute(name, type, val) result(attribute)
11 !! Function to create an ONNX attribute
12 implicit none
13
14 ! Arguments
15 character(*), intent(in) :: name
16 !! Name of the attribute
17 character(*), intent(in) :: type
18 !! Type of the attribute
19 character(*), intent(in) :: val
20 !! Value of the attribute as a string
21
22 type(onnx_attribute_type) :: attribute
23 !! Resulting ONNX attribute
24
25 146 if(len_trim(name) .gt. 64)then
26 attribute%name = name(1:64)
27 else
28
3/6
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 146 times.
✗ Branch 6 not taken.
146 attribute%name = trim(name)
29 end if
30
31
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
146 if(len_trim(type) .gt. 10)then
32 attribute%type = type(1:10)
33 else
34
3/6
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 146 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 146 times.
✗ Branch 6 not taken.
146 attribute%type = trim(type)
35 end if
36
37
4/10
✓ Branch 1 taken 146 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 146 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 146 times.
✓ Branch 9 taken 146 times.
✗ Branch 10 not taken.
146 attribute%val = trim(val)
38
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
292 end function create_attribute
39 !###############################################################################
40
41
42 !###############################################################################
43 17 module subroutine print_to_unit_actv(this, unit, identifier)
44 !! Interface for printing activation function details
45 implicit none
46
47 ! Arguments
48 class(base_actv_type), intent(in) :: this
49 !! Instance of the activation type
50 integer, intent(in) :: unit
51 !! Unit number for output
52 character(*), intent(in), optional :: identifier
53 !! Optional identifier for the activation function
54
55 ! Local variables
56 integer :: i
57 !! Loop index
58 17 type(onnx_attribute_type), allocatable, dimension(:) :: attributes
59 !! Array of ONNX attributes
60
61
62
10/32
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 17 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 17 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 42 times.
✓ Branch 10 taken 17 times.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✓ Branch 25 taken 42 times.
✓ Branch 26 taken 17 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 42 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 42 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 42 times.
118 attributes = this%export_attributes()
63
64
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 15 times.
17 if(present(identifier))then
65
1/2
✓ Branch 3 taken 2 times.
✗ Branch 4 not taken.
2 write(unit,'(3X,"ACTIVATION: ",A)') trim(identifier)
66 else
67 15 write(unit,'(3X,"ACTIVATION")')
68 end if
69
2/2
✓ Branch 0 taken 42 times.
✓ Branch 1 taken 17 times.
59 do i = 1, size(attributes)
70 write(unit,'(6X,A," = ",A)') &
71
6/12
✗ Branch 1 not taken.
✓ Branch 2 taken 42 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 42 times.
✓ Branch 9 taken 42 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 12 taken 42 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 42 times.
✓ Branch 19 taken 42 times.
✗ Branch 20 not taken.
59 trim(attributes(i)%name), trim(attributes(i)%val)
72 end do
73 17 write(unit,'(3X,"END ACTIVATION")')
74
75
8/14
✓ Branch 0 taken 17 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 17 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 42 times.
✓ Branch 7 taken 17 times.
✓ Branch 8 taken 42 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 42 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 42 times.
✗ Branch 13 not taken.
76 end subroutine print_to_unit_actv
76 !###############################################################################
77
78
79 !###############################################################################
80 87 module subroutine setup_bounds(this, length, pad, imethod)
81 !! Set up replication bounds for facets
82 implicit none
83
84 ! Arguments
85 class(facets_type), intent(inout) :: this
86 !! Instance of the facets type
87 integer, dimension(this%rank), intent(in) :: length, pad
88 !! Length of the shape and padding
89 integer, intent(in) :: imethod
90 !! Method for padding:
91 !! 3 - circular, 4 - reflection, 5 - replication
92
93 ! Local variables
94 integer :: i, j, k, l, facet_idx, idim
95 !! Loop indices and facet index
96 logical :: btest_k0, btest_k1
97 !! Binary test variables for edge cases
98
99
100 ! Calculate number of facets based on rank and number of fixed dimensions
101 !---------------------------------------------------------------------------
102 ! For rank n, we have:
103 ! nfixed_dims = 1: n choose 1 * 2 facets (faces, 2 per dimension)
104 ! nfixed_dims = 2: n choose 2 * 4 facets (edges, 4 per dimension pair)
105 ! nfixed_dims = 3: n choose 3 * 8 facets (corners, 8 for 3D)
106 131 select case(this%nfixed_dims)
107 case(1)
108 44 this%type = "face"
109 44 this%num = 2 * this%rank
110 case(2)
111 29 this%type = "edge"
112 this%num = 4 * nint( &
113 gamma(real(this%rank + 1)) / ( &
114 gamma(2.0 + 1.0) * gamma(real(this%rank - 2 + 1)) &
115 ) &
116 29 )
117 case(3)
118 14 this%type = "corner"
119 14 this%num = 8
120 case default
121 call stop_program("Invalid number of fixed dimensions")
122
3/4
✓ Branch 0 taken 44 times.
✓ Branch 1 taken 29 times.
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
87 return
123 end select
124
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 87 times.
87 if(this%rank .lt. this%nfixed_dims)then
125 call stop_program("Number of fixed dimensions exceeds rank")
126 return
127 end if
128
129
130 ! Allocate arrays
131 !---------------------------------------------------------------------------
132
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 87 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
87 if(allocated(this%dim)) deallocate(this%dim)
133
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 87 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
87 if(allocated(this%orig_bound)) deallocate(this%orig_bound)
134
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 87 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
87 if(allocated(this%dest_bound)) deallocate(this%dest_bound)
135
136
7/14
✓ Branch 0 taken 87 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 87 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 87 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 87 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 87 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 87 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 87 times.
87 allocate(this%dim(this%num))
137
9/18
✓ Branch 0 taken 87 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 87 times.
✓ Branch 4 taken 87 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 87 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 87 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 87 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 87 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 87 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 87 times.
87 allocate(this%orig_bound(2, this%rank, this%num))
138
9/18
✓ Branch 0 taken 87 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 87 times.
✓ Branch 4 taken 87 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 87 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 87 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 87 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 87 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 87 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 87 times.
87 allocate(this%dest_bound(2, this%rank, this%num))
139
140
141 ! Initialise all bounds to 1
142 !---------------------------------------------------------------------------
143
6/6
✓ Branch 0 taken 516 times.
✓ Branch 1 taken 87 times.
✓ Branch 2 taken 1368 times.
✓ Branch 3 taken 516 times.
✓ Branch 4 taken 2736 times.
✓ Branch 5 taken 1368 times.
4707 this%orig_bound = 1
144
145 ! Set up replication bounds
146 !---------------------------------------------------------------------------
147 131 select case(this%nfixed_dims)
148 case(1) ! Faces
149 44 facet_idx = 0
150
2/2
✓ Branch 0 taken 88 times.
✓ Branch 1 taken 44 times.
176 do i = 1, this%rank
151
2/2
✓ Branch 0 taken 176 times.
✓ Branch 1 taken 88 times.
308 do j = 1, 2 ! Two faces per dimension
152 176 facet_idx = facet_idx + 1
153
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 176 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 176 times.
176 this%dim(facet_idx) = i
154
2/2
✓ Branch 0 taken 408 times.
✓ Branch 1 taken 176 times.
584 do l = 1, this%rank
155
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 408 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 408 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 408 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 408 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 408 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 408 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 408 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 408 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 408 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 408 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 408 times.
✓ Branch 33 taken 816 times.
✓ Branch 34 taken 408 times.
1224 this%orig_bound(:,l,facet_idx) = [ 1, length(l) ]
156
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 408 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 408 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 408 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 408 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 408 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 408 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 408 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 408 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 408 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 408 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 408 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 408 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 408 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 408 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 408 times.
✓ Branch 45 taken 816 times.
✓ Branch 46 taken 408 times.
1400 this%dest_bound(:,l,facet_idx) = [ pad(l) + 1, pad(l) + length(l) ]
157 end do
158
159 ! Set origin bounds
160 182 select case(imethod)
161 case(3) ! circular
162
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
12 if(j .eq. 1)then
163 27 this%orig_bound(:,i,facet_idx) = &
164
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 3 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 3 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 3 times.
✓ Branch 45 taken 6 times.
✓ Branch 46 taken 3 times.
9 [ length(i) - pad(i) + 1, length(i) ]
165 else
166
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 3 times.
✓ Branch 33 taken 6 times.
✓ Branch 34 taken 3 times.
9 this%orig_bound(:,i,facet_idx) = [ 1, pad(i) ]
167 end if
168 case(4) ! reflection
169
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 3 times.
12 if(j .eq. 1)then
170
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 3 times.
✓ Branch 33 taken 6 times.
✓ Branch 34 taken 3 times.
9 this%orig_bound(:,i,facet_idx) = [ pad(i) + 1, 2 ]
171 else
172 27 this%orig_bound(:,i,facet_idx) = &
173
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 3 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 3 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 3 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 3 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 3 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 3 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 3 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 3 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 3 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 3 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 3 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 3 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 3 times.
✓ Branch 45 taken 6 times.
✓ Branch 46 taken 3 times.
9 [ length(i) - 1, length(i) - pad(i) ]
174 end if
175 case(5) ! replication
176
18/28
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 16 times.
✓ Branch 3 taken 148 times.
✓ Branch 4 taken 8 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 8 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 8 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 8 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 8 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 8 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 8 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 8 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 8 times.
✓ Branch 36 taken 16 times.
✓ Branch 37 taken 8 times.
192 if(j .ne. 1) this%orig_bound(:,i,facet_idx) = length(i)
177 end select
178
179 ! Set destination bounds
180
2/2
✓ Branch 0 taken 88 times.
✓ Branch 1 taken 88 times.
264 if(j .eq. 1)then
181
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 88 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 88 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 88 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 88 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 88 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 88 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 88 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 88 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 88 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 88 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 88 times.
✓ Branch 33 taken 176 times.
✓ Branch 34 taken 88 times.
264 this%dest_bound(:,i,facet_idx) = [1, pad(i)]
182 else
183 792 this%dest_bound(:,i,facet_idx) = &
184
19/36
✗ Branch 0 not taken.
✓ Branch 1 taken 88 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 88 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 88 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 88 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 88 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 88 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 88 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 88 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 88 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 88 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 88 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 88 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 88 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 88 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 88 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 88 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 88 times.
✓ Branch 51 taken 176 times.
✓ Branch 52 taken 88 times.
264 [length(i) + pad(i) + 1, length(i) + pad(i) * 2]
185 end if
186 end do
187 end do
188 case(2) ! Edges
189 29 facet_idx = 0
190 29 idim = 0
191
2/2
✓ Branch 0 taken 43 times.
✓ Branch 1 taken 29 times.
101 do j = this%rank, 2, -1
192
2/2
✓ Branch 0 taken 57 times.
✓ Branch 1 taken 43 times.
129 do i = j-1, 1, -1
193 57 idim = idim + 1
194
2/2
✓ Branch 0 taken 228 times.
✓ Branch 1 taken 57 times.
328 do k = 0, 3 ! Four combinations per dimension pair
195 228 facet_idx = facet_idx + 1
196
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 228 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 228 times.
228 this%dim(facet_idx) = idim
197 228 btest_k0 = btest(k,0)
198 228 btest_k1 = btest(k,1)
199
2/2
✓ Branch 0 taken 624 times.
✓ Branch 1 taken 228 times.
852 do l = 1, this%rank
200
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 624 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 624 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 624 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 624 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 624 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 624 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 624 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 624 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 624 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 624 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 624 times.
✓ Branch 33 taken 1248 times.
✓ Branch 34 taken 624 times.
1872 this%orig_bound(:,l,facet_idx) = [ 1, length(l) ]
201
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 624 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 624 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 624 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 624 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 624 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 624 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 624 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 624 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 624 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 624 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 624 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 624 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 624 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 624 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 624 times.
✓ Branch 45 taken 1248 times.
✓ Branch 46 taken 624 times.
2100 this%dest_bound(:,l,facet_idx) = [ pad(l) + 1, pad(l) + length(l) ]
202 end do
203
204 ! Set original bounds using binary pattern
205 232 select case(imethod)
206 case(3) ! circular
207
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
4 if(btest_k1)then
208 18 this%orig_bound(:,i,facet_idx) = &
209
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 33 taken 4 times.
✓ Branch 34 taken 2 times.
6 [ 1, pad(i) ]
210 else
211 18 this%orig_bound(:,i,facet_idx) = &
212
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✓ Branch 45 taken 4 times.
✓ Branch 46 taken 2 times.
6 [ length(i) - pad(i) + 1, length(i) ]
213 end if
214
2/2
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
8 if(btest_k0)then
215 18 this%orig_bound(:,j,facet_idx) = &
216
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✓ Branch 33 taken 4 times.
✓ Branch 34 taken 2 times.
6 [ 1, pad(j) ]
217 else
218 18 this%orig_bound(:,j,facet_idx) = &
219
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 2 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 2 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 2 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 2 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 2 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 2 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 2 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 2 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 2 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 2 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 2 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 2 times.
✓ Branch 45 taken 4 times.
✓ Branch 46 taken 2 times.
6 [ length(j) - pad(j) + 1, length(j) ]
220 end if
221 case(4) ! reflection
222 36 this%orig_bound(:,i,facet_idx) = &
223
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 4 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 4 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 4 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 4 times.
✓ Branch 45 taken 8 times.
✓ Branch 46 taken 4 times.
12 [ length(i) - 1, length(i) - pad(i) ]
224 36 this%orig_bound(:,j,facet_idx) = &
225
17/32
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 4 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 4 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 4 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 4 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 4 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 4 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 4 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 4 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 4 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 4 times.
✓ Branch 45 taken 8 times.
✓ Branch 46 taken 4 times.
12 [ length(j) - 1, length(j) - pad(j) ]
226 case(5) ! replication
227
14/24
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 8 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 8 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 8 times.
✗ Branch 20 not taken.
✓ Branch 21 taken 8 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 8 times.
✗ Branch 26 not taken.
✓ Branch 27 taken 8 times.
✗ Branch 29 not taken.
✓ Branch 30 taken 8 times.
✓ Branch 32 taken 16 times.
✓ Branch 33 taken 8 times.
32 if(btest_k1) this%orig_bound(:,i,facet_idx) = length(i)
228
18/28
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 16 times.
✓ Branch 3 taken 204 times.
✓ Branch 4 taken 8 times.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 8 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 8 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 8 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 8 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 8 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 8 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 8 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 8 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 8 times.
✓ Branch 36 taken 16 times.
✓ Branch 37 taken 8 times.
260 if(btest_k0) this%orig_bound(:,j,facet_idx) = length(j)
229 end select
230
231 ! Set destination bounds
232 2052 this%dest_bound(:,i,facet_idx) = &
233 merge(&
234
4/8
✗ Branch 1 not taken.
✓ Branch 2 taken 228 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 228 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 228 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 228 times.
912 [ length(i) + pad(i) + 1, length(i) + pad(i) * 2 ], &
235
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 228 times.
228 [ 1, pad(i) ], &
236 btest_k1 &
237
18/32
✗ Branch 0 not taken.
✓ Branch 1 taken 228 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 228 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 228 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 228 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 228 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 228 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 228 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 228 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 228 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 228 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 228 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 228 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 228 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 228 times.
✓ Branch 37 taken 456 times.
✓ Branch 38 taken 228 times.
✓ Branch 39 taken 228 times.
✓ Branch 40 taken 228 times.
1824 )
238 2052 this%dest_bound(:,j,facet_idx) = &
239 merge( &
240
4/8
✗ Branch 1 not taken.
✓ Branch 2 taken 228 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 228 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 228 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 228 times.
912 [ length(j) + pad(j) + 1, length(j) + pad(j) * 2 ], &
241
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 228 times.
228 [ 1, pad(j) ], &
242 btest_k0 &
243
18/32
✗ Branch 0 not taken.
✓ Branch 1 taken 228 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 228 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 228 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 228 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 228 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 228 times.
✗ Branch 17 not taken.
✓ Branch 18 taken 228 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 228 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 228 times.
✗ Branch 23 not taken.
✓ Branch 24 taken 228 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 228 times.
✗ Branch 28 not taken.
✓ Branch 29 taken 228 times.
✗ Branch 31 not taken.
✓ Branch 32 taken 228 times.
✗ Branch 34 not taken.
✓ Branch 35 taken 228 times.
✓ Branch 37 taken 456 times.
✓ Branch 38 taken 228 times.
✓ Branch 39 taken 228 times.
✓ Branch 40 taken 228 times.
1881 )
244 end do
245 end do
246 end do
247 case(3) ! Corners (3D only)
248
5/6
✓ Branch 0 taken 44 times.
✓ Branch 1 taken 29 times.
✓ Branch 2 taken 14 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 112 times.
✓ Branch 5 taken 14 times.
199 do i = 1, 8
249
2/4
✗ Branch 0 not taken.
✓ Branch 1 taken 112 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 112 times.
112 this%dim(i) = 0 ! All dimensions are fixed
250 ! Use binary pattern for all three dimensions
251
2/2
✓ Branch 0 taken 336 times.
✓ Branch 1 taken 112 times.
462 do j = 1, this%rank
252
2/2
✓ Branch 0 taken 168 times.
✓ Branch 1 taken 168 times.
448 if(btest(i-1, this%rank-j))then
253
12/22
✗ Branch 0 not taken.
✓ Branch 1 taken 168 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 168 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 168 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 168 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 168 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 168 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 168 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 168 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 168 times.
✓ Branch 30 taken 336 times.
✓ Branch 31 taken 168 times.
504 this%orig_bound(:,j,i) = length(j)
254 1512 this%dest_bound(:,j,i) = &
255
19/36
✗ Branch 0 not taken.
✓ Branch 1 taken 168 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 168 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 168 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 168 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 168 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 168 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 168 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 168 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 168 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 168 times.
✗ Branch 33 not taken.
✓ Branch 34 taken 168 times.
✗ Branch 36 not taken.
✓ Branch 37 taken 168 times.
✗ Branch 39 not taken.
✓ Branch 40 taken 168 times.
✗ Branch 42 not taken.
✓ Branch 43 taken 168 times.
✗ Branch 45 not taken.
✓ Branch 46 taken 168 times.
✗ Branch 48 not taken.
✓ Branch 49 taken 168 times.
✓ Branch 51 taken 336 times.
✓ Branch 52 taken 168 times.
504 [ length(j) + pad(j) + 1, length(j) + pad(j) * 2 ]
256 else
257
10/18
✗ Branch 0 not taken.
✓ Branch 1 taken 168 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 168 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 168 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 168 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 168 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 168 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 168 times.
✓ Branch 24 taken 336 times.
✓ Branch 25 taken 168 times.
504 this%orig_bound(:,j,i) = 1
258
13/24
✗ Branch 0 not taken.
✓ Branch 1 taken 168 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 168 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 168 times.
✗ Branch 9 not taken.
✓ Branch 10 taken 168 times.
✗ Branch 12 not taken.
✓ Branch 13 taken 168 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 168 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 168 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 168 times.
✗ Branch 24 not taken.
✓ Branch 25 taken 168 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 168 times.
✗ Branch 30 not taken.
✓ Branch 31 taken 168 times.
✓ Branch 33 taken 336 times.
✓ Branch 34 taken 168 times.
504 this%dest_bound(:,j,i) = [1, pad(j)]
259 end if
260 end do
261 end do
262 end select
263
264 end subroutine setup_bounds
265 !###############################################################################
266
267 end submodule athena__misc_types_submodule
268