SUBROUTINE AnalyticCosh( x, t, c, cimag, gradc, crr, crz, czz, rho )
REAL (KIND=8), INTENT( IN ) :: x( 2 )
REAL (KIND=8), INTENT( IN ) :: t( 2 ) ! ray tangent; for edge cases of updating segments
REAL (KIND=8), INTENT( OUT ) :: c, cimag, gradc( 2 ), crr, crz, czz, rho
REAL (KIND=8) :: cr, cz, A, B, D, z
iSegz = 1
rho = 1.0
D = 3000.0
z = x( 2 )
A = 1500.0
B = 0.0003
D = 1500.0
c = A * COSH( B * ( Z - D ) )
cz = B * A * SINH( B * ( Z - D ) )
czz = B * B * A * COSH( B * ( Z - D ) )
cimag = 0.
cr = 0.0
gradc = [ cr, cz ]
crz = 0.0
crr = 0.0
RETURN
END SUBROUTINE AnalyticCosh