From 67bb9b6fd91b7f33ea57e37ca5f55da374b5fcfb Mon Sep 17 00:00:00 2001 From: vsitaraman Date: Fri, 24 Apr 2026 14:31:50 -0400 Subject: [PATCH] modified: .gitignore modified: anasen_fem/paraview_plotter.py modified: anasen_fem/wires2d.sif modified: anasen_fem/wires_gmsh2d_bc.py --- .gitignore | 3 ++- anasen_fem/paraview_plotter.py | 26 +++++++++++--------------- anasen_fem/wires2d.sif | 3 ++- anasen_fem/wires_gmsh2d_bc.py | 23 ++++++++++++----------- 4 files changed, 27 insertions(+), 28 deletions(-) diff --git a/.gitignore b/.gitignore index 96948db..8c830cc 100644 --- a/.gitignore +++ b/.gitignore @@ -30,4 +30,5 @@ qqq_gains_det3.dat qqq_relative_gains.dat Armory/CorrelateQQQ.h QQQStage2.C -anasen_fem/scalars.dat.names \ No newline at end of file +anasen_fem/scalars.dat.names +anasen_fem/He96_CO2_4_260Torr.gas diff --git a/anasen_fem/paraview_plotter.py b/anasen_fem/paraview_plotter.py index 563fc9b..0726585 100755 --- a/anasen_fem/paraview_plotter.py +++ b/anasen_fem/paraview_plotter.py @@ -1,4 +1,4 @@ -#!/home/vsitaraman/ParaView-6.1.0-RC1-MPI-Linux-Python3.12-x86_64/bin/pvbatch +#!/home/vs19g/ParaView-6.1.0-MPI-Linux-Python3.12-x86_64/bin/pvbatch import numpy as np import sys from paraview.simple import * @@ -35,15 +35,14 @@ contour_display.SetScalarBarVisibility(renderView, True) view = GetActiveView() # 2. Define your desired coordinate ranges (x_min, x_max, y_min, y_max, z_min, z_max) -# Example: Look at a box from -10 to 10 in all dimensions -x_min, x_max = -50.0, 50.0 -y_min, y_max = -50.0, 50.0 -z_min, z_max = -50.0, 50.0 +x_min, x_max = -0.05, 0.05 +y_min, y_max = -0.05, 0.05 +z_min, z_max = -0.05, 0.05 # 3. Calculate Center, Position, and Parallel Scale center = [(x_min + x_max) / 2.0, (y_min + y_max) / 2.0, (z_min + z_max) / 2.0] # Position the camera far away along Z to look at the center -position = [center[0], center[1], z_min - 30.0] +position = [center[0], center[1], 1.0] # Parallel scale defines how much of the scene is visible. # It is usually half the height of the viewed area. view.CameraParallelScale = max((x_max - x_min), (y_max - y_min))/1.6 @@ -69,15 +68,13 @@ contour_display.RenderLinesAsTubes = 0 # Makes lines look smoother at high re # 1. Get the active view view = GetActiveView() -# 4. Apply settings -# 1. Set the Focal Point to the middle of the quadrant -zoom_center = [-25, 25, 0.0] +# 1. Set the Focal Point to the middle of the quadrant in metres +zoom_center = [-0.025, 0.025, 0.0] -# 2. Tighten the Parallel Scale -view.CameraParallelScale = 15 +# 2. Tighten the Parallel Scale +view.CameraParallelScale = 0.015 -# 3. Position the Camera -# Keep it 0.5m away looking "down" at the new center +# 3. Position the Camera (0.5m away is fine) view.CameraPosition = [zoom_center[0], zoom_center[1], 0.5] view.CameraFocalPoint = zoom_center view.CameraViewUp = [0.0, 1.0, 0.0] @@ -94,9 +91,8 @@ glyph = Glyph(Input=contour_filter, GlyphType='Arrow') # # Orientation Array: Use the 'electric field' vector from Elmer glyph.OrientationArray = ['POINTS', 'electric field'] glyph.ScaleArray = ['POINTS', 'No scale array'] -glyph.ScaleFactor = 1 +glyph.ScaleFactor = 0.001 -# Sampling: Every nth point (Stride 16) glyph.GlyphMode = 'Every Nth Point' glyph.Stride = 24 diff --git a/anasen_fem/wires2d.sif b/anasen_fem/wires2d.sif index 708e822..229d0b4 100755 --- a/anasen_fem/wires2d.sif +++ b/anasen_fem/wires2d.sif @@ -10,6 +10,7 @@ Simulation Steady State Max Iterations = 1 Output File = "elstatics.result" Post File = "elstatics.ep" + Coordinate Scaling = 0.001 ! Converts mm from Gmsh to meters for Elmer End Constants @@ -85,7 +86,7 @@ Solver 4 End Boundary Condition 1 - Target Boundaries = 1 + Target Boundaries = 1 Potential = -200 Calculate Electric Force = True End diff --git a/anasen_fem/wires_gmsh2d_bc.py b/anasen_fem/wires_gmsh2d_bc.py index 2877de2..8c1358a 100755 --- a/anasen_fem/wires_gmsh2d_bc.py +++ b/anasen_fem/wires_gmsh2d_bc.py @@ -188,17 +188,17 @@ i2wire_surfs = get_surfs(ic2_wires) if include_ic_wires else [] all_active_wire_surfs = needle_surfs + gwire_surfs + awire_surfs + cwire_surfs + i1wire_surfs + i2wire_surfs gmsh.model.mesh.embed(1, all_active_wire_surfs, 2, anasen_barrel) -# f1 = gmsh.model.mesh.field.add("Distance") -# gmsh.model.mesh.field.setNumbers(f1, "CurvesList", all_active_wire_surfs) +f1 = gmsh.model.mesh.field.add("Distance") +gmsh.model.mesh.field.setNumbers(f1, "CurvesList", all_active_wire_surfs) -# f2 = gmsh.model.mesh.field.add("Threshold") -# gmsh.model.mesh.field.setNumber(f2, "InField", f1) -# gmsh.model.mesh.field.setNumber(f2, "SizeMin", 0.1) # Fine mesh near wires -# gmsh.model.mesh.field.setNumber(f2, "SizeMax", 10.0) # Large mesh in empty space -# gmsh.model.mesh.field.setNumber(f2, "DistMin", 1.0) # Apply SizeMin within 1mm -# gmsh.model.mesh.field.setNumber(f2, "DistMax", 20.0) # Transition to SizeMax by 20mm +f2 = gmsh.model.mesh.field.add("Threshold") +gmsh.model.mesh.field.setNumber(f2, "InField", f1) +gmsh.model.mesh.field.setNumber(f2, "SizeMin", 0.05) # Fine mesh near wires +gmsh.model.mesh.field.setNumber(f2, "SizeMax", 5.0) # Large mesh in empty space +gmsh.model.mesh.field.setNumber(f2, "DistMin", 0.5) # Apply SizeMin within 1mm +gmsh.model.mesh.field.setNumber(f2, "DistMax", 15.0) # Transition to SizeMax by 20mm -# gmsh.model.mesh.field.setAsBackgroundMesh(f2) +gmsh.model.mesh.field.setAsBackgroundMesh(f2) # --- Physical Groups --- @@ -222,8 +222,9 @@ gmsh.model.addPhysicalGroup(2, [anasen_barrel], tag=13, name="gas") gmsh.option.setNumber("Mesh.Algorithm", 6) gmsh.model.mesh.generate(dim=2) -gmsh.model.mesh.refine() -gmsh.model.mesh.refine() +# gmsh.model.mesh.refine() +# gmsh.model.mesh.refine() gmsh.write("wires2d.msh") +gmsh.model.mesh.setOrder(1) #gmsh.fltk.run() gmsh.finalize()