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) ]
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.
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")
""" 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
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))
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())
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 = []
#!/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()
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")
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
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())
#!/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))
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