diff --git a/src/geometry_mod.F90 b/src/geometry_mod.F90
index 2ebda8f58f3260142c1a780927c2abe9ef7f2d22..b7159058df8d7b61d6db2e14a9e5dbbea5cd6d17 100644
--- a/src/geometry_mod.F90
+++ b/src/geometry_mod.F90
@@ -18,78 +18,53 @@ contains
     ! evalute metrix, elements, jacobian and gradient
     implicit none
     !
-     IF( my_id .eq. 0 ) WRITE(*,*) 'circular geometry'
+     IF( my_id .eq. 0 ) WRITE(*,*) 's-alpha geometry'
      ! circular model
-     call eval_circular_geometry
+     call eval_s_alpha_geometry
     !
   END SUBROUTINE eval_magnetic_geometry
   !
   !--------------------------------------------------------------------------------
   !
-  subroutine eval_circular_geometry
-   ! evaluate circular geometry model
+  subroutine eval_s_alpha_geometry
+    ! evaluate circular geometry model
 
     ! Ref: Lapilonne et al., PoP, 2009
-   implicit none
-   REAL(dp) :: shear   = 0._dp
-   REAL(dp) :: epsilon = 0.18_dp
+    implicit none
+    REAL(dp) :: z, kx, ky
 
-   ! Metric elements
+    zloop: DO iz = izs,ize
+      z = zarray(iz)
 
-   DO iz = izs,ize
+      ! Metric elements
       gxx(iz) = 1._dp
-      gxy(iz) = shear*zarray(iz) - epsilon*sin(zarray(iz))
-      gyy(iz) = 1._dp + (shear*zarray(iz))**2 &
-           - 2._dp * epsilon *COS(zarray(iz)) - 2._dp*shear * epsilon * zarray(iz)*SIN(zarray(iz))
-      gxz( iz) = - SIN(zarray(iz))
-      gyz( iz) = ( 1._dp - 2._dp * epsilon *COS(zarray( iz)) - epsilon*shear * zarray( iz) * SIN(zarray(iz)) ) /epsilon
-   ENDDO
-
-   ! Relative strengh of radius
-   DO iz = izs,ize
-       hatR(iz) = 1._dp + epsilon*cos(zarray(iz))
-    ENDDO
-
-    DO iz = izs, ize
-       hatB( iz) = sqrt(gxx(iz) * gyy(iz) - gxy(iz)*  gxy(iz))
-   ENDDO
-
-
-   ! Jacobian
-    DO iz = izs,ize
-       Jacobian(iz) = q0*hatR(iz)*hatR(iz)
-    ENDDO
-
-    ! Derivative of the magnetic field strenght
-    DO iz = izs, ize
-       gradxB(iz) = - ( COS( zarray(iz))   + epsilon* SIN( zarray(iz)) * SIN(zarray(iz) )) / hatB(iz)/hatB(iz)
-       gradzB( iz) = epsilon * SIN(zarray(iz)) *( 1._dp - epsilon*COS(zarray(iz)) ) / hatB(iz)/hatB(iz)
-    ENDDO
-
-    ! Gemoetrical coefficients for the curvature operator
-    ! Note: Gamma2 and Gamma3 are obtained directly form Gamma1 in the expression of the curvature operator implemented here
-   DO iz = izs, ize
-      Gamma1( iz) = gxy(iz) * gxy(iz) - gxx(iz) * gyy(iz)
-      Gamma2( iz) = gxz( iz) * gxy( iz) - gxx( iz) * gyz( iz)
-      Gamma3( iz) = gxz( iz) * gyy( iz) - gxy(iz) * gyz(  iz)
-   ENDDO
-
-    ! Curvature operator
-    DO iz = izs, ize
-       DO iky = ikys, ikye
-          DO ikx= ikxs, ikxe
-             Ckxky( ikx, iky,  iz) = Gamma1(iz)/hatB(iz)*((kxarray(ikx) &
-                  + shear*zarray(iz)*kyarray(iky)) * gradzB(iz)/epsilon &
-                  - gradxB(iz)* kyarray(iky))
-          ENDDO
-       ENDDO
-    ENDDO
-
-    ! coefficient in the front of parallel derivative
-    DO iz = izs, ize
-       gradz_coeff( iz) = 1._dp / Jacobian( iz) / hatB( iz)
-    ENDDO
-
-  END SUBROUTINE eval_circular_geometry
+      gxy(iz) = shear*z -eps*SIN(z)
+      gyy(iz) = 1._dp +(shear*z)**2 -2._dp*eps*COS(z) -2._dp*shear*eps*z*SIN(z)
+
+      ! Relative strengh of radius
+      hatR(iz) = 1._dp + eps*cos(z)
+
+      hatB(iz) = SQRT(gxx(iz)*gyy(iz) - gxy(iz)**2)
+
+      ! Jacobian
+      Jacobian(iz) = q0*hatR(iz)**2
+
+      ! Derivative of the magnetic field strenght
+      gradxB(iz) = -(COS(z) + eps*SIN(z)**2)/hatB(iz)/hatB(iz)
+      gradzB(iz) =  eps*SIN(z)
+      ! coefficient in the front of parallel derivative
+      gradz_coeff(iz) = 1._dp / Jacobian(iz) / hatB(iz)
+
+      ! Curvature operator
+      DO iky = ikys, ikye
+        ky = kyarray(iky)
+        DO ikx= ikxs, ikxe
+          kx = kxarray(ikx)
+          Ckxky(ikx,iky,iz) = SIN(z)*kx + (COS(z)+shear*z*SIN(z))*ky
+        ENDDO
+      ENDDO
+
+    ENDDO zloop
+  END SUBROUTINE eval_s_alpha_geometry
 
 end module geometry