GCC Code Coverage Report


Directory: ./
File: src/coordinates/scaled_chartmap_coordinates.f90
Date: 2026-10-22 05:02:02
Coverage Exec Excl Total
Lines: 41.5% 17 0 41
Functions: 50.0% 4 0 8
Branches: 65.8% 50 0 76

Line Branch Exec Source
1 module scaled_chartmap_coordinates
2 use, intrinsic :: iso_fortran_env, only: dp => real64
3 use libneo_coordinates, only: coordinate_system_t, chartmap_coordinate_system_t
4
5 implicit none
6
7 private
8 public :: scaled_chartmap_coordinate_system_t
9 public :: wrap_scaled_chartmap_coordinate_system
10
11 type, extends(chartmap_coordinate_system_t) :: scaled_chartmap_coordinate_system_t
12 real(dp) :: cart_scale = 1.0_dp
13 contains
14 procedure :: evaluate_cart => scaled_chartmap_evaluate_cart
15 procedure :: evaluate_cyl => scaled_chartmap_evaluate_cyl
16 procedure :: covariant_basis => scaled_chartmap_covariant_basis
17 procedure :: metric_tensor => scaled_chartmap_metric_tensor
18 procedure :: from_cyl => scaled_chartmap_from_cyl
19 procedure :: from_cart => scaled_chartmap_from_cart
20 end type scaled_chartmap_coordinate_system_t
21
22 contains
23
24 21 subroutine wrap_scaled_chartmap_coordinate_system(coords, cart_scale)
25 class(coordinate_system_t), allocatable, intent(inout) :: coords
26 real(dp), intent(in) :: cart_scale
27
28 21 class(coordinate_system_t), allocatable :: wrapped
29
30
2/2
✓ Branch 0 taken 19 times.
✓ Branch 1 taken 2 times.
21 if (abs(cart_scale - 1.0_dp) <= epsilon(1.0_dp)) return
31
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
2 if (cart_scale <= 0.0_dp) error stop "chartmap cart_scale must be positive"
32
33 select type (base => coords)
34 type is (scaled_chartmap_coordinate_system_t)
35 ✗ base%cart_scale = base%cart_scale*cart_scale
36 type is (chartmap_coordinate_system_t)
37
28/28
✓ Branch 1 taken 6 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 6 times.
✓ Branch 4 taken 2 times.
✓ Branch 5 taken 6 times.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 6 times.
✓ Branch 8 taken 2 times.
✓ Branch 9 taken 6 times.
✓ Branch 10 taken 2 times.
✓ Branch 11 taken 6 times.
✓ Branch 12 taken 2 times.
✓ Branch 13 taken 6 times.
✓ Branch 14 taken 2 times.
✓ Branch 15 taken 6 times.
✓ Branch 16 taken 2 times.
✓ Branch 17 taken 6 times.
✓ Branch 18 taken 2 times.
✓ Branch 19 taken 6 times.
✓ Branch 20 taken 2 times.
✓ Branch 21 taken 6 times.
✓ Branch 22 taken 2 times.
✓ Branch 23 taken 6 times.
✓ Branch 24 taken 2 times.
✓ Branch 25 taken 6 times.
✓ Branch 26 taken 2 times.
✓ Branch 27 taken 6 times.
✓ Branch 28 taken 2 times.
86 allocate (scaled_chartmap_coordinate_system_t :: wrapped)
38 select type (scaled => wrapped)
39 type is (scaled_chartmap_coordinate_system_t)
40
5/10
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 2 times.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
2 scaled%chartmap_coordinate_system_t = base
41 2 scaled%cart_scale = cart_scale
42 class default
43 error stop "wrap_scaled_chartmap_coordinate_system: allocation failed"
44 end select
45
3/6
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
6 call move_alloc(wrapped, coords)
46 class default
47 ✗ error stop "wrap_scaled_chartmap_coordinate_system: expected chartmap coords"
48 end select
49 end subroutine wrap_scaled_chartmap_coordinate_system
50
51 2 subroutine scaled_chartmap_evaluate_cart(self, u, x)
52 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
53 real(dp), intent(in) :: u(3)
54 real(dp), intent(out) :: x(3)
55
56 2 call self%chartmap_coordinate_system_t%evaluate_cart(u, x)
57
2/2
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
8 x = self%cart_scale*x
58 2 end subroutine scaled_chartmap_evaluate_cart
59
60 ✗ subroutine scaled_chartmap_evaluate_cyl(self, u, x)
61 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
62 real(dp), intent(in) :: u(3)
63 real(dp), intent(out) :: x(3)
64
65 ✗ call self%chartmap_coordinate_system_t%evaluate_cyl(u, x)
66 ✗ x(1) = self%cart_scale*x(1)
67 ✗ x(3) = self%cart_scale*x(3)
68 ✗ end subroutine scaled_chartmap_evaluate_cyl
69
70 ✗ subroutine scaled_chartmap_covariant_basis(self, u, e_cov)
71 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
72 real(dp), intent(in) :: u(3)
73 real(dp), intent(out) :: e_cov(3, 3)
74
75 ✗ call self%chartmap_coordinate_system_t%covariant_basis(u, e_cov)
76 ✗ e_cov = self%cart_scale*e_cov
77 ✗ end subroutine scaled_chartmap_covariant_basis
78
79 ✗ subroutine scaled_chartmap_metric_tensor(self, u, g, ginv, sqrtg)
80 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
81 real(dp), intent(in) :: u(3)
82 real(dp), intent(out) :: g(3, 3), ginv(3, 3), sqrtg
83
84 real(dp) :: scale2
85
86 ✗ call self%chartmap_coordinate_system_t%metric_tensor(u, g, ginv, sqrtg)
87 ✗ scale2 = self%cart_scale*self%cart_scale
88 ✗ g = scale2*g
89 ✗ ginv = ginv/scale2
90 ✗ sqrtg = self%cart_scale*scale2*sqrtg
91 ✗ end subroutine scaled_chartmap_metric_tensor
92
93 ✗ subroutine scaled_chartmap_from_cyl(self, xcyl, u, ierr)
94 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
95 real(dp), intent(in) :: xcyl(3)
96 real(dp), intent(out) :: u(3)
97 integer, intent(out) :: ierr
98
99 real(dp) :: xcyl_base(3)
100
101 ✗ xcyl_base = xcyl
102 ✗ xcyl_base(1) = xcyl_base(1)/self%cart_scale
103 ✗ xcyl_base(3) = xcyl_base(3)/self%cart_scale
104 ✗ call self%chartmap_coordinate_system_t%from_cyl(xcyl_base, u, ierr)
105 ✗ end subroutine scaled_chartmap_from_cyl
106
107 1 subroutine scaled_chartmap_from_cart(self, x, u, ierr)
108 class(scaled_chartmap_coordinate_system_t), intent(in) :: self
109 real(dp), intent(in) :: x(3)
110 real(dp), intent(out) :: u(3)
111 integer, intent(out) :: ierr
112
113 real(dp) :: x_base(3)
114
115
2/2
✓ Branch 0 taken 3 times.
✓ Branch 1 taken 1 time.
4 x_base = x/self%cart_scale
116 1 call self%chartmap_coordinate_system_t%from_cart(x_base, u, ierr)
117 1 end subroutine scaled_chartmap_from_cart
118
119
7/12
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 2 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 time.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 3 times.
7 end module scaled_chartmap_coordinates
120