1. MHD ํ‰ํ˜•

1. MHD ํ‰ํ˜•

ํ•™์Šต ๋ชฉํ‘œ

  • ์ด์ƒ MHD ์šด๋™๋Ÿ‰ ๋ฐฉ์ •์‹์œผ๋กœ๋ถ€ํ„ฐ MHD ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹ ์œ ๋„
  • ํž˜ ๊ท ํ˜•์˜ ๊ฒฐ๊ณผ ์ดํ•ด: ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์ƒ์—์„œ ์••๋ ฅ ์ผ์ •
  • 1์ฐจ์› ํ‰ํ˜• ๋ถ„์„: ฮธ-pinch, Z-pinch, screw pinch ๊ตฌ์„ฑ
  • ์ถ•๋Œ€์นญ ํ‰ํ˜•์— ๋Œ€ํ•œ Grad-Shafranov ๋ฐฉ์ •์‹ ์ˆ˜์‹ํ™” ๋ฐ ํ’€์ด
  • ์•ˆ์ „ ์ธ์ž q ๊ณ„์‚ฐ ๋ฐ ์•ˆ์ •์„ฑ์— ๋Œ€ํ•œ ์˜๋ฏธ ์ดํ•ด
  • ํ”Œ๋ผ์ฆˆ๋งˆ ๋ฒ ํƒ€ ๊ณ„์‚ฐ ๋ฐ ์šด์˜ ํ•œ๊ณ„ ์ดํ•ด
  • ๊ฐ„๋‹จํ•œ ํ‰ํ˜• ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ์ˆ˜์น˜ ํ•ด ๊ตฌํ˜„

1. MHD ํ‰ํ˜• ์†Œ๊ฐœ

์ž๊ธฐ์œ ์ฒด์—ญํ•™ ํ‰ํ˜•์€ ๋ชจ๋“  ํž˜์ด ๊ท ํ˜•์„ ์ด๋ฃจ๊ณ  ์•Œ์งœ ๊ฐ€์†๋„๊ฐ€ ์—†๋Š” ์žํ™” ํ”Œ๋ผ์ฆˆ๋งˆ์˜ ์ •์ƒ ์ƒํƒœ ๊ตฌ์„ฑ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ‰ํ˜•์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ํ•ต์œตํ•ฉ ์—๋„ˆ์ง€ ์—ฐ๊ตฌ, ์ฒœ์ฒด๋ฌผ๋ฆฌํ•™ ํ”Œ๋ผ์ฆˆ๋งˆ ๋ฌผ๋ฆฌํ•™, ๊ทธ๋ฆฌ๊ณ  ๊ฐ‡ํžŒ ํ”Œ๋ผ์ฆˆ๋งˆ์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ์‘์šฉ์— ๊ธฐ๋ณธ์ ์ž…๋‹ˆ๋‹ค.

MHD ํ‰ํ˜•์€ ๋‹ค์Œ์„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค:

โˆ‚/โˆ‚t = 0  (์‹œ๊ฐ„ ๋…๋ฆฝ)
v = 0      (์ •์ง€ ํ”Œ๋ผ์ฆˆ๋งˆ)

ํ‰ํ˜• ์ƒํƒœ๋Š” ๋‹ค์Œ ์‚ฌ์ด์˜ ๊ท ํ˜•์— ์˜ํ•ด ์ง€๋ฐฐ๋ฉ๋‹ˆ๋‹ค: - ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ ๊ตฌ๋ฐฐ ํž˜: โˆ‡p (์™ธ๋ถ€๋กœ ๋ฐ€์–ด๋ƒ„) - ์ž๊ธฐ ์žฅ๋ ฅ: (Bยทโˆ‡)B/ฮผโ‚€ (์ž๊ธฐ์žฅ์„ ์„ ๋”ฐ๋ผ ๋‹น๊น€) - ์ž๊ธฐ ์••๋ ฅ ๊ตฌ๋ฐฐ: -โˆ‡(Bยฒ/2ฮผโ‚€) (๋†’์€ ์žฅ์—์„œ ๋‚ฎ์€ ์žฅ์œผ๋กœ ๋ฐ€์–ด๋ƒ„)

ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹์€ ๋ชจ๋“  ํ‰ํ˜• ๊ณ„์‚ฐ์˜ ๊ธฐ์ดˆ์ž…๋‹ˆ๋‹ค.

2. ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹ ์œ ๋„

2.1 ์ด์ƒ MHD ์šด๋™๋Ÿ‰ ๋ฐฉ์ •์‹์—์„œ ์‹œ์ž‘

์ด์ƒ MHD ์šด๋™๋Ÿ‰ ๋ฐฉ์ •์‹์€:

$$ \rho\frac{D\mathbf{v}}{Dt} = -\nabla p + \mathbf{J}\times\mathbf{B} $$

ํ‰ํ˜•์—์„œ ์ขŒ๋ณ€์€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค (๊ฐ€์†๋„ ์—†์Œ, ์ •์ง€ ํ”Œ๋ผ์ฆˆ๋งˆ):

$$ \nabla p = \mathbf{J}\times\mathbf{B} $$

์ด๊ฒƒ์ด ๊ธฐ๋ณธ MHD ํ‰ํ˜• ๋ฐฉ์ •์‹์ž…๋‹ˆ๋‹ค.

2.2 ์ž๊ธฐ์žฅ์œผ๋กœ ํ‘œํ˜„

์•™ํŽ˜๋ฅด ๋ฒ•์น™ ์‚ฌ์šฉ (๋ณ€์œ„ ์ „๋ฅ˜ ๋ฌด์‹œ):

$$ \mathbf{J} = \frac{1}{\mu_0}\nabla\times\mathbf{B} $$

ํž˜ ๊ท ํ˜•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค:

$$ \nabla p = \frac{1}{\mu_0}(\nabla\times\mathbf{B})\times\mathbf{B} $$

๋ฒกํ„ฐ ํ•ญ๋“ฑ์‹ ์‚ฌ์šฉ:

$$ (\nabla\times\mathbf{B})\times\mathbf{B} = (\mathbf{B}\cdot\nabla)\mathbf{B} - \nabla\left(\frac{B^2}{2}\right) $$

๋‹ค์Œ์„ ์–ป์Šต๋‹ˆ๋‹ค:

$$ \nabla p = \frac{1}{\mu_0}\left[(\mathbf{B}\cdot\nabla)\mathbf{B} - \nabla\left(\frac{B^2}{2}\right)\right] $$

์žฌ๋ฐฐ์—ด:

$$ \nabla\left(p + \frac{B^2}{2\mu_0}\right) = \frac{1}{\mu_0}(\mathbf{B}\cdot\nabla)\mathbf{B} $$

์ขŒ๋ณ€์€ ์ „์ฒด ์••๋ ฅ (์šด๋™ + ์ž๊ธฐ)์˜ ๊ตฌ๋ฐฐ์ž…๋‹ˆ๋‹ค:

$$ p_{total} = p + \frac{B^2}{2\mu_0} $$

์šฐ๋ณ€์€ ์ž๊ธฐ์žฅ์„ ์„ ๋”ฐ๋ฅธ ์ž๊ธฐ ์žฅ๋ ฅ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

2.3 ๋ฌผ๋ฆฌ์  ํ•ด์„

ํž˜ ๊ท ํ˜• ์„ฑ๋ถ„:
=======================

1. ์••๋ ฅ ๊ตฌ๋ฐฐ: โˆ‡p
   - ๋†’์€ ์••๋ ฅ์—์„œ ๋‚ฎ์€ ์••๋ ฅ์œผ๋กœ ๋ฐ€์–ด๋ƒ„
   - ๋“ฑ๋ฐฉ์„ฑ ํž˜

2. ์ž๊ธฐ ์••๋ ฅ: -โˆ‡(Bยฒ/2ฮผโ‚€)
   - ๋†’์€ ์žฅ์—์„œ ๋‚ฎ์€ ์žฅ์œผ๋กœ ๋ฐ€์–ด๋ƒ„
   - B์— ์ˆ˜์ง์œผ๋กœ ์ž‘์šฉ

3. ์ž๊ธฐ ์žฅ๋ ฅ: (Bยทโˆ‡)B/ฮผโ‚€
   - ๊ตฝ์€ ์ž๊ธฐ์žฅ์„ ์„ ๋”ฐ๋ผ ๋‹น๊น€
   - ๋Š˜์–ด๋‚œ ๊ณ ๋ฌด์ค„์ฒ˜๋Ÿผ

์•Œ์งœ ํž˜: โˆ‡p + โˆ‡(Bยฒ/2ฮผโ‚€) - (Bยทโˆ‡)B/ฮผโ‚€ = 0

3. ํž˜ ๊ท ํ˜•์˜ ๊ฒฐ๊ณผ

3.1 ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์ƒ์—์„œ ์••๋ ฅ ์ผ์ •

ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹์„ B์™€ ๋‚ด์ ํ•˜๋ฉด:

$$ \mathbf{B}\cdot\nabla p = \mathbf{B}\cdot(\mathbf{J}\times\mathbf{B}) = 0 $$

์ด๋Š” ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค:

$$ \mathbf{B}\cdot\nabla p = 0 $$

๊ฒฐ๊ณผ: ์••๋ ฅ์€ ์ž๊ธฐ์žฅ์„ ์„ ๋”ฐ๋ผ ์ผ์ •ํ•ฉ๋‹ˆ๋‹ค. ํ† ๋กœ์ด๋‹ฌ ๊ตฌ์„ฑ์—์„œ ์ž๊ธฐ์žฅ์„ ์€ ์ค‘์ฒฉ๋œ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์œ„์— ๋†“์—ฌ์žˆ์œผ๋ฏ€๋กœ ์••๋ ฅ์€ ๊ฐ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด์—์„œ ์ผ์ •ํ•ฉ๋‹ˆ๋‹ค.

3.2 ์••๋ ฅ ๊ตฌ๋ฐฐ์— ์ˆ˜์ง์ธ ์ „๋ฅ˜

ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹์„ J์™€ ๋‚ด์ ํ•˜๋ฉด:

$$ \mathbf{J}\cdot\nabla p = \mathbf{J}\cdot(\mathbf{J}\times\mathbf{B}) = 0 $$

์ด๋Š” ๋‹ค์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค:

$$ \mathbf{J}\cdot\nabla p = 0 $$

๊ฒฐ๊ณผ: ์ „๋ฅ˜๋Š” ์••๋ ฅ ๊ตฌ๋ฐฐ์— ์ˆ˜์ง์œผ๋กœ ํ๋ฅด๋ฏ€๋กœ, ์ „๋ฅ˜๋„ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์œ„์— ๋†“์ž…๋‹ˆ๋‹ค.

3.3 ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์ขŒํ‘œ๊ณ„

์œ„์˜ ๋‘ ๊ฒฐ๊ณผ๋Š” B์™€ J ๋ชจ๋‘ ์ผ์ •ํ•œ ์••๋ ฅ์˜ ํ‘œ๋ฉด ์œ„์— ๋†“์ธ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ํ‘œ๋ฉด๋“ค์„ ์ž๊ธฐ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ํ† ์นด๋ง‰ ํ‰ํ˜• ๊ณ„์‚ฐ์— ์‚ฌ์šฉ๋˜๋Š” ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์ขŒํ‘œ๊ณ„์˜ ๊ธฐ์ดˆ์ž…๋‹ˆ๋‹ค.

ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ๊ตฌ์กฐ:
======================

        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚             โ”‚   ์™ธ๋ถ€ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด (๋‚ฎ์€ p)
        โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
        โ”‚  โ”‚       โ”‚  โ”‚   ์ค‘๊ฐ„ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด
        โ”‚  โ”‚   โ”Œโ”€โ” โ”‚  โ”‚
        โ”‚  โ”‚   โ”‚ยทโ”‚ โ”‚  โ”‚   ์ž๊ธฐ ์ถ• (์ตœ๊ณ  p)
        โ”‚  โ”‚   โ””โ”€โ”˜ โ”‚  โ”‚
        โ”‚  โ”‚       โ”‚  โ”‚
        โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
        โ”‚             โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ํŠน์„ฑ:
- p = p(ฯˆ) ์—ฌ๊ธฐ์„œ ฯˆ๋Š” ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ๋ ˆ์ด๋ธ”
- B๋Š” ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ๋‚ด์— ๋†“์ž„
- J๋Š” ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ๋‚ด์— ๋†“์ž„

4. 1์ฐจ์› ํ‰ํ˜•

4.1 ฮธ-Pinch (์ข…๋ฐฉํ–ฅ ์ž๊ธฐ์žฅ)

ฮธ-pinch๋Š” ์ˆœ์ˆ˜ ์ข…๋ฐฉํ–ฅ (์ถ•) ์ž๊ธฐ์žฅ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ”Œ๋ผ์ฆˆ๋งˆ๋ฅผ ๋ฐฉ์‚ฌ์ƒ์œผ๋กœ ๊ฐ€๋‘ก๋‹ˆ๋‹ค.

๊ตฌ์„ฑ: - ์›ํ†ต ๊ธฐํ•˜ํ•™ (r, ฮธ, z) - $B_z(r)$, $p(r)$ - $B_r = B_ฮธ = 0$ - ํ”Œ๋ผ์ฆˆ๋งˆ์— ์ „๋ฅ˜ ์—†์Œ: $J_z = 0$

ํž˜ ๊ท ํ˜•:

์›ํ†ต ์ขŒํ‘œ๊ณ„์—์„œ:

$$ \frac{dp}{dr} = -\frac{1}{\mu_0}\frac{d}{dr}\left(\frac{B_z^2}{2}\right) $$

$r$์—์„œ $r=a$์˜ ํ”Œ๋ผ์ฆˆ๋งˆ ๊ฒฝ๊ณ„๊นŒ์ง€ ์ ๋ถ„ (์—ฌ๊ธฐ์„œ $p(a)=0$):

$$ p(r) = \frac{B_z^2(a) - B_z^2(r)}{2\mu_0} $$

๋ฌผ๋ฆฌ์  ๊ทธ๋ฆผ: - ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ์€ ์ž๊ธฐ ์••๋ ฅ์— ์˜ํ•ด ๊ท ํ˜• - ์ž๊ธฐ ์žฅ๋ ฅ ์—†์Œ (์ง์„  ์ž๊ธฐ์žฅ์„ ) - ์ˆœ์ˆ˜ ๋ฐฉ์‚ฌ์ƒ ๊ฐ€๋‘ 

Bennett ๊ด€๊ณ„ (์ „์ฒด ์••๋ ฅ ๊ท ํ˜•):

๋‹จ๋ฉด์— ๋Œ€ํ•ด ์ ๋ถ„:

$$ \int_0^a 2\pi r\, p(r)\, dr = \frac{\pi a^2 B_{ext}^2}{2\mu_0} $$

์—ฌ๊ธฐ์„œ $B_{ext}$๋Š” ์™ธ๋ถ€ ์žฅ์ž…๋‹ˆ๋‹ค.

4.2 Z-Pinch (๋ฐฉ์œ„๊ฐ ์ž๊ธฐ์žฅ)

Z-pinch๋Š” ์ถ•๋ฐฉํ–ฅ ์ „๋ฅ˜๋กœ๋ถ€ํ„ฐ ์ž์ฒด ์ƒ์„ฑ๋œ ๋ฐฉ์œ„๊ฐ ์ž๊ธฐ์žฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ: - $B_ฮธ(r)$, $p(r)$ - $J_z(r)$ (์ถ•๋ฐฉํ–ฅ ์ „๋ฅ˜) - $B_r = B_z = 0$

์•™ํŽ˜๋ฅด ๋ฒ•์น™:

$$ B_ฮธ(r) = \frac{\mu_0}{2\pi r}\int_0^r J_z(r')2\pi r'\, dr' = \frac{\mu_0 I(r)}{2\pi r} $$

์—ฌ๊ธฐ์„œ $I(r)$์€ ๋ฐ˜์ง€๋ฆ„ $r$ ๋‚ด์— ๋‘˜๋Ÿฌ์‹ธ์ธ ์ „๋ฅ˜์ž…๋‹ˆ๋‹ค.

ํž˜ ๊ท ํ˜•:

$$ \frac{dp}{dr} = -\frac{1}{\mu_0}\frac{d}{dr}\left(\frac{B_ฮธ^2}{2}\right) = -\frac{B_ฮธ}{\mu_0 r} $$

$B_ฮธ = \mu_0 I/(2\pi r)$ ์‚ฌ์šฉ:

$$ \frac{dp}{dr} = -\frac{J_z B_ฮธ}{\mu_0} $$

Bennett ๊ด€๊ณ„ (์ฐจ์› ๋ถ„์„):

๊ท ์ผํ•œ ์ „๋ฅ˜ ๋ฐ€๋„ $J_z = I/(\pi a^2)$์— ๋Œ€ํ•ด:

$$ I^2 = \frac{8\pi}{\mu_0}NkT $$

์—ฌ๊ธฐ์„œ $N$์€ ์ด ์ž…์ž ์ˆ˜์ด๊ณ  $T$๋Š” ์˜จ๋„์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ๊ทธ๋ฆผ: - ์ „๋ฅ˜๊ฐ€ ๋ฐฉ์œ„๊ฐ ์žฅ ์ƒ์„ฑ - ์ž๊ธฐ ์••๋ ฅ์ด ํ”Œ๋ผ์ฆˆ๋งˆ๋ฅผ ์•ˆ์ชฝ์œผ๋กœ ์กฐ์ž„ - ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ์ด ๋ฐ”๊นฅ์ชฝ์œผ๋กœ ๋ฐ€์–ด๋ƒ„ - ๋งค์šฐ ๋ถˆ์•ˆ์ • (kink, sausage ๋ถˆ์•ˆ์ •์„ฑ)

4.3 Screw Pinch (๊ฒฐํ•ฉ ์žฅ)

Screw pinch๋Š” ๊ฐœ์„ ๋œ ์•ˆ์ •์„ฑ์„ ์œ„ํ•ด ์ถ•๋ฐฉํ–ฅ๊ณผ ๋ฐฉ์œ„๊ฐ ์žฅ์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ: - $B_z(r)$, $B_ฮธ(r)$, $p(r)$ - $J_z(r)$, $J_ฮธ(r)$

ํž˜ ๊ท ํ˜•:

$$ \frac{dp}{dr} = -\frac{1}{\mu_0}\frac{d}{dr}\left(\frac{B_z^2 + B_ฮธ^2}{2}\right) $$

์•ˆ์ „ ์ธ์ž (์ž๊ธฐ์žฅ์„ ์˜ ํ”ผ์น˜):

$$ q(r) = \frac{rB_z}{RB_ฮธ} $$

์—ฌ๊ธฐ์„œ $R$์€ ์ฃผ์š” ๋ฐ˜์ง€๋ฆ„ (ํ† ๋กœ์ด๋‹ฌ ์‹œ์Šคํ…œ) ๋˜๋Š” ํŠน์„ฑ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ๊ทธ๋ฆผ: - $B_z$๋Š” kink ๋ชจ๋“œ์— ๋Œ€ํ•œ ์•ˆ์ •์„ฑ ์ œ๊ณต - $B_ฮธ$๋Š” ๊ฐ€๋‘  ์ œ๊ณต - $q(r)$์˜ ์ „๋‹จ์ด ์งง์€ ํŒŒ์žฅ ๋ชจ๋“œ ์•ˆ์ •ํ™” - ํ† ์นด๋ง‰ ๊ฐ€๋‘ ์˜ ๊ธฐ์ดˆ

Screw Pinch ์ž๊ธฐ์žฅ์„ :
======================

      z ^
        |    /
        |   / โ† ์ž๊ธฐ์žฅ์„  ๋‚˜์„ 
        |  /
        | /
        |/________> ฮธ

q = ฮ”z / (2ฯ€R) ํด๋กœ์ด๋‹ฌ ํšŒ์ „๋‹น

5. Grad-Shafranov ๋ฐฉ์ •์‹

5.1 ์ถ•๋Œ€์นญ ํ‰ํ˜•

์ถ•๋Œ€์นญ ํ† ๋กœ์ด๋‹ฌ ์‹œ์Šคํ…œ (ํ† ์นด๋ง‰, ๋‹จ์ˆœํ™”๋œ ํ˜•ํƒœ์˜ stellarator)์— ๋Œ€ํ•ด, ํ‰ํ˜•์€ ๋‹จ์ผ ์Šค์นผ๋ผ ํ•จ์ˆ˜๋กœ ์„ค๋ช…๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ํด๋กœ์ด๋‹ฌ ํ”Œ๋Ÿญ์Šค ํ•จ์ˆ˜ $\psi(R,Z)$.

์›ํ†ต ์ขŒํ‘œ๊ณ„: $(R, \phi, Z)$ ์—ฌ๊ธฐ์„œ $\phi$๋Š” ํ† ๋กœ์ด๋‹ฌ ๊ฐ์ž…๋‹ˆ๋‹ค.

์ž๊ธฐ์žฅ ํ‘œํ˜„:

$$ \mathbf{B} = F(R,Z)\nabla\phi + \nabla\phi\times\nabla\psi $$

์—ฌ๊ธฐ์„œ: - $F(R,Z) = RB_\phi$ (ํ† ๋กœ์ด๋‹ฌ ์žฅ ํ•จ์ˆ˜) - $\psi$๋Š” ํด๋กœ์ด๋‹ฌ ํ”Œ๋Ÿญ์Šค ํ•จ์ˆ˜

์„ฑ๋ถ„ ํ˜•ํƒœ๋กœ:

$$ B_R = \frac{1}{R}\frac{\partial\psi}{\partial Z}, \quad B_Z = -\frac{1}{R}\frac{\partial\psi}{\partial R}, \quad B_\phi = \frac{F}{R} $$

5.2 Grad-Shafranov ๋ฐฉ์ •์‹ ์œ ๋„

ํž˜ ๊ท ํ˜•์—์„œ ์‹œ์ž‘:

$$ \nabla p = \mathbf{J}\times\mathbf{B} $$

๊ทธ๋ฆฌ๊ณ  $\mathbf{J} = \nabla\times\mathbf{B}/\mu_0$ ์‚ฌ์šฉ, ํ† ๋กœ์ด๋‹ฌ ์„ฑ๋ถ„์€:

$$ \frac{dp}{d\psi} = -\frac{1}{\mu_0 R^2}\frac{dF}{d\psi}F $$

ํด๋กœ์ด๋‹ฌ ์„ฑ๋ถ„์€ Grad-Shafranov ๋ฐฉ์ •์‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

$$ \Delta^*\psi \equiv R\frac{\partial}{\partial R}\left(\frac{1}{R}\frac{\partial\psi}{\partial R}\right) + \frac{\partial^2\psi}{\partial Z^2} = -\mu_0 R^2\frac{dp}{d\psi} - F\frac{dF}{d\psi} $$

์ด๊ฒƒ์€ $\psi(R,Z)$์— ๋Œ€ํ•œ ํƒ€์›ํ˜• ํŽธ๋ฏธ๋ถ„ ๋ฐฉ์ •์‹์ž…๋‹ˆ๋‹ค.

5.3 ์ž์œ  ํ•จ์ˆ˜

Grad-Shafranov ๋ฐฉ์ •์‹์€ ๋‘ ๊ฐœ์˜ ์ž์œ  ํ•จ์ˆ˜ ์ง€์ •์„ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค:

  1. ์••๋ ฅ ํ”„๋กœํŒŒ์ผ: $p(\psi)$
  2. ํ† ๋กœ์ด๋‹ฌ ์žฅ ํ•จ์ˆ˜: $F(\psi)$ (๋˜๋Š” ๋™๋“ฑํ•˜๊ฒŒ $F^2(\psi)$)

์ด ํ•จ์ˆ˜๋“ค์€ ๋‹ค์Œ์— ์˜ํ•ด ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค: - ํ”Œ๋ผ์ฆˆ๋งˆ ๊ฐ€์—ด ๋ฐ ์ „๋ฅ˜ ๊ตฌ๋™ - ๊ฒฝ๊ณ„ ์กฐ๊ฑด (์ „๋„ ๋ฒฝ, ์™ธ๋ถ€ ์ฝ”์ผ) - ์ˆ˜์†ก ๊ณผ์ • (MHD๋ฅผ ๋„˜์–ด์„œ)

ํ•ด์„์  ํ•ด์— ๋Œ€ํ•œ ์ผ๋ฐ˜์ ์ธ ์„ ํƒ: - $p(\psi) = p_0(1 - \psi/\psi_0)^\alpha$ - $F^2(\psi) = F_0^2 + \beta(\psi - \psi_0)$

5.4 Solovev ํ‰ํ˜• (ํ•ด์„์  ํ•ด)

์ž์œ  ํ•จ์ˆ˜์— ๋Œ€ํ•ด:

$$ p(\psi) = 0, \quad F^2(\psi) = F_0^2 + c\psi $$

Grad-Shafranov ๋ฐฉ์ •์‹์€ ์„ ํ˜•์ด ๋ฉ๋‹ˆ๋‹ค:

$$ \Delta^*\psi = -\mu_0 c R^2 $$

Solovev ํ•ด (์›ํ˜• ๋‹จ๋ฉด์— ๋Œ€ํ•ด):

$$ \psi(R,Z) = \frac{1}{8}c\mu_0\left[(R^2 - R_0^2)^2 + Z^2\right] + \psi_0 $$

์ด๊ฒƒ์€ Shafranov ์ด๋™๋งŒํผ ๋ฐ”๊นฅ์ชฝ์œผ๋กœ ์ด๋™ํ•œ ์›ํ˜• ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

5.5 ์ˆ˜์น˜ ํ•ด๋ฒ•

์ผ๋ฐ˜์ ์ธ $p(\psi)$์™€ $F(\psi)$์— ๋Œ€ํ•ด, Grad-Shafranov ๋ฐฉ์ •์‹์€ ์ˆ˜์น˜์ ์œผ๋กœ ํ’€์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

๋ฐ˜๋ณต ์Šคํ‚ด: 1. ์ดˆ๊ธฐ $\psi^{(0)}(R,Z)$ ์ถ”์ • 2. $p(\psi^{(n)})$๊ณผ $F(\psi^{(n)})$ ๊ณ„์‚ฐ 3. ์„ ํ˜• ํƒ€์› ๋ฐฉ์ •์‹ ํ’€์ด: $$ \Delta^*\psi^{(n+1)} = -\mu_0 R^2\frac{dp}{d\psi}\Big|_{\psi^{(n)}} - F\frac{dF}{d\psi}\Big|_{\psi^{(n)}} $$ 4. ์ˆ˜๋ ดํ•  ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณต: $|\psi^{(n+1)} - \psi^{(n)}| < \epsilon$

์ด์‚ฐํ™”: $(R,Z)$ ๊ทธ๋ฆฌ๋“œ์—์„œ ์œ ํ•œ ์ฐจ๋ถ„ ๋˜๋Š” ์œ ํ•œ ์š”์†Œ ๋ฐฉ๋ฒ•.

6. ์•ˆ์ „ ์ธ์ž

6.1 ์ •์˜

์•ˆ์ „ ์ธ์ž $q(\psi)$๋Š” ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด์—์„œ ์ž๊ธฐ์žฅ์„ ์˜ ํ”ผ์น˜๋ฅผ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค:

$$ q = \frac{1}{2\pi}\oint\frac{d\ell_\parallel}{Rd\phi} $$

์—ฌ๊ธฐ์„œ ์ ๋ถ„์€ ํ•œ ํด๋กœ์ด๋‹ฌ ํšŒ์ „์— ๋Œ€ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ํ•ด์„: - $q$๋Š” ์ž๊ธฐ์žฅ์„ ์ด ํด๋กœ์ด๋‹ฌ ํšŒ์ „๋‹น ๋งŒ๋“œ๋Š” ํ† ๋กœ์ด๋‹ฌ ํšŒ์ „ ์ˆ˜ - ์œ ๋ฆฌ์ˆ˜ ๊ฐ’ ($q = m/n$)์€ ์„ญ๋™์ด ๊ณต๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๋ช… ํ‘œ๋ฉด์„ ์ •์˜

6.2 ์›ํ†ต ๊ทผ์‚ฌ

ํฐ ์ข…ํšก๋น„ ํ† ์นด๋ง‰ ($R \approx R_0 + r\cos\theta$)์— ๋Œ€ํ•ด:

$$ q(r) \approx \frac{rB_z}{R_0 B_ฮธ} $$

$B_ฮธ = \mu_0 I(r)/(2\pi r)$ ์‚ฌ์šฉ:

$$ q(r) = \frac{2\pi r^2 B_z}{\mu_0 R_0 I(r)} $$

6.3 ์ „๋ฅ˜ ๋ฐ€๋„์™€์˜ ๊ด€๊ณ„

๋ฏธ๋ถ„:

$$ \frac{dq}{dr} = \frac{2\pi r B_z}{\mu_0 R_0}\left(\frac{2}{I} - \frac{r J_z}{I}\right) $$

์ž๊ธฐ ์ „๋‹จ:

$$ s = \frac{r}{q}\frac{dq}{dr} $$

์–‘์˜ ์ „๋‹จ ($dq/dr > 0$)์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์•ˆ์ •ํ™”์ž…๋‹ˆ๋‹ค.

6.4 ์•ˆ์ •์„ฑ์— ๋Œ€ํ•œ ์˜๋ฏธ

  • Kruskal-Shafranov ๊ธฐ์ค€: ์™ธ๋ถ€ kink ๋ชจ๋“œ๋Š” $q(a) > m/n$ ํ•„์š”
  • $m=1, n=1$์— ๋Œ€ํ•ด: $q(a) > 1$์ด ํ•„์š” (์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Œ)
  • ๋‚ด๋ถ€ kink (sawtooth ์ง„๋™): $q(0) < 1$
  • ์œ ๋ฆฌ์ˆ˜ ํ‘œ๋ฉด $q = m/n$: tearing ๋ชจ๋“œ์˜ ์œ„์น˜
ํ† ์นด๋ง‰์˜ ์ผ๋ฐ˜์ ์ธ q-ํ”„๋กœํŒŒ์ผ:
============================

q |     ___________________  q(a) > 2
  |    /
  |   /                     โ† ๋‹จ์กฐ (์–‘์˜ ์ „๋‹จ)
  |  /
  | /                       q(0) ~ 1
  |/________________________ r
  0                        a

ํŠน์ง•:
- q(0) ~ 1 (์ถ• ์ƒ)
- q(a) > 2-3 (๊ฐ€์žฅ์ž๋ฆฌ, ์•ˆ์ •์„ฑ ์œ„ํ•ด)
- ์—ญ์ „๋‹จ: ์ค‘์‹ฌ๋ถ€์—์„œ dq/dr < 0 (๊ณ ๊ธ‰ ์‹œ๋‚˜๋ฆฌ์˜ค)

7. ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด๊ณผ Shafranov ์ด๋™

7.1 ์ค‘์ฒฉ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด

์ž˜ ๊ฐ‡ํžŒ ํ”Œ๋ผ์ฆˆ๋งˆ์—์„œ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด์€ ์ค‘์ฒฉ๋œ ์œ„์ƒํ•™์  ํ† ๋Ÿฌ์Šค์ž…๋‹ˆ๋‹ค. ์ž๊ธฐ ์ถ• (๊ฐ€์žฅ ์•ˆ์ชฝ ํ‘œ๋ฉด)์€ ๋‹ค์Œ์„ ๊ฐ€์ง„ ํ‘œ๋ฉด์ž…๋‹ˆ๋‹ค: - ์ตœ๊ณ  ์••๋ ฅ - $q(\psi_{axis})$ ์ตœ์†Œ - $|\nabla\psi| = 0$

7.2 Shafranov ์ด๋™

ํ† ๋กœ์ด๋‹ฌ ํšจ๊ณผ๋กœ ์ธํ•ด, ์ž๊ธฐ ์ถ•์€ ๊ธฐํ•˜ํ•™์  ์ค‘์‹ฌ์— ๋Œ€ํ•ด ๋ฐ”๊นฅ์ชฝ (๋” ํฐ $R$)์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ๊ธฐ์›: - ์•ˆ์ชฝ์—์„œ ๋” ๋†’์€ ์žฅ โ†’ ๋” ๋†’์€ ์ž๊ธฐ ์••๋ ฅ - ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ ๊ตฌ๋ฐฐ๊ฐ€ ๊ท ํ˜•์„ ์œ„ํ•œ ๋ฐ”๊นฅ์ชฝ ์ด๋™ ์ƒ์„ฑ

๊ทผ์‚ฌ ๊ณต์‹:

$$ \Delta_{Shafranov} \approx \frac{a^2\beta_p}{2R_0} $$

์—ฌ๊ธฐ์„œ $\beta_p = 2\mu_0\langle p\rangle/B_p^2$๋Š” ํด๋กœ์ด๋‹ฌ ๋ฒ ํƒ€์ž…๋‹ˆ๋‹ค.

7.3 ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์„ฑํ˜•

ํ˜„๋Œ€ ํ† ์นด๋ง‰์€ ๋น„์›ํ˜• ๋‹จ๋ฉด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: - ๋Š˜๋ฆผ $\kappa = b/a$ (์ˆ˜์ง ๋Š˜๋ฆผ): ์•ˆ์ •์„ฑ๊ณผ ๊ฐ€๋‘  ๊ฐœ์„  - ์‚ผ๊ฐํ˜•์„ฑ $\delta$: ์•ˆ์ชฝ ๋“ค์—ฌ์“ฐ๊ธฐ, ballooning ๋ชจ๋“œ ์•ˆ์ •ํ™”

8. ํ”Œ๋ผ์ฆˆ๋งˆ ๋ฒ ํƒ€

8.1 ์ •์˜

ํ”Œ๋ผ์ฆˆ๋งˆ ๋ฒ ํƒ€๋Š” ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ ๋Œ€ ์ž๊ธฐ ์••๋ ฅ์˜ ๋น„์œจ์ž…๋‹ˆ๋‹ค:

$$ \beta = \frac{2\mu_0 p}{B^2} $$

์ฒด์  ํ‰๊ท  ๋ฒ ํƒ€:

$$ \langle\beta\rangle = \frac{2\mu_0\langle p\rangle}{\langle B^2\rangle} $$

ํด๋กœ์ด๋‹ฌ ๋ฒ ํƒ€:

$$ \beta_p = \frac{2\mu_0\langle p\rangle}{B_p^2} $$

ํ† ๋กœ์ด๋‹ฌ ๋ฒ ํƒ€:

$$ \beta_t = \frac{2\mu_0\langle p\rangle}{B_t^2} $$

8.2 ๋ฒ ํƒ€๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„

ํฐ ์ข…ํšก๋น„ ํ† ์นด๋ง‰์— ๋Œ€ํ•ด:

$$ \beta_t \approx \beta_p\left(\frac{B_p}{B_t}\right)^2 \approx \beta_p\left(\frac{a}{R_0}\right)^2\frac{1}{q^2} $$

8.3 ๋ฒ ํƒ€ ํ•œ๊ณ„

๋†’์€ ๋ฒ ํƒ€๋Š” ํ•ต์œตํ•ฉ ๋กœ์— ๋ฐ”๋žŒ์งํ•˜์ง€๋งŒ (๋” ๋งŽ์€ ํ•ต์œตํ•ฉ ์ถœ๋ ฅ), MHD ์•ˆ์ •์„ฑ์ด $\beta$๋ฅผ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค:

Troyon ํ•œ๊ณ„ (๊ฒฝํ—˜์  ์Šค์ผ€์ผ๋ง):

$$ \beta_N \equiv \frac{\beta_t(\%)}{I_p/(aB_t)} \lesssim 2.8 - 3.5 $$

์—ฌ๊ธฐ์„œ $I_p$๋Š” ํ”Œ๋ผ์ฆˆ๋งˆ ์ „๋ฅ˜ (MA), $a$๋Š” ๋ฏธํ„ฐ, $B_t$๋Š” Tesla์ž…๋‹ˆ๋‹ค.

๋ฌผ๋ฆฌ์  ๊ธฐ์›: - ๋†’์€ $\beta$ โ†’ ๊ฐ•ํ•œ ์••๋ ฅ ๊ตฌ๋ฐฐ โ†’ ์••๋ ฅ ๊ตฌ๋™ ๋ถˆ์•ˆ์ •์„ฑ - ์™ธ๋ถ€ kink ๋ชจ๋“œ๊ฐ€ ๊ณ ์ •๋œ $q(a)$์—์„œ $\beta$ ์ œํ•œ

8.4 ๋ฒ ํƒ€ ์ตœ์ ํ™”

๋ฒ ํƒ€ ํ•œ๊ณ„๋ฅผ ๋†’์ด๋Š” ์ „๋žต: - ๋†’์€ ๋Š˜๋ฆผ $\kappa$ - ๋†’์€ ์‚ผ๊ฐํ˜•์„ฑ $\delta$ - ์ „๋„ ๋ฒฝ ์•ˆ์ •ํ™” - ํ”Œ๋ผ์ฆˆ๋งˆ ํšŒ์ „ - ๊ณ ๊ธ‰ ํ† ์นด๋ง‰ ์‹œ๋‚˜๋ฆฌ์˜ค (์—ญ์ „๋‹จ, ์ˆ˜์†ก ์žฅ๋ฒฝ)

9. Python ๊ตฌํ˜„: Grad-Shafranov ์†”๋ฒ„

9.1 ๊ฐ„๋‹จํ•œ Solovev ํ‰ํ˜•

import numpy as np
import matplotlib.pyplot as plt
from scipy.linalg import solve

# Solovev equilibrium solver
class SolovevEquilibrium:
    def __init__(self, R0, a, kappa, delta, Bt0, Ip):
        """
        R0: major radius [m]
        a: minor radius [m]
        kappa: elongation
        delta: triangularity
        Bt0: toroidal field on axis [T]
        Ip: plasma current [A]
        """
        self.R0 = R0
        self.a = a
        self.kappa = kappa
        self.delta = delta
        self.Bt0 = Bt0
        self.Ip = Ip

        # Physical constants
        self.mu0 = 4*np.pi*1e-7

    def compute_psi(self, R, Z):
        """Compute poloidal flux function (Solovev solution)"""
        # Simplified Solovev: circular, low beta
        c = -2 * self.mu0 * self.Ip / (np.pi * self.a**2)

        # Normalized coordinates
        r_norm = np.sqrt((R - self.R0)**2 + (Z/self.kappa)**2) / self.a

        # Flux function (normalized)
        psi = -c * self.R0**2 * self.a**2 * r_norm**2 / 8

        return psi

    def compute_B(self, R, Z):
        """Compute magnetic field components"""
        # Numerical derivatives
        dR = 0.001
        dZ = 0.001

        dpsi_dR = (self.compute_psi(R+dR, Z) - self.compute_psi(R-dR, Z)) / (2*dR)
        dpsi_dZ = (self.compute_psi(R, Z+dZ) - self.compute_psi(R, Z-dZ)) / (2*dZ)

        BR = -1/R * dpsi_dZ
        BZ = 1/R * dpsi_dR
        Bphi = self.Bt0 * self.R0 / R

        return BR, BZ, Bphi

    def compute_q(self, psi_vals):
        """Compute safety factor profile"""
        # Simplified q-profile for circular equilibrium
        psi_edge = self.compute_psi(self.R0 + self.a, 0)
        psi_norm = psi_vals / psi_edge

        # Parabolic q-profile
        q0 = 1.0  # On-axis q
        qa = 3.0  # Edge q

        q = q0 + (qa - q0) * psi_norm**2

        return q

    def plot_flux_surfaces(self, nr=50, nz=50):
        """Plot flux surfaces"""
        R_grid = np.linspace(self.R0 - 1.2*self.a, self.R0 + 1.2*self.a, nr)
        Z_grid = np.linspace(-1.2*self.kappa*self.a, 1.2*self.kappa*self.a, nz)

        R_mesh, Z_mesh = np.meshgrid(R_grid, Z_grid)
        psi_mesh = self.compute_psi(R_mesh, Z_mesh)

        fig, ax = plt.subplots(figsize=(8, 10))

        # Contour plot of flux surfaces
        levels = 20
        CS = ax.contour(R_mesh, Z_mesh, psi_mesh, levels=levels, colors='blue')
        ax.clabel(CS, inline=True, fontsize=8)

        # Mark magnetic axis
        ax.plot(self.R0, 0, 'r*', markersize=15, label='Magnetic axis')

        # Mark last closed flux surface
        theta = np.linspace(0, 2*np.pi, 100)
        R_lcfs = self.R0 + self.a*np.cos(theta + self.delta*np.sin(theta))
        Z_lcfs = self.kappa*self.a*np.sin(theta)
        ax.plot(R_lcfs, Z_lcfs, 'r--', linewidth=2, label='LCFS')

        ax.set_xlabel('R [m]', fontsize=12)
        ax.set_ylabel('Z [m]', fontsize=12)
        ax.set_title('Flux Surfaces (Solovev Equilibrium)', fontsize=14)
        ax.set_aspect('equal')
        ax.grid(True, alpha=0.3)
        ax.legend()

        plt.tight_layout()
        return fig

    def plot_q_profile(self):
        """Plot safety factor profile"""
        # Radial coordinate (minor radius)
        r = np.linspace(0, self.a, 100)
        R_vals = self.R0 + r
        Z_vals = np.zeros_like(r)

        # Compute psi along midplane
        psi_vals = np.array([self.compute_psi(R, 0) for R in R_vals])

        # Compute q
        q_vals = self.compute_q(psi_vals)

        fig, ax = plt.subplots(figsize=(10, 6))

        ax.plot(r/self.a, q_vals, 'b-', linewidth=2)
        ax.axhline(y=1, color='r', linestyle='--', label='q = 1 (sawtooth)')
        ax.axhline(y=2, color='g', linestyle='--', label='q = 2 (m=2 resonance)')

        ax.set_xlabel('r/a (normalized radius)', fontsize=12)
        ax.set_ylabel('q (safety factor)', fontsize=12)
        ax.set_title('Safety Factor Profile', fontsize=14)
        ax.grid(True, alpha=0.3)
        ax.legend()

        plt.tight_layout()
        return fig

    def plot_pressure_profile(self):
        """Plot pressure and current density profiles"""
        r = np.linspace(0, self.a, 100)

        # Parabolic pressure profile
        p0 = 1e5  # Central pressure [Pa]
        p = p0 * (1 - (r/self.a)**2)**2

        # Current density (from force balance)
        # J_phi ~ dp/dr (simplified)
        dp_dr = np.gradient(p, r)
        j_phi = -dp_dr / (self.Bt0 * self.R0) * 1e-6  # Normalized

        fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 10))

        # Pressure
        ax1.plot(r/self.a, p/1e3, 'b-', linewidth=2)
        ax1.set_xlabel('r/a', fontsize=12)
        ax1.set_ylabel('Pressure [kPa]', fontsize=12)
        ax1.set_title('Pressure Profile', fontsize=14)
        ax1.grid(True, alpha=0.3)

        # Current density
        ax2.plot(r/self.a, j_phi, 'r-', linewidth=2)
        ax2.set_xlabel('r/a', fontsize=12)
        ax2.set_ylabel('Current Density (normalized)', fontsize=12)
        ax2.set_title('Toroidal Current Density Profile', fontsize=14)
        ax2.grid(True, alpha=0.3)

        plt.tight_layout()
        return fig

# Example usage
def example_tokamak_equilibrium():
    """ITER-like parameters"""
    R0 = 6.2    # Major radius [m]
    a = 2.0     # Minor radius [m]
    kappa = 1.7 # Elongation
    delta = 0.33# Triangularity
    Bt0 = 5.3   # Toroidal field [T]
    Ip = 15e6   # Plasma current [A]

    eq = SolovevEquilibrium(R0, a, kappa, delta, Bt0, Ip)

    print("=== ITER-like Tokamak Equilibrium ===")
    print(f"Major radius R0 = {R0} m")
    print(f"Minor radius a = {a} m")
    print(f"Aspect ratio A = {R0/a:.2f}")
    print(f"Elongation ฮบ = {kappa}")
    print(f"Triangularity ฮด = {delta}")
    print(f"Toroidal field Bt0 = {Bt0} T")
    print(f"Plasma current Ip = {Ip/1e6:.1f} MA")

    # Compute some equilibrium quantities
    psi_axis = eq.compute_psi(R0, 0)
    psi_edge = eq.compute_psi(R0 + a, 0)

    print(f"\nFlux at axis: {psi_axis:.3e} Wb")
    print(f"Flux at edge: {psi_edge:.3e} Wb")

    # Safety factor
    q_axis = eq.compute_q(np.array([psi_axis]))[0]
    q_edge = eq.compute_q(np.array([psi_edge]))[0]

    print(f"\nSafety factor q(0) = {q_axis:.2f}")
    print(f"Safety factor q(a) = {q_edge:.2f}")

    # Plot results
    fig1 = eq.plot_flux_surfaces()
    plt.savefig('/tmp/flux_surfaces.png', dpi=150)
    print("\nFlux surfaces plot saved to /tmp/flux_surfaces.png")

    fig2 = eq.plot_q_profile()
    plt.savefig('/tmp/q_profile.png', dpi=150)
    print("q-profile plot saved to /tmp/q_profile.png")

    fig3 = eq.plot_pressure_profile()
    plt.savefig('/tmp/pressure_profile.png', dpi=150)
    print("Pressure profile plot saved to /tmp/pressure_profile.png")

    plt.close('all')

if __name__ == "__main__":
    example_tokamak_equilibrium()

9.2 ์ˆ˜์น˜์  Grad-Shafranov ์†”๋ฒ„

import numpy as np
import matplotlib.pyplot as plt
from scipy.sparse import diags, csr_matrix
from scipy.sparse.linalg import spsolve

class GradShafranovSolver:
    """Numerical solver for Grad-Shafranov equation"""

    def __init__(self, R_min, R_max, Z_min, Z_max, nR, nZ):
        """
        Set up computational domain
        """
        self.R_min = R_min
        self.R_max = R_max
        self.Z_min = Z_min
        self.Z_max = Z_max
        self.nR = nR
        self.nZ = nZ

        # Grid spacing
        self.dR = (R_max - R_min) / (nR - 1)
        self.dZ = (Z_max - Z_min) / (nZ - 1)

        # Create grid
        self.R = np.linspace(R_min, R_max, nR)
        self.Z = np.linspace(Z_min, Z_max, nZ)
        self.R_grid, self.Z_grid = np.meshgrid(self.R, self.Z)

        # Initialize flux
        self.psi = np.zeros((nZ, nR))

        # Constants
        self.mu0 = 4*np.pi*1e-7

    def set_free_functions(self, p_func, F_func):
        """
        Set pressure and toroidal field functions
        p_func: p(psi) callable
        F_func: F(psi) callable where F = R*B_phi
        """
        self.p_func = p_func
        self.F_func = F_func

    def build_operator_matrix(self):
        """
        Build discrete Grad-Shafranov operator matrix
        ฮ”* ฯˆ = R โˆ‚/โˆ‚R(1/R โˆ‚ฯˆ/โˆ‚R) + โˆ‚ยฒฯˆ/โˆ‚Zยฒ
        """
        nR = self.nR
        nZ = self.nZ
        N = nR * nZ

        # Flatten index: (i,j) -> i*nR + j
        def idx(i, j):
            return i * nR + j

        # Build sparse matrix
        row = []
        col = []
        data = []

        for i in range(nZ):
            for j in range(nR):
                n = idx(i, j)
                R = self.R[j]

                # Interior points
                if 0 < i < nZ-1 and 0 < j < nR-1:
                    # R derivatives: R โˆ‚/โˆ‚R(1/R โˆ‚ฯˆ/โˆ‚R)
                    # = โˆ‚ยฒฯˆ/โˆ‚Rยฒ + (1/R)โˆ‚ฯˆ/โˆ‚R - (ฯˆ/Rยฒ)
                    # Discretize: centered differences

                    # โˆ‚ยฒฯˆ/โˆ‚Rยฒ
                    coef_R_pp = 1 / self.dR**2
                    coef_R_0 = -2 / self.dR**2
                    coef_R_mm = 1 / self.dR**2

                    # (1/R)โˆ‚ฯˆ/โˆ‚R
                    coef_R_p_1st = 1 / (2*R*self.dR)
                    coef_R_m_1st = -1 / (2*R*self.dR)

                    # Z derivatives: โˆ‚ยฒฯˆ/โˆ‚Zยฒ
                    coef_Z_pp = 1 / self.dZ**2
                    coef_Z_0 = -2 / self.dZ**2
                    coef_Z_mm = 1 / self.dZ**2

                    # Combine
                    # Center
                    row.append(n)
                    col.append(n)
                    data.append(coef_R_0 + coef_Z_0)

                    # R+1
                    row.append(n)
                    col.append(idx(i, j+1))
                    data.append(coef_R_pp + coef_R_p_1st)

                    # R-1
                    row.append(n)
                    col.append(idx(i, j-1))
                    data.append(coef_R_mm + coef_R_m_1st)

                    # Z+1
                    row.append(n)
                    col.append(idx(i+1, j))
                    data.append(coef_Z_pp)

                    # Z-1
                    row.append(n)
                    col.append(idx(i-1, j))
                    data.append(coef_Z_mm)

                else:
                    # Boundary: ฯˆ = 0
                    row.append(n)
                    col.append(n)
                    data.append(1.0)

        matrix = csr_matrix((data, (row, col)), shape=(N, N))
        return matrix

    def solve_fixed_boundary(self, psi_boundary=0, max_iter=100, tol=1e-6):
        """
        Solve Grad-Shafranov with fixed boundary using Picard iteration
        """
        nR = self.nR
        nZ = self.nZ
        N = nR * nZ

        # Build operator matrix (constant for linear problem)
        A = self.build_operator_matrix()

        # Picard iteration
        for iteration in range(max_iter):
            psi_old = self.psi.copy()

            # Compute RHS: -ฮผโ‚€ Rยฒ dp/dฯˆ - F dF/dฯˆ
            rhs = np.zeros((nZ, nR))

            for i in range(nZ):
                for j in range(nR):
                    R = self.R[j]
                    psi_val = self.psi[i, j]

                    # Numerical derivatives of p and F
                    dpsi = 1e-6
                    dpdpsi = (self.p_func(psi_val + dpsi) - self.p_func(psi_val - dpsi)) / (2*dpsi)

                    F_val = self.F_func(psi_val)
                    dFdpsi = (self.F_func(psi_val + dpsi) - self.F_func(psi_val - dpsi)) / (2*dpsi)

                    rhs[i, j] = -self.mu0 * R**2 * dpdpsi - F_val * dFdpsi

            # Apply boundary conditions
            rhs[0, :] = psi_boundary
            rhs[-1, :] = psi_boundary
            rhs[:, 0] = psi_boundary
            rhs[:, -1] = psi_boundary

            # Solve linear system
            rhs_flat = rhs.flatten()
            psi_flat = spsolve(A, rhs_flat)
            self.psi = psi_flat.reshape((nZ, nR))

            # Check convergence
            error = np.max(np.abs(self.psi - psi_old))

            if iteration % 10 == 0:
                print(f"Iteration {iteration}: max error = {error:.3e}")

            if error < tol:
                print(f"Converged in {iteration+1} iterations")
                break

        return self.psi

    def plot_solution(self):
        """Plot the computed equilibrium"""
        fig, axes = plt.subplots(1, 2, figsize=(16, 6))

        # Flux surfaces
        ax = axes[0]
        levels = 30
        CS = ax.contour(self.R_grid, self.Z_grid, self.psi, levels=levels, colors='blue')
        ax.clabel(CS, inline=True, fontsize=8)
        ax.set_xlabel('R [m]', fontsize=12)
        ax.set_ylabel('Z [m]', fontsize=12)
        ax.set_title('Poloidal Flux Surfaces', fontsize=14)
        ax.set_aspect('equal')
        ax.grid(True, alpha=0.3)

        # Pressure profile
        ax = axes[1]
        psi_flat = self.psi.flatten()
        psi_min = np.min(psi_flat)
        psi_max = np.max(psi_flat)
        psi_range = np.linspace(psi_min, psi_max, 100)

        p_range = np.array([self.p_func(psi) for psi in psi_range])

        ax.plot(psi_range, p_range/1e3, 'r-', linewidth=2)
        ax.set_xlabel('ฯˆ [Wb]', fontsize=12)
        ax.set_ylabel('Pressure [kPa]', fontsize=12)
        ax.set_title('Pressure Profile p(ฯˆ)', fontsize=14)
        ax.grid(True, alpha=0.3)

        plt.tight_layout()
        return fig

# Example: solve simple equilibrium
def example_gs_solver():
    """Example Grad-Shafranov solution"""

    # Domain: tokamak-like geometry
    R0 = 1.0  # Major radius
    a = 0.3   # Minor radius

    R_min = R0 - 1.5*a
    R_max = R0 + 1.5*a
    Z_min = -1.5*a
    Z_max = 1.5*a

    nR = 80
    nZ = 80

    solver = GradShafranovSolver(R_min, R_max, Z_min, Z_max, nR, nZ)

    # Define free functions
    # Simple parabolic pressure
    p0 = 1e5  # 100 kPa
    psi0 = -0.1

    def p_func(psi):
        if psi > psi0:
            return 0.0
        else:
            return p0 * (1 - psi/psi0)**2

    # Constant F (uniform toroidal field)
    Bt0 = 2.0  # Tesla
    F0 = Bt0 * R0

    def F_func(psi):
        return F0

    solver.set_free_functions(p_func, F_func)

    print("=== Grad-Shafranov Solver ===")
    print(f"Grid: {nR} x {nZ}")
    print(f"Domain: R โˆˆ [{R_min}, {R_max}], Z โˆˆ [{Z_min}, {Z_max}]")
    print(f"Central pressure: {p0/1e3} kPa")
    print(f"Toroidal field: {Bt0} T")

    # Solve
    psi = solver.solve_fixed_boundary(max_iter=100, tol=1e-6)

    # Plot
    fig = solver.plot_solution()
    plt.savefig('/tmp/gs_solution.png', dpi=150)
    print("\nSolution plot saved to /tmp/gs_solution.png")
    plt.close()

if __name__ == "__main__":
    example_gs_solver()

10. ๋ฒ ํƒ€ ๊ณ„์‚ฐ

import numpy as np
import matplotlib.pyplot as plt

def compute_beta(R0, a, p_profile, B_profiles, nr=100):
    """
    Compute various beta values for a tokamak equilibrium

    Parameters:
    -----------
    R0: major radius [m]
    a: minor radius [m]
    p_profile: function p(r) giving pressure profile
    B_profiles: dict with 'Bt', 'Bp' functions of r
    nr: number of radial points

    Returns:
    --------
    dict with beta_p, beta_t, beta_N
    """
    r = np.linspace(0, a, nr)
    dr = r[1] - r[0]

    # Volume element in torus: dV = 2ฯ€ Rโ‚€ ยท 2ฯ€r dr
    def volume_element(r_val):
        return 4 * np.pi**2 * R0 * r_val * dr

    # Compute volume-averaged quantities
    p_vals = np.array([p_profile(r_val) for r_val in r])
    Bt_vals = np.array([B_profiles['Bt'](r_val) for r_val in r])
    Bp_vals = np.array([B_profiles['Bp'](r_val) for r_val in r])

    # Volume integrals
    V_total = np.sum([volume_element(r[i]) for i in range(nr)])

    p_avg = np.sum([p_vals[i] * volume_element(r[i]) for i in range(nr)]) / V_total

    Bt2_avg = np.sum([Bt_vals[i]**2 * volume_element(r[i]) for i in range(nr)]) / V_total
    Bp2_avg = np.sum([Bp_vals[i]**2 * volume_element(r[i]) for i in range(nr)]) / V_total

    mu0 = 4*np.pi*1e-7

    # Poloidal beta
    beta_p = 2 * mu0 * p_avg / Bp2_avg

    # Toroidal beta
    beta_t = 2 * mu0 * p_avg / Bt2_avg

    # For beta_N, need plasma current
    # I_p = โˆฎ Jยทdl ~ B_p * circumference / ฮผโ‚€
    Bp_edge = Bp_vals[-1]
    Ip = 2 * np.pi * a * Bp_edge / mu0

    # Troyon normalized beta
    Bt_axis = Bt_vals[0]
    beta_N = beta_t * 100 / (Ip / (a * Bt_axis))  # percentage

    results = {
        'beta_p': beta_p,
        'beta_t': beta_t,
        'beta_N': beta_N,
        'p_avg': p_avg,
        'Ip': Ip
    }

    return results

def example_beta_calculation():
    """Example beta calculation for tokamak"""

    # ITER-like parameters
    R0 = 6.2
    a = 2.0

    # Parabolic pressure profile
    p0 = 5e5  # 500 kPa
    def p_profile(r):
        return p0 * (1 - (r/a)**2)**2

    # Magnetic field profiles
    Bt0 = 5.3  # On-axis toroidal field
    Ip = 15e6  # Plasma current

    def Bt_profile(r):
        return Bt0 * R0 / (R0 + r)  # 1/R dependence

    def Bp_profile(r):
        mu0 = 4*np.pi*1e-7
        # From Ampere's law, current ~ rยฒ profile
        I_enclosed = Ip * (r/a)**2
        return mu0 * I_enclosed / (2 * np.pi * r) if r > 0 else 0

    B_profiles = {
        'Bt': Bt_profile,
        'Bp': Bp_profile
    }

    # Compute betas
    results = compute_beta(R0, a, p_profile, B_profiles)

    print("=== Beta Calculation ===")
    print(f"Major radius R0 = {R0} m")
    print(f"Minor radius a = {a} m")
    print(f"Central pressure p0 = {p0/1e3} kPa")
    print(f"Toroidal field Bt0 = {Bt0} T")
    print(f"Plasma current Ip = {results['Ip']/1e6:.1f} MA")
    print(f"\nAverage pressure <p> = {results['p_avg']/1e3:.1f} kPa")
    print(f"Poloidal beta ฮฒ_p = {results['beta_p']:.3f}")
    print(f"Toroidal beta ฮฒ_t = {results['beta_t']*100:.2f} %")
    print(f"Normalized beta ฮฒ_N = {results['beta_N']:.2f}")

    # Troyon limit check
    beta_N_limit = 3.5
    print(f"\nTroyon limit ฮฒ_N < {beta_N_limit}")
    if results['beta_N'] < beta_N_limit:
        print("โœ“ Within stability limit")
    else:
        print("โœ— Exceeds stability limit!")

    # Plot profiles
    r = np.linspace(0.01, a, 100)
    p = np.array([p_profile(ri) for ri in r])
    Bt = np.array([Bt_profile(ri) for ri in r])
    Bp = np.array([Bp_profile(ri) for ri in r])

    fig, axes = plt.subplots(2, 2, figsize=(14, 10))

    # Pressure
    axes[0,0].plot(r/a, p/1e3, 'b-', linewidth=2)
    axes[0,0].set_xlabel('r/a')
    axes[0,0].set_ylabel('Pressure [kPa]')
    axes[0,0].set_title('Pressure Profile')
    axes[0,0].grid(True, alpha=0.3)

    # Toroidal field
    axes[0,1].plot(r/a, Bt, 'g-', linewidth=2)
    axes[0,1].set_xlabel('r/a')
    axes[0,1].set_ylabel('B_t [T]')
    axes[0,1].set_title('Toroidal Field')
    axes[0,1].grid(True, alpha=0.3)

    # Poloidal field
    axes[1,0].plot(r/a, Bp, 'r-', linewidth=2)
    axes[1,0].set_xlabel('r/a')
    axes[1,0].set_ylabel('B_p [T]')
    axes[1,0].set_title('Poloidal Field')
    axes[1,0].grid(True, alpha=0.3)

    # Local beta
    beta_local = 2 * (4*np.pi*1e-7) * p / (Bt**2 + Bp**2)
    axes[1,1].plot(r/a, beta_local*100, 'm-', linewidth=2)
    axes[1,1].set_xlabel('r/a')
    axes[1,1].set_ylabel('ฮฒ [%]')
    axes[1,1].set_title('Local Beta Profile')
    axes[1,1].grid(True, alpha=0.3)

    plt.tight_layout()
    plt.savefig('/tmp/beta_profiles.png', dpi=150)
    print("\nProfiles plot saved to /tmp/beta_profiles.png")
    plt.close()

if __name__ == "__main__":
    example_beta_calculation()

์š”์•ฝ

์ด ๊ฐ•์˜์—์„œ MHD ํ‰ํ˜•์˜ ๊ธฐ์ดˆ๋ฅผ ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค:

  1. ํž˜ ๊ท ํ˜•: ๊ธฐ๋ณธ ๋ฐฉ์ •์‹ $\nabla p = \mathbf{J}\times\mathbf{B}$๊ฐ€ ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ ๊ตฌ๋ฐฐ์™€ ์ž๊ธฐ๋ ฅ (์••๋ ฅ + ์žฅ๋ ฅ)์˜ ๊ท ํ˜•์„ ๋งž์ถฅ๋‹ˆ๋‹ค.

  2. ๊ฒฐ๊ณผ: ์••๋ ฅ๊ณผ ์ „๋ฅ˜๋Š” ์ž๊ธฐ ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์œ„์— ๋†“์ด๋ฉฐ, ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด ์ขŒํ‘œ๊ณ„๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

  3. 1์ฐจ์› ํ‰ํ˜•: ฮธ-pinch (์ˆœ์ˆ˜ ์ถ•๋ฐฉํ–ฅ ์žฅ), Z-pinch (์ž์ฒด ์ƒ์„ฑ ๋ฐฉ์œ„๊ฐ ์žฅ, Bennett ๊ด€๊ณ„), screw pinch (์ „๋‹จ์„ ๊ฐ€์ง„ ๊ฒฐํ•ฉ ์žฅ).

  4. Grad-Shafranov ๋ฐฉ์ •์‹: ๋‘ ๊ฐœ์˜ ์ž์œ  ํ•จ์ˆ˜ $p(\psi)$์™€ $F(\psi)$ ์ง€์ •์ด ํ•„์š”ํ•œ ์ถ•๋Œ€์นญ ํ† ๋กœ์ด๋‹ฌ ํ‰ํ˜•์„ ์ง€๋ฐฐํ•˜๋Š” ํƒ€์›ํ˜• PDE.

  5. ์•ˆ์ „ ์ธ์ž: ์ž๊ธฐ์žฅ์„  ํ”ผ์น˜๋ฅผ ์ธก์ •ํ•˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜ $q$, ์•ˆ์ •์„ฑ ๋ถ„์„์— ์ค‘์š” (Kruskal-Shafranov ํ•œ๊ณ„, ์œ ๋ฆฌ์ˆ˜ ํ‘œ๋ฉด).

  6. ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด: ์••๋ ฅ์ด ์ผ์ •ํ•œ ์ค‘์ฒฉ๋œ ํ† ๋กœ์ด๋‹ฌ ํ‘œ๋ฉด, ํ† ๋กœ์ด๋‹ฌ ํšจ๊ณผ๋กœ ์ธํ•œ Shafranov ์ด๋™.

  7. ํ”Œ๋ผ์ฆˆ๋งˆ ๋ฒ ํƒ€: ํ”Œ๋ผ์ฆˆ๋งˆ ๋Œ€ ์ž๊ธฐ ์••๋ ฅ์˜ ๋น„์œจ, MHD ์•ˆ์ •์„ฑ์ด ์„ค์ •ํ•œ ์šด์˜ ํ•œ๊ณ„ (Troyon ํ•œ๊ณ„).

  8. ์ˆ˜์น˜์  ๋ฐฉ๋ฒ•: ์œ ํ•œ ์ฐจ๋ถ„๊ณผ ๋ฐ˜๋ณต ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ ํ‰ํ˜• ์†”๋ฒ„ ๊ตฌํ˜„.

์ด๋Ÿฌํ•œ ํ‰ํ˜• ๊ฐœ๋…์€ ํ”Œ๋ผ์ฆˆ๋งˆ ์•ˆ์ •์„ฑ (๋‹ค์Œ ๊ฐ•์˜), ์ˆ˜์†ก, ๊ทธ๋ฆฌ๊ณ  ํ•ต์œตํ•ฉ ์žฅ์น˜์˜ ๊ฐ€๋‘ ์„ ์ดํ•ดํ•˜๋Š” ๊ธฐ์ดˆ๋ฅผ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

์—ฐ์Šต ๋ฌธ์ œ

๋ฌธ์ œ 1: ์›ํ†ตํ˜• ํ”Œ๋ผ์ฆˆ๋งˆ์—์„œ์˜ ํž˜ ๊ท ํ˜•

์›ํ†ตํ˜• ํ”Œ๋ผ์ฆˆ๋งˆ ๊ธฐ๋‘ฅ์ด ๋‹ค์Œ ํ”„๋กœํŒŒ์ผ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค: - ์••๋ ฅ: $p(r) = p_0(1 - r^2/a^2)$ for $r < a$, $p=0$ for $r \geq a$ - ์ถ•๋ฐฉํ–ฅ ์žฅ: $B_z = B_0 = \text{const}$ - ๋ฐฉ์œ„๊ฐ ์žฅ: $B_ฮธ(r)$ ๊ฒฐ์ • ํ•„์š”

(a) ๋ฐฉ์‚ฌ์ƒ ํž˜ ๊ท ํ˜• ๋ฐฉ์ •์‹์„ ์‚ฌ์šฉํ•˜์—ฌ $B_ฮธ(r)$์„ ์œ ๋„ํ•˜์„ธ์š”.

(b) ์ด ํ”Œ๋ผ์ฆˆ๋งˆ ์ „๋ฅ˜ $I_p$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(c) ์ฃผ์š” ๋ฐ˜์ง€๋ฆ„ $R_0 = 5a$๋ฅผ ๊ฐ€์ •ํ•˜๊ณ  ์•ˆ์ „ ์ธ์ž $q(r)$์„ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(d) ์ž๊ธฐ ์ถ• ($r=0$)์—์„œ $q$๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

ํžŒํŠธ: ์›ํ†ต ์ขŒํ‘œ๊ณ„์—์„œ $\nabla p = \mathbf{J}\times\mathbf{B}$๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๋ฌธ์ œ 2: Z-Pinch์— ๋Œ€ํ•œ Bennett ๊ด€๊ณ„

Z-pinch๊ฐ€ ๊ท ์ผํ•œ ๋ฐ€๋„ $n = 10^{20}$ m$^{-3}$, ์˜จ๋„ $T = 10$ keV, ๊ธธ์ด $L = 1$ m, ๋ฐ˜์ง€๋ฆ„ $a = 1$ cm๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

(a) ์ด ์ž…์ž ์ˆ˜ $N = n \pi a^2 L$์„ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(b) Bennett ๊ด€๊ณ„ $I^2 = (8\pi/\mu_0)NkT$๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ์ „๋ฅ˜ $I_p$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(c) ํ‘œ๋ฉด์—์„œ ์ž๊ธฐ์žฅ $B_ฮธ(a) = \mu_0 I_p/(2\pi a)$๋ฅผ ์ถ”์ •ํ•˜์„ธ์š”.

(d) ์ž๊ธฐ ์••๋ ฅ $B_ฮธ^2/(2\mu_0)$๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ํ”Œ๋ผ์ฆˆ๋งˆ ์••๋ ฅ $p = nkT$์™€ ๋น„๊ตํ•˜์„ธ์š”.

(e) ์ด ๊ตฌ์„ฑ์˜ ์•ˆ์ •์„ฑ ํ•จ์˜๋ฅผ ๋…ผ์˜ํ•˜์„ธ์š”.

๋ฌธ์ œ 3: ์ผ์ • ์••๋ ฅ์„ ๊ฐ€์ง„ Grad-Shafranov

๋‹ค์Œ์„ ๊ฐ€์ง„ Grad-Shafranov ๋ฐฉ์ •์‹์„ ๊ณ ๋ คํ•˜์„ธ์š”: - $p(\psi) = p_0 = \text{const}$ - $F(\psi) = F_0 = \text{const}$

(a) ๋ฐฉ์ •์‹์ด ๋‹ค์Œ์œผ๋กœ ์ถ•์•ฝ๋จ์„ ๋ณด์ด์„ธ์š”: $$ \Delta^*\psi = -\mu_0 p_0 R^2 $$

(b) ํฐ ์ข…ํšก๋น„ ์›ํ˜• ํ† ์นด๋ง‰ ($R \approx R_0$)์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทผ์‚ฌํ•˜์„ธ์š”: $$ \frac{1}{r}\frac{d}{dr}\left(r\frac{d\psi}{dr}\right) + \frac{d^2\psi}{dz^2} \approx -\mu_0 p_0 R_0^2 $$

(c) ๋ถ„๋ฆฌ ๊ฐ€๋Šฅํ•œ ํ•ด $\psi(r,z) = R_r(r)Z_z(z)$๋ฅผ ์ œ์•ˆํ•˜๊ณ  $R_r$๊ณผ $Z_z$์— ๋Œ€ํ•œ ODE๋ฅผ ์œ ๋„ํ•˜์„ธ์š”.

(d) ์›ํ˜• ํ”Œ๋Ÿญ์Šค ํ‘œ๋ฉด $\psi \propto r^2 + \kappa^2 z^2$์— ๋Œ€ํ•ด ํ’€๊ณ  $\kappa$ (๋Š˜๋ฆผ)๋ฅผ ๊ฒฐ์ •ํ•˜์„ธ์š”.

๋ฌธ์ œ 4: ์•ˆ์ „ ์ธ์ž์™€ ์ „๋ฅ˜ ํ”„๋กœํŒŒ์ผ

ํ† ์นด๋ง‰์ด ์ฃผ์š” ๋ฐ˜์ง€๋ฆ„ $R_0 = 3$ m, ์†Œ๋ฐ˜์ง€๋ฆ„ $a = 1$ m, ํ† ๋กœ์ด๋‹ฌ ์žฅ $B_t = 5$ T (๊ฑฐ์˜ ์ผ์ •)๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ „๋ฅ˜ ๋ฐ€๋„ ํ”„๋กœํŒŒ์ผ์€:

$$ J_z(r) = J_0\left(1 - \frac{r^2}{a^2}\right) $$

(a) ๋‘˜๋Ÿฌ์‹ธ์ธ ์ „๋ฅ˜ $I(r) = \int_0^r J_z(r') 2\pi r' dr'$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(b) ์•™ํŽ˜๋ฅด ๋ฒ•์น™์„ ์‚ฌ์šฉํ•˜์—ฌ $B_ฮธ(r) = \mu_0 I(r)/(2\pi r)$๋ฅผ ๊ตฌํ•˜์„ธ์š”.

(c) ์•ˆ์ „ ์ธ์ž ํ”„๋กœํŒŒ์ผ $q(r) = rB_t/(R_0 B_ฮธ(r))$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(d) $q(0)$ (์ถ• ์ƒ)๊ณผ $q(a)$ (๊ฐ€์žฅ์ž๋ฆฌ)๋ฅผ ๊ฒฐ์ •ํ•˜์„ธ์š”.

(e) $q(r_s) = 2$ ($m=2$ ์œ ๋ฆฌ์ˆ˜ ํ‘œ๋ฉด)์ธ ๋ฐ˜์ง€๋ฆ„ $r_s$๋ฅผ ๊ตฌํ•˜์„ธ์š”.

(f) $q(r)$์„ ํ”Œ๋กฏํ•˜๊ณ  ์•ˆ์ •์„ฑ ๊ด€๋ จ ํŠน์ง•์„ ์‹๋ณ„ํ•˜์„ธ์š”.

๋ฌธ์ œ 5: ๋ฒ ํƒ€ ํ•œ๊ณ„

์‹คํ—˜ ํ† ์นด๋ง‰์ด ๋‹ค์Œ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค: - ์†Œ๋ฐ˜์ง€๋ฆ„ $a = 0.5$ m - ํ† ๋กœ์ด๋‹ฌ ์žฅ $B_t = 3$ T - ํ”Œ๋ผ์ฆˆ๋งˆ ์ „๋ฅ˜ $I_p = 1$ MA - ์ค‘์‹ฌ ์••๋ ฅ $p_0 = 10^5$ Pa - ์••๋ ฅ ํ”„๋กœํŒŒ์ผ $p(r) = p_0(1 - r^2/a^2)^2$

(a) ์ฒด์  ํ‰๊ท  ์••๋ ฅ $\langle p\rangle$์„ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(b) ํ† ๋กœ์ด๋‹ฌ ๋ฒ ํƒ€ $\beta_t = 2\mu_0\langle p\rangle/B_t^2$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(c) ์ •๊ทœํ™”๋œ ๋ฒ ํƒ€ $\beta_N = \beta_t(\%)/(I_p[MA]/(a[m]B_t[T]))$๋ฅผ ๊ณ„์‚ฐํ•˜์„ธ์š”.

(d) $\beta_N$์„ Troyon ํ•œ๊ณ„ $\beta_N < 3.5$์™€ ๋น„๊ตํ•˜์„ธ์š”.

(e) ์‹คํ—˜์ด ์••๋ ฅ์„ ๋‘ ๋ฐฐ๋กœ ํ•˜๋ ค๋ฉด ์•ˆ์ •์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด $I_p$ ๋˜๋Š” $B_t$์— ์–ด๋–ค ์กฐ์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๊นŒ?

ํžŒํŠธ: ์›ํ†ต์—์„œ ์ฒด์  ํ‰๊ท : $\langle p\rangle = \frac{\int_0^a p(r) 2\pi r dr}{\pi a^2}$.


์ด์ „: Overview | ๋‹ค์Œ: Linear Stability

to navigate between lessons