Skip to content

Commit

Permalink
add in bxkappa2 and bxkappa3
Browse files Browse the repository at this point in the history
  • Loading branch information
HarukiST committed Oct 4, 2024
1 parent aeaddb9 commit 2617c5d
Showing 1 changed file with 47 additions and 4 deletions.
51 changes: 47 additions & 4 deletions hypnotoad/core/mesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,13 @@ class MeshRegion:
"curl(b/B)",
doc="Expression used to calculate curvature operator 'bxcv'",
value_type=str,
allowed=["curl(b/B)", "curl(b/B) with x-y derivatives", "bxkappa"],
allowed=[
"curl(b/B)",
"curl(b/B) with x-y derivatives",
"bxkappa",
"bxkappa2",
"bxkappa3",
],
),
curvature_smoothing=WithMeta(
None,
Expand Down Expand Up @@ -1084,7 +1090,7 @@ def calcMetric(self):
- self.Rxy * numpy.abs(self.Bpxy) * self.I * self.tanBeta / self.hy
)

self.J = self.hy / numpy.abs(self.Bpxy)
self.J = self.bpsign * self.hy / self.Bpxy

self.g_11 = (
1.0 / (self.Rxy * self.Bpxy * self.cosBeta) ** 2
Expand Down Expand Up @@ -1359,10 +1365,10 @@ def curl_bOverB_zetahat(R, Z):
self.bxcvx = self.Bxy / 2.0 * self.curl_bOverB_x
self.bxcvy = self.Bxy / 2.0 * self.curl_bOverB_y
self.bxcvz = self.Bxy / 2.0 * self.curl_bOverB_z
elif self.user_options.curvature_type == "bxkappa":

# bxkappa for cocos1-extension by H. Seto (QST)
elif self.user_options.curvature_type == "bxkappa":

# b0 x kappa terms for cocos1-extension by H. Seto (QST)
curlxb0u = -self.Btxy * self.Rxy / (self.J * self.Bxy**2) * self.DDY("#Bxy")
curlxb0w = self.DDX(
"#Bxy*#hy/#Bpxy"
Expand All @@ -1379,6 +1385,43 @@ def curl_bOverB_zetahat(R, Z):
self.bxcvy = bxcvv
self.bxcvz = bxcvw - self.I * bxcvu

elif self.user_options.curvature_type == "bxkappa2":

curlxb0u = -self.Btxy * self.Rxy / (self.J * self.Bxy**2) * self.DDY("#Bxy")
curlxb0w = self.bpsign * (
self.bpsign * self.Bpxy**2 / self.Bxy / self.J * self.DDX("#hy/#Bpxy")
+ self.DDX("#Bxy")
- self.Btxy * self.Rxy / self.Bxy * self.DDX("#Btxy/#Rxy")
)

coefv = -self.Btxy * self.Bpxy * self.Rxy / (self.hy * self.Bxy**2)
bxcvu = curlxb0u
bxcvv = curlxb0w * coefv
bxcvw = curlxb0w

self.bxcvx = bxcvu
self.bxcvy = bxcvv
self.bxcvz = bxcvw - self.I * bxcvu

elif self.user_options.curvature_type == "bxkappa3":

pprime = self.meshParent.equilibrium.regions[
self.equilibriumRegion.name
].pprime(self.psixy)

mu0 = 4e-7 * numpy.pi
curlxb0u = -self.Btxy * self.Rxy / (self.J * self.Bxy**2) * self.DDY("#Bxy")
curlxb0w = -self.bpsign * (mu0 / self.Bxy * pprime + self.DDX("#Bxy"))

coefv = -self.Btxy * self.Bpxy * self.Rxy / (self.hy * self.Bxy**2)
bxcvu = curlxb0u
bxcvv = curlxb0w * coefv
bxcvw = curlxb0w

self.bxcvx = bxcvu
self.bxcvy = bxcvv
self.bxcvz = bxcvw - self.I * bxcvu

else:
raise ValueError(
"Unrecognized option '"
Expand Down

0 comments on commit 2617c5d

Please sign in to comment.