ANASEN_analysis/anasen_fem/cfrac_pred_2026-10-28
Vignesh Sitaraman 4e6e101370 modified: TrackRecon.C
new file:   anasen_fem/cfrac_pred_2026-10-28/README.md
	new file:   anasen_fem/cfrac_pred_2026-10-28/band_centre.csv
	new file:   anasen_fem/cfrac_pred_2026-10-28/cfrac_pred_method.md
	new file:   anasen_fem/cfrac_pred_2026-10-28/check_extrapolation.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/collect_slices.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/fit_function.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/function_map.csv
	new file:   anasen_fem/cfrac_pred_2026-10-28/make_cfrac_pred.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/map_function.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/slices_fit.csv
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/README.md
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/anode_dot.csv
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/elmer_phys.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/elmer_weight.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/elmergrid.log
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/geometry.py
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/probe_fields.py
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/scalars.dat
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/scalars.dat.names
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/scalars_weight.dat
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/scalars_weight.dat.names
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/wires2d.sif
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/wires2d_weight.sif
	new file:   anasen_fem/cfrac_pred_2026-10-28/solve_z44.7820/wires_gmsh2d_bc.py
2026-11-04 16:49:26 -05:00
..
solve_z44.7820 modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
band_centre.csv modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
cfrac_pred_method.md modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
check_extrapolation.log modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
collect_slices.log modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
fit_function.log modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
function_map.csv modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
make_cfrac_pred.log modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
map_function.log modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
README.md modified: TrackRecon.C 2026-11-04 16:49:26 -05:00
slices_fit.csv modified: TrackRecon.C 2026-11-04 16:49:26 -05:00

Charge-fraction prediction, 2026-10-28

Four slices solved for the defense figure defense/figures/cfrac_pred.png, archived here beside the solves that were already in wires2d/vtu_files.

index z (mm) phase in the cell relative azimuth anode-cathode gap
10 0.0000 midpoint 7.500 deg 6.220 mm
10 19.6900 crossover 0.037 deg 4.339 mm
11 19.7940 crossover 0.003 deg 4.339 mm
12 29.8500 quarter 3.794 deg 4.908 mm
13 39.9200 midpoint, next cell 7.435 deg 6.247 mm
14 44.7820 three eighths 5.625 deg 5.535 mm
15 49.9800 three quarters 3.699 deg 4.925 mm

Indices 10 and 11 were already here; 12 to 15 were added by this study. Each index has an elfield_anasen_* (physical solve, anodes at 660 V) and an elfield_weight_* (Ramo weighting solve, cathode 1 at 1 V) on the same mesh. The archived 10 and 11 ran at 650 V, the new ones at 660; only ratios are used, and the extraction reads the electrode potential off the wire interior rather than assuming it.

dotproduct.py was not run on the new slices: it writes another ~1 GB per slice and only the anode surfaces are needed. probe_fields.py in the code below computes the same product straight from the two field VTUs.

Do not take E.E_w from the nodal "electric field" array

FluxSolver recovers the gradient element by element and a degenerate element puts a spike on a node. The meshes for 12 to 15 carry ~960 nodes above 1e6 V/m where meshes 10 and 11 have none, so the extremum over a wire's surface nodes lands on a spike: a re-solve of z = 19.794 returned -1.526e12 where the archived value is -2.569e8. Take it from the potential instead, as surface_field.py does. That is stable to five figures across meshes.

The code

scratch/cfrac_fem_pred_2026-10-28/ in the analysis repository (github.com/vs19g/ANASEN-Analysis_private, branch devel_vignesh). run_all.sh reruns everything; collect_slices.py and map_function.py read the VTUs here. The CSVs in this directory are their output, so the numbers can be read without re-solving.