Ejemplo n.º 1
0
import numpy as np
from mayavi import mlab
from raysect.core import Point3D, World, rotate_z
from raysect.primitive import import_ply
from vita.modules.projection.cherab import FieldlineTracer, RK2, RK4, load_wall_configuration
from vita.modules.equilibrium.fiesta import Fiesta
from vita.utility import get_resource


# the world scene-graph
world = World()

##########################
# add machine components #

config_file = get_resource("ST40-IVC1", "configuration", 'st40_ivc1_config')
load_wall_configuration(config_file, world)


eq002 = get_resource("ST40-IVC1", "equilibrium", "eq_006_2T_export")
fiesta = Fiesta(eq002)
b_field = fiesta.b_field
lcfs = fiesta.get_midplane_lcfs()[1]


seed_points = [
    Point3D(0.75, 0, 0),
    Point3D(lcfs + 0.001, 0, 0),
    Point3D(lcfs + 0.01, 0, 0),
    Point3D(lcfs + 0.02, 0, -0.01)
]
Ejemplo n.º 2
0
import numpy as np
import matplotlib.pyplot as plt
from vita.utility import get_resource
from vita.modules.projection.projection2D.field_line.field_line_projection import project_field_lines
from vita.modules.projection.projection2D.field_line.field_line import FieldLine
from vita.modules.equilibrium.fiesta.fiesta_interface import Fiesta
from vita.modules.sol_heat_flux.eich.eich import Eich
from vita.modules.utils.getOption import getOption


if __name__ == '__main__':
    #HESEL_FILE_PATH = '/media/jmbols/Data/jmbols/ST40/Programme 3/Te(i)_grad_scan/ST40.00003.20.h5'
    #HESELDATA = HESELdata(HESEL_FILE_PATH)
    #HESELDATA.evaluate_parallel_heat_fluxes()

    FILEPATH = get_resource("ST40-IVC1", "equilibrium", "eq_006_2T_export")

    FIESTA = Fiesta(FILEPATH)

    FIELD_LINE = FieldLine(FIESTA)
    MID_PLANE_LOC = FIESTA.get_midplane_lcfs()[1]

    #I_AFTER_LCFS = np.linspace(-1, 10, 100)*1e-3
    #I_AFTER_LCFS = np.where(HESELDATA.hesel_params.xaxis >= 0)[0]
    # specify and load heatflux profile
    FOOTPRINT = Eich(0.0025, 0.0005, r0_lfs=MID_PLANE_LOC)  # lambda_q=2.5, S=0.5

    X_OMP = np.linspace(0, 10, 100)*1e-3
    FOOTPRINT.set_coordinates(X_OMP)
    FOOTPRINT.s_disconnected_dn_max = 2.1
    FOOTPRINT.fx_in_out = 5.
Ejemplo n.º 3
0
from raysect.core import Point3D, World, rotate_z
from raysect.primitive import import_ply, export_vtk

from vita.modules.sol_heat_flux.eich import Eich
from vita.modules.cherab import FieldlineTracer, RK2
from vita.modules.fiesta import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()

##########################
# add machine components #
meshes = {}

vessel = get_resource("ST40-IVC2", "mesh", "vessel")
vessel = import_ply(vessel, scaling=0.001, parent=world, name="vessel")
meshes["vessel"] = vessel

vessel_lower = get_resource("ST40-IVC2", "mesh", "vessel_lower")
vessel_lower = import_ply(vessel_lower,
                          scaling=0.001,
                          parent=world,
                          name="vessel_lower")
meshes["vessel_lower"] = vessel_lower

vessel_upper = get_resource("ST40-IVC2", "mesh", "vessel_upper")
vessel_upper = import_ply(vessel_upper,
                          scaling=0.001,
                          parent=world,
                          name="vessel_upper")
Ejemplo n.º 4
0
"""

import numpy as np
import matplotlib.pyplot as plt
from vita.utility import get_resource
from vita.modules.projection.projection2D.field_line.field_line_projection import project_field_lines
from vita.modules.projection.projection2D.field_line.field_line import FieldLine
from vita.modules.equilibrium.fiesta.fiesta_interface import Fiesta
from vita.modules.sol_heat_flux.eich.eich import Eich

if __name__ == '__main__':
    #HESEL_FILE_PATH = '/media/jmbols/Data/jmbols/ST40/Programme 3/Te(i)_grad_scan/ST40.00003.20.h5'
    #HESELDATA = HESELdata(HESEL_FILE_PATH)
    #HESELDATA.evaluate_parallel_heat_fluxes()

    FILEPATH = get_resource("ST40", "equilibrium", "eq002")

    FIESTA = Fiesta(FILEPATH)

    FIELD_LINE = FieldLine(FIESTA)
    MID_PLANE_LOC = FIESTA.get_midplane_lcfs()[1]

    #I_AFTER_LCFS = np.linspace(-1, 10, 100)*1e-3
    #I_AFTER_LCFS = np.where(HESELDATA.hesel_params.xaxis >= 0)[0]
    # specify and load heatflux profile
    FOOTPRINT = Eich(0.0025, 0.0005,
                     r0_lfs=MID_PLANE_LOC)  # lambda_q=2.5, S=0.5

    X_OMP = np.linspace(0, 10, 100) * 1e-3
    FOOTPRINT.set_coordinates(X_OMP)
    FOOTPRINT.s_disconnected_dn_max = 2.1
Ejemplo n.º 5
0
import numpy as np
from mayavi import mlab
from raysect.core import Point3D, World, rotate_z
from raysect.primitive import import_ply

from vita.modules.cherab import FieldlineTracer, RK2, RK4, load_wall_configuration
from vita.modules.fiesta import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()

##########################
# add machine components #

config_file = get_resource("ST40-IVC2", "configuration", 'st40_ivc2_config')
load_wall_configuration(config_file, world)

eq002 = get_resource("ST40", "equilibrium", "eq002")
fiesta = Fiesta(eq002)
b_field = fiesta.b_field

seed_points = [
    Point3D(0.507, 0, 0),
    Point3D(0.6, 0, 0),
    Point3D(0.7, 0, 0),
    Point3D(0.733, 0, -0.01)
]

field_tracer = FieldlineTracer(b_field, method=RK4(step_size=0.0001))
Ejemplo n.º 6
0
        strike_points = []

        f_profile = self.f_profile
        q_profile = self.q_profile

        b_vacuum_radius = self.b_vac_radius
        b_vacuum_magnitude = self.b_vac

        lcfs_polygon = self.lcfs_polygon  # shape 2xM, indexing to remove duplicated point
        if np.all(lcfs_polygon[:, 0] == lcfs_polygon[:, -1]):
            lcfs_polygon = lcfs_polygon[:, 0:-1]

        limiter_polygon = np.array([self.r_limiter, self.z_limiter])  # 2xM

        time = 0.0

        equilibrium = EFITEquilibrium(r_vec, z_vec, psi, psi_axis, psi_lcfs,
                                      magnetic_axis, x_points, strike_points,
                                      f_profile, q_profile, b_vacuum_radius,
                                      b_vacuum_magnitude, lcfs_polygon,
                                      limiter_polygon, time)

        return equilibrium


if __name__ == '__main__':
    from vita.utility import get_resource

    equil = get_resource("ST40", "equilibrium", "limited_eq001_export")
    FIESTA_EQUIL = Fiesta(equil)
    print(FIESTA_EQUIL.get_midplane_lcfs())
Ejemplo n.º 7
0
import numpy as np
from mayavi import mlab
from raysect.core import Point3D, World
from raysect.primitive import import_obj
from vita.modules.projection.cherab import FieldlineTracer, RK2
from vita.modules.equilibrium.fiesta import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()
ST40_mesh = get_resource("ST40", "mesh", "ST40_IVC")
import_obj(ST40_mesh, scaling=0.001, parent=world)

eq001 = get_resource("ST40", "equilibrium", "limited_eq001_export")
fiesta = Fiesta(eq001)
b_field = fiesta.b_field

seed_points = []

n = 20
for i in range(n):
    lcfs = 0.72677891
    seed_points.append(Point3D(lcfs + i * 0.001, 0.0, 0.0 + 0.02))

    #Point3D(0.7270, 0, 0),
    #Point3D(0.7275, 0, 0),
    #Point3D(0.7280, 0, 0)]

field_tracer = FieldlineTracer(b_field, method=RK2(step_size=0.00005))

end_points = []
Ejemplo n.º 8
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 20 18:28:22 2019

@author: Daniel.Ibanez
"""
import numpy as np
from matplotlib import pyplot as plt
from os.path import join as pjoin
import os
from vita.modules.equilibrium.fiesta import Fiesta
from vita.modules.representation.psi_map import PsiRepresentation
from vita.utility import get_resource, add_resource
from vita.modules.utils.getOption import getOption

########################
# load the equilibrium #
EQ_NAME = "eq_006_2T_export"
FIESTA_FILE = get_resource("ST40-IVC1", "equilibrium", EQ_NAME)
print("Processing file: " + FIESTA_FILE)

PSI_REPRESENTATION = PsiRepresentation(FIESTA_FILE)
PSI_REPRESENTATION.psiVTK()
PSI_REPRESENTATION.visualize2D()
PSI_REPRESENTATION.visualize3D()
Ejemplo n.º 9
0
from scipy.optimize import brentq
from mayavi import mlab
from raysect.core import Point3D, World
from raysect.primitive import import_ply, export_vtk

from vita.modules.cherab import FieldlineTracer, RK2
from vita.modules.fiesta import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()

# add machine components
meshes = {}

centre_column_lower = get_resource("ST40-IVC1", "mesh", "centre_column_lower")
centre_column_lower = import_ply(centre_column_lower,
                                 scaling=0.001,
                                 parent=world,
                                 name="centre_column_lower")
meshes["centre_column_lower"] = centre_column_lower

centre_column_middle = get_resource("ST40-IVC1", "mesh",
                                    "centre_column_middle")
centre_column_middle = import_ply(centre_column_middle,
                                  scaling=0.001,
                                  parent=world,
                                  name="centre_column_middle")
meshes["centre_column_middle"] = centre_column_middle

centre_column_upper = get_resource("ST40-IVC1", "mesh", "centre_column_upper")
Ejemplo n.º 10
0
import numpy as np
from raysect.core import Point2D, World

from vita.modules.sol_heat_flux.eich import Eich
from vita.modules.cherab import FieldlineTracer, RK2, InterfaceSurface, sample_power_at_surface
from vita.modules.cherab import load_wall_configuration
from vita.modules.fiesta import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()

##########################
# add machine components #

config_file = get_resource("ST40-IVC1", "configuration", 'st40_ivc1_config')
load_wall_configuration(config_file, world)

########################
# load the equilibrium #
eq007 = get_resource("ST40-IVC1", "equilibrium", "div_007")
fiesta = Fiesta(eq007)
b_field = fiesta.b_field
field_tracer = FieldlineTracer(b_field, method=RK2(step_size=0.0001))
equilibrium = fiesta.to_cherab_equilibrium()
psin2d = equilibrium.psi_normalised

##############################
# setup the heatflux profile #

# specify and load heatflux profile
Ejemplo n.º 11
0

class PsiMapper:
    def __init__(self):
        self.r0_hfs = 0.  # edge radius at outboard equatorial midplane
        self.r0_lfs = 0.  # edge radius at inboard equatorial midplane
        self.__s = []  # limiter profile coordinate array
        self.__q = []  # heat flux density profile
        self.__totalPower = 0.
        self.model_type = None
        self.s_disconnected_dn_max = 0.001
        self._s_disconnected_dn_inboard = 0.001
        self._interp_func = None

    def setEquilibrium(self, equil_in):
        self.equil = equil_in

    def setLimiterProfile(self, profile_in):
        self.__profile = profile_in

    def mapMidPlaneFlux(self, q_mp, r_mp, equil):
        self.__q = q_mp
        self.__s


if __name__ == '__main__':
    from vita.utility import get_resource

    equil = get_resource("ST40", "equilibrium", "eq002")
    FIESTA_EQUIL = Fiesta(equil)
    print(FIESTA_EQUIL.get_midplane_lcfs())
Ejemplo n.º 12
0
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sun Oct 20 18:28:22 2019

@author: Daniel.Ibanez
"""
import numpy as np
from matplotlib import pyplot as plt

from vita.modules.fiesta import FieldLine
from vita.utility import get_resource

R200 = get_resource("ST200", "equilibrium", "R200")
field_line = FieldLine(R200)
R = field_line.fiesta_equil.get_midplane_lcfs()
r0 = 0.6
rf = 1.
midplane_range = np.linspace(r0, rf, 5)
points = []
lengths = []
for r in midplane_range:
    points.append([r, 0, 0])
    lengths.append(120)
print(lengths)
field_line_dict = []
for idx, val in enumerate(points):
    field_line_dict.append(
        field_line.follow_field_in_plane(val,
                                         lengths[idx],
                                         break_at_limiter=False))
Ejemplo n.º 13
0
from raysect.core import Point2D, World
from cherab.tools.primitives import axisymmetric_mesh_from_polygon
from cherab.tools.equilibrium import plot_equilibrium

from vita.modules.sol_heat_flux.eich import Eich
from vita.modules.cherab import FieldlineTracer, RK2, InterfaceSurface, sample_power_at_surface
from vita.modules.cherab import load_wall_configuration
from vita.modules.equilibrium import Fiesta
from vita.utility import get_resource

# the world scene-graph
world = World()

########################
# load the equilibrium #
eq006 = get_resource("ST40-IVC1", "equilibrium", "eq_006_2T")
fiesta = Fiesta(eq006)
b_field = fiesta.b_field
field_tracer = FieldlineTracer(b_field, method=RK2(step_size=0.0001))
equilibrium = fiesta.to_cherab_equilibrium()
psin2d = equilibrium.psi_normalised

##############################
# setup the heatflux profile #

# specify and load heatflux profile
footprint = Eich(1.0e-3, 0.0001e-3)

x = np.linspace(-0.001, 0.01, 100)
footprint.set_coordinates(x)
footprint.s_disconnected_dn_max = 2.1