22 use,
intrinsic :: iso_fortran_env
36 logical :: local_basis
40 real(real64) :: min_mesh_scaling_product
42 generic :: vector_from_cartesian => dvector_from_cartesian, zvector_from_cartesian
48 generic :: covector_to_cartesian => dcovector_to_cartesian, zcovector_to_cartesian
54 procedure(coordinate_system_to_cartesian),
deferred :: to_cartesian
56 procedure(coordinate_system_from_cartesian),
deferred :: from_cartesian
58 procedure(coordinate_system_det_jac),
deferred :: det_jac
60 procedure(coordinate_system_write_info),
deferred :: write_info
62 procedure(coordinates_surface_element),
deferred :: surface_element
73 class(coordinate_system_t),
target,
intent(in) :: this
74 real(real64),
intent(in) :: chi(:)
75 real(real64) :: xx(1:this%dim)
83 class(coordinate_system_t),
target,
intent(in) :: this
84 real(real64),
intent(in) :: xx(:)
85 real(real64) :: chi(1:this%dim)
89 real(real64) function coordinate_system_det_jac(this, xx, chi) result(jdet)
92 class(coordinate_system_t),
intent(in) :: this
93 real(real64),
intent(in) :: xx(:)
94 real(real64),
intent(in) :: chi(:)
101 class(coordinate_system_t),
intent(in) :: this
102 integer,
optional,
intent(in) :: iunit
103 type(namespace_t),
optional,
intent(in) :: namespace
107 real(real64) function coordinates_surface_element(this, idir) result(ds)
110 class(coordinate_system_t),
intent(in) :: this
111 integer,
intent(in) :: idir
119 class(coordinate_system_t),
intent(in) :: this
120 real(real64),
intent(in) :: xx(:)
121 real(real64),
intent(inout) :: vv(:)
122 real(real64),
optional,
intent(in) :: src(:)
132 real(real64),
intent(in) :: xx(:)
133 complex(real64),
intent(inout) :: vv(:)
134 complex(real64),
optional,
intent(in) :: src(:)
146 real(real64),
intent(in) :: xx(:)
147 real(real64),
intent(inout) :: cv(:)
148 real(real64),
optional,
intent(in) :: src(:)
158 real(real64),
intent(in) :: xx(:)
159 complex(real64),
intent(inout) :: cv(:)
160 complex(real64),
optional,
intent(in) :: src(:)
Convert Cartesian coordinates to coordinates in this coordinate system.
Convert coordinates given in this coordinate system to Cartesian coordinates.
subroutine dcoordinate_system_covector_to_cartesian(this, xx, cv, src)
subroutine zcoordinate_system_covector_to_cartesian(this, xx, cv, src)
subroutine dcoordinate_system_vector_from_cartesian(this, xx, vv, src)
subroutine zcoordinate_system_vector_from_cartesian(this, xx, vv, src)
abstract class to describe coordinate systems