matterviz 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/EmptyState.svelte +10 -2
- package/dist/FilePicker.svelte +154 -96
- package/dist/Icon.svelte +20 -14
- package/dist/MillerIndexInput.svelte +27 -21
- package/dist/api/optimade.js +6 -6
- package/dist/app.css +216 -178
- package/dist/brillouin/BrillouinZone.svelte +299 -198
- package/dist/brillouin/BrillouinZone.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneControls.svelte +32 -5
- package/dist/brillouin/BrillouinZoneExportPane.svelte +74 -55
- package/dist/brillouin/BrillouinZoneExportPane.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneInfoPane.svelte +99 -68
- package/dist/brillouin/BrillouinZoneScene.svelte +277 -165
- package/dist/brillouin/BrillouinZoneScene.svelte.d.ts +1 -1
- package/dist/brillouin/BrillouinZoneTooltip.svelte +17 -7
- package/dist/brillouin/compute.js +11 -6
- package/dist/chempot-diagram/ChemPotDiagram.svelte +327 -0
- package/dist/chempot-diagram/ChemPotDiagram.svelte.d.ts +13 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte +847 -0
- package/dist/chempot-diagram/ChemPotDiagram2D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte +3194 -0
- package/dist/chempot-diagram/ChemPotDiagram3D.svelte.d.ts +16 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte +11 -0
- package/dist/chempot-diagram/ChemPotScene3D.svelte.d.ts +7 -0
- package/dist/chempot-diagram/async-compute.svelte.d.ts +3 -0
- package/dist/chempot-diagram/async-compute.svelte.js +77 -0
- package/dist/chempot-diagram/chempot-worker.d.ts +1 -0
- package/dist/chempot-diagram/chempot-worker.js +11 -0
- package/dist/chempot-diagram/color.d.ts +10 -0
- package/dist/chempot-diagram/color.js +32 -0
- package/dist/chempot-diagram/compute.d.ts +48 -0
- package/dist/chempot-diagram/compute.js +812 -0
- package/dist/chempot-diagram/index.d.ts +6 -0
- package/dist/chempot-diagram/index.js +6 -0
- package/dist/chempot-diagram/pointer.d.ts +16 -0
- package/dist/chempot-diagram/pointer.js +40 -0
- package/dist/chempot-diagram/temperature.d.ts +15 -0
- package/dist/chempot-diagram/temperature.js +36 -0
- package/dist/chempot-diagram/types.d.ts +86 -0
- package/dist/chempot-diagram/types.js +28 -0
- package/dist/colors/index.d.ts +3 -1
- package/dist/colors/index.js +9 -3
- package/dist/composition/BarChart.svelte +141 -77
- package/dist/composition/BubbleChart.svelte +107 -52
- package/dist/composition/Composition.svelte +100 -79
- package/dist/composition/Formula.svelte +108 -62
- package/dist/composition/FormulaFilter.svelte +973 -353
- package/dist/composition/FormulaFilter.svelte.d.ts +35 -1
- package/dist/composition/PieChart.svelte +199 -99
- package/dist/composition/PieChart.svelte.d.ts +1 -1
- package/dist/composition/format.d.ts +5 -0
- package/dist/composition/format.js +20 -3
- package/dist/composition/parse.js +14 -9
- package/dist/convex-hull/ConvexHull.svelte +93 -38
- package/dist/convex-hull/ConvexHull2D.svelte +551 -393
- package/dist/convex-hull/ConvexHull3D.svelte +1303 -825
- package/dist/convex-hull/ConvexHull4D.svelte +1012 -686
- package/dist/convex-hull/ConvexHullControls.svelte +115 -28
- package/dist/convex-hull/ConvexHullInfoPane.svelte +29 -3
- package/dist/convex-hull/ConvexHullStats.svelte +821 -249
- package/dist/convex-hull/ConvexHullStats.svelte.d.ts +6 -1
- package/dist/convex-hull/ConvexHullTooltip.svelte +41 -16
- package/dist/convex-hull/GasPressureControls.svelte +104 -61
- package/dist/convex-hull/StructurePopup.svelte +25 -4
- package/dist/convex-hull/TemperatureSlider.svelte +45 -25
- package/dist/convex-hull/barycentric-coords.js +13 -7
- package/dist/convex-hull/demo-temperature.d.ts +6 -0
- package/dist/convex-hull/demo-temperature.js +40 -0
- package/dist/convex-hull/gas-thermodynamics.js +17 -12
- package/dist/convex-hull/helpers.d.ts +10 -1
- package/dist/convex-hull/helpers.js +79 -38
- package/dist/convex-hull/index.d.ts +1 -0
- package/dist/convex-hull/index.js +1 -0
- package/dist/convex-hull/thermodynamics.d.ts +8 -21
- package/dist/convex-hull/thermodynamics.js +163 -69
- package/dist/convex-hull/types.d.ts +12 -12
- package/dist/convex-hull/types.js +0 -12
- package/dist/coordination/CoordinationBarPlot.svelte +232 -176
- package/dist/element/BohrAtom.svelte +56 -13
- package/dist/element/ElementHeading.svelte +7 -2
- package/dist/element/ElementPhoto.svelte +15 -9
- package/dist/element/ElementStats.svelte +10 -4
- package/dist/element/ElementTile.svelte +137 -73
- package/dist/element/Nucleus.svelte +39 -11
- package/dist/element/data.js +2 -14
- package/dist/element/data.json.gz +0 -0
- package/dist/element/types.d.ts +1 -0
- package/dist/feedback/ClickFeedback.svelte +16 -5
- package/dist/feedback/DragOverlay.svelte +10 -2
- package/dist/feedback/Spinner.svelte +4 -2
- package/dist/feedback/StatusMessage.svelte +8 -2
- package/dist/fermi-surface/FermiSlice.svelte +118 -88
- package/dist/fermi-surface/FermiSurface.svelte +336 -239
- package/dist/fermi-surface/FermiSurface.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceControls.svelte +113 -46
- package/dist/fermi-surface/FermiSurfaceScene.svelte +536 -343
- package/dist/fermi-surface/FermiSurfaceScene.svelte.d.ts +1 -1
- package/dist/fermi-surface/FermiSurfaceTooltip.svelte +14 -5
- package/dist/fermi-surface/compute.js +16 -20
- package/dist/fermi-surface/parse.js +37 -33
- package/dist/fermi-surface/symmetry.js +2 -7
- package/dist/fermi-surface/types.d.ts +3 -5
- package/dist/heatmap-matrix/HeatmapMatrix.svelte +1527 -0
- package/dist/heatmap-matrix/HeatmapMatrix.svelte.d.ts +110 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte +225 -0
- package/dist/heatmap-matrix/HeatmapMatrixControls.svelte.d.ts +30 -0
- package/dist/heatmap-matrix/index.d.ts +53 -0
- package/dist/heatmap-matrix/index.js +100 -0
- package/dist/heatmap-matrix/shared.d.ts +2 -0
- package/dist/heatmap-matrix/shared.js +4 -0
- package/dist/icons.d.ts +111 -0
- package/dist/icons.js +158 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.js +5 -2
- package/dist/io/decompress.js +1 -1
- package/dist/io/export.d.ts +3 -0
- package/dist/io/export.js +138 -140
- package/dist/io/file-drop.d.ts +7 -0
- package/dist/io/file-drop.js +43 -0
- package/dist/io/index.d.ts +2 -2
- package/dist/io/index.js +2 -112
- package/dist/io/is-binary.js +2 -3
- package/dist/io/types.d.ts +1 -0
- package/dist/io/url-drop.d.ts +2 -0
- package/dist/io/url-drop.js +117 -0
- package/dist/isosurface/Isosurface.svelte +220 -110
- package/dist/isosurface/IsosurfaceControls.svelte +65 -28
- package/dist/isosurface/parse.js +104 -56
- package/dist/isosurface/slice.d.ts +2 -1
- package/dist/isosurface/slice.js +8 -13
- package/dist/isosurface/types.d.ts +14 -1
- package/dist/isosurface/types.js +152 -5
- package/dist/labels.d.ts +2 -1
- package/dist/labels.js +12 -8
- package/dist/layout/FullscreenToggle.svelte +11 -2
- package/dist/layout/InfoCard.svelte +38 -6
- package/dist/layout/InfoTag.svelte +125 -94
- package/dist/layout/PropertyFilter.svelte +82 -37
- package/dist/layout/SettingsSection.svelte +85 -55
- package/dist/layout/SubpageGrid.svelte +82 -0
- package/dist/layout/SubpageGrid.svelte.d.ts +14 -0
- package/dist/layout/index.d.ts +1 -0
- package/dist/layout/index.js +1 -0
- package/dist/layout/json-tree/JsonNode.svelte +266 -223
- package/dist/layout/json-tree/JsonTree.svelte +516 -429
- package/dist/layout/json-tree/JsonTree.svelte.d.ts +1 -1
- package/dist/layout/json-tree/JsonValue.svelte +281 -173
- package/dist/layout/json-tree/types.d.ts +10 -2
- package/dist/layout/json-tree/utils.d.ts +2 -0
- package/dist/layout/json-tree/utils.js +37 -2
- package/dist/marching-cubes.js +25 -2
- package/dist/math.d.ts +20 -17
- package/dist/math.js +474 -57
- package/dist/overlays/ContextMenu.svelte +66 -40
- package/dist/overlays/DraggablePane.svelte +331 -154
- package/dist/overlays/DraggablePane.svelte.d.ts +2 -0
- package/dist/periodic-table/PeriodicTable.svelte +278 -145
- package/dist/periodic-table/PeriodicTableControls.svelte +178 -128
- package/dist/periodic-table/PropertySelect.svelte +25 -7
- package/dist/periodic-table/TableInset.svelte +8 -3
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte +559 -267
- package/dist/phase-diagram/IsobaricBinaryPhaseDiagram.svelte.d.ts +6 -2
- package/dist/phase-diagram/PhaseDiagramControls.svelte +131 -51
- package/dist/phase-diagram/PhaseDiagramControls.svelte.d.ts +3 -2
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte +126 -0
- package/dist/phase-diagram/PhaseDiagramEditorPane.svelte.d.ts +15 -0
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte +160 -110
- package/dist/phase-diagram/PhaseDiagramExportPane.svelte.d.ts +8 -1
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte +217 -86
- package/dist/phase-diagram/PhaseDiagramTooltip.svelte.d.ts +6 -3
- package/dist/phase-diagram/TdbInfoPanel.svelte +28 -4
- package/dist/phase-diagram/build-diagram.js +9 -9
- package/dist/phase-diagram/colors.js +1 -3
- package/dist/phase-diagram/index.d.ts +2 -0
- package/dist/phase-diagram/index.js +2 -0
- package/dist/phase-diagram/parse.js +10 -9
- package/dist/phase-diagram/svg-to-diagram.d.ts +2 -0
- package/dist/phase-diagram/svg-to-diagram.js +869 -0
- package/dist/phase-diagram/types.d.ts +10 -0
- package/dist/phase-diagram/utils.d.ts +8 -4
- package/dist/phase-diagram/utils.js +219 -74
- package/dist/plot/AxisLabel.svelte +51 -0
- package/dist/plot/AxisLabel.svelte.d.ts +16 -0
- package/dist/plot/BarPlot.svelte +1461 -768
- package/dist/plot/BarPlot.svelte.d.ts +3 -3
- package/dist/plot/BarPlotControls.svelte +33 -6
- package/dist/plot/BarPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ColorBar.svelte +533 -383
- package/dist/plot/ColorBar.svelte.d.ts +1 -1
- package/dist/plot/ColorScaleSelect.svelte +28 -7
- package/dist/plot/ElementScatter.svelte +38 -16
- package/dist/plot/FillArea.svelte +152 -92
- package/dist/plot/Histogram.svelte +1162 -709
- package/dist/plot/Histogram.svelte.d.ts +1 -1
- package/dist/plot/HistogramControls.svelte +81 -18
- package/dist/plot/HistogramControls.svelte.d.ts +6 -2
- package/dist/plot/InteractiveAxisLabel.svelte +34 -11
- package/dist/plot/InteractiveAxisLabel.svelte.d.ts +1 -1
- package/dist/plot/Line.svelte +63 -28
- package/dist/plot/PlotControls.svelte +221 -96
- package/dist/plot/PlotControls.svelte.d.ts +1 -1
- package/dist/plot/PlotLegend.svelte +174 -91
- package/dist/plot/PlotTooltip.svelte +45 -6
- package/dist/plot/PortalSelect.svelte +175 -146
- package/dist/plot/ReferenceLine.svelte +77 -22
- package/dist/plot/ReferenceLine.svelte.d.ts +1 -0
- package/dist/plot/ReferenceLine3D.svelte +132 -107
- package/dist/plot/ReferencePlane.svelte +146 -123
- package/dist/plot/ScatterPlot.svelte +1880 -1156
- package/dist/plot/ScatterPlot.svelte.d.ts +3 -3
- package/dist/plot/ScatterPlot3D.svelte +256 -131
- package/dist/plot/ScatterPlot3D.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlot3DControls.svelte +300 -297
- package/dist/plot/ScatterPlot3DControls.svelte.d.ts +2 -1
- package/dist/plot/ScatterPlot3DScene.svelte +608 -406
- package/dist/plot/ScatterPlot3DScene.svelte.d.ts +2 -2
- package/dist/plot/ScatterPlotControls.svelte +150 -70
- package/dist/plot/ScatterPlotControls.svelte.d.ts +1 -1
- package/dist/plot/ScatterPoint.svelte +98 -26
- package/dist/plot/ScatterPoint.svelte.d.ts +1 -0
- package/dist/plot/SpacegroupBarPlot.svelte +142 -85
- package/dist/plot/Surface3D.svelte +159 -108
- package/dist/plot/ZeroLines.svelte +96 -0
- package/dist/plot/ZeroLines.svelte.d.ts +32 -0
- package/dist/plot/ZoomRect.svelte +23 -0
- package/dist/plot/ZoomRect.svelte.d.ts +8 -0
- package/dist/plot/axis-utils.d.ts +1 -1
- package/dist/plot/axis-utils.js +1 -3
- package/dist/plot/data-cleaning.js +12 -28
- package/dist/plot/data-transform.js +2 -1
- package/dist/plot/fill-utils.js +2 -0
- package/dist/plot/index.d.ts +6 -2
- package/dist/plot/index.js +6 -2
- package/dist/plot/interactions.d.ts +8 -10
- package/dist/plot/interactions.js +2 -3
- package/dist/plot/layout.d.ts +11 -2
- package/dist/plot/layout.js +44 -17
- package/dist/plot/reference-line.d.ts +5 -22
- package/dist/plot/reference-line.js +12 -84
- package/dist/plot/scales.js +24 -36
- package/dist/plot/types.d.ts +53 -40
- package/dist/plot/types.js +12 -7
- package/dist/plot/utils/label-placement.d.ts +32 -15
- package/dist/plot/utils/label-placement.js +227 -63
- package/dist/plot/utils/series-visibility.js +2 -3
- package/dist/plot/utils.d.ts +1 -0
- package/dist/plot/utils.js +14 -0
- package/dist/rdf/RdfPlot.svelte +173 -132
- package/dist/rdf/calc-rdf.js +4 -5
- package/dist/sanitize.d.ts +4 -0
- package/dist/sanitize.js +107 -0
- package/dist/settings.d.ts +21 -6
- package/dist/settings.js +63 -19
- package/dist/spectral/Bands.svelte +963 -412
- package/dist/spectral/Bands.svelte.d.ts +22 -2
- package/dist/spectral/BandsAndDos.svelte +90 -49
- package/dist/spectral/BrillouinBandsDos.svelte +151 -93
- package/dist/spectral/Dos.svelte +389 -258
- package/dist/spectral/helpers.d.ts +23 -1
- package/dist/spectral/helpers.js +119 -51
- package/dist/spectral/types.d.ts +2 -0
- package/dist/state.svelte.d.ts +1 -1
- package/dist/state.svelte.js +3 -2
- package/dist/structure/Arrow.svelte +59 -20
- package/dist/structure/AtomLegend.svelte +231 -129
- package/dist/structure/AtomLegend.svelte.d.ts +1 -1
- package/dist/structure/Bond.svelte +73 -47
- package/dist/structure/CanvasTooltip.svelte +10 -2
- package/dist/structure/CellSelect.svelte +148 -51
- package/dist/structure/Cylinder.svelte +33 -17
- package/dist/structure/Lattice.svelte +88 -33
- package/dist/structure/Structure.svelte +1077 -821
- package/dist/structure/Structure.svelte.d.ts +1 -1
- package/dist/structure/StructureControls.svelte +373 -139
- package/dist/structure/StructureControls.svelte.d.ts +1 -1
- package/dist/structure/StructureExportPane.svelte +124 -89
- package/dist/structure/StructureExportPane.svelte.d.ts +1 -1
- package/dist/structure/StructureInfoPane.svelte +304 -231
- package/dist/structure/StructureScene.svelte +919 -445
- package/dist/structure/StructureScene.svelte.d.ts +16 -7
- package/dist/structure/atom-properties.d.ts +6 -2
- package/dist/structure/atom-properties.js +42 -29
- package/dist/structure/bonding.js +6 -7
- package/dist/structure/export.js +22 -34
- package/dist/structure/ferrox-wasm-types.d.ts +3 -2
- package/dist/structure/ferrox-wasm-types.js +0 -3
- package/dist/structure/ferrox-wasm.d.ts +3 -2
- package/dist/structure/ferrox-wasm.js +2 -3
- package/dist/structure/index.d.ts +16 -0
- package/dist/structure/index.js +88 -6
- package/dist/structure/measure.d.ts +2 -2
- package/dist/structure/measure.js +4 -44
- package/dist/structure/parse.js +130 -155
- package/dist/structure/partial-occupancy.d.ts +25 -0
- package/dist/structure/partial-occupancy.js +99 -0
- package/dist/structure/pbc.d.ts +1 -0
- package/dist/structure/pbc.js +16 -6
- package/dist/structure/supercell.d.ts +2 -2
- package/dist/structure/supercell.js +12 -22
- package/dist/structure/validation.js +5 -3
- package/dist/symmetry/SymmetryStats.svelte +94 -37
- package/dist/symmetry/WyckoffTable.svelte +42 -14
- package/dist/symmetry/cell-transform.js +5 -3
- package/dist/symmetry/index.d.ts +7 -4
- package/dist/symmetry/index.js +87 -21
- package/dist/symmetry/spacegroups.js +148 -148
- package/dist/table/HeatmapTable.svelte +1112 -516
- package/dist/table/HeatmapTable.svelte.d.ts +12 -1
- package/dist/table/ToggleMenu.svelte +125 -90
- package/dist/table/index.d.ts +2 -0
- package/dist/table/index.js +2 -4
- package/dist/theme/ThemeControl.svelte +21 -12
- package/dist/time.js +4 -1
- package/dist/tooltip/TooltipContent.svelte +33 -8
- package/dist/trajectory/Trajectory.svelte +889 -687
- package/dist/trajectory/TrajectoryError.svelte +14 -3
- package/dist/trajectory/TrajectoryExportPane.svelte +148 -90
- package/dist/trajectory/TrajectoryExportPane.svelte.d.ts +1 -1
- package/dist/trajectory/TrajectoryInfoPane.svelte +272 -143
- package/dist/trajectory/constants.d.ts +6 -0
- package/dist/trajectory/constants.js +7 -0
- package/dist/trajectory/extract.js +13 -31
- package/dist/trajectory/format-detect.d.ts +9 -0
- package/dist/trajectory/format-detect.js +76 -0
- package/dist/trajectory/frame-reader.d.ts +17 -0
- package/dist/trajectory/frame-reader.js +332 -0
- package/dist/trajectory/helpers.d.ts +14 -0
- package/dist/trajectory/helpers.js +172 -0
- package/dist/trajectory/index.d.ts +1 -0
- package/dist/trajectory/index.js +23 -14
- package/dist/trajectory/parse/ase.d.ts +2 -0
- package/dist/trajectory/parse/ase.js +77 -0
- package/dist/trajectory/parse/hdf5.d.ts +2 -0
- package/dist/trajectory/parse/hdf5.js +129 -0
- package/dist/trajectory/parse/index.d.ts +12 -0
- package/dist/trajectory/parse/index.js +299 -0
- package/dist/trajectory/parse/lammps.d.ts +5 -0
- package/dist/trajectory/parse/lammps.js +179 -0
- package/dist/trajectory/parse/vasp.d.ts +2 -0
- package/dist/trajectory/parse/vasp.js +68 -0
- package/dist/trajectory/parse/xyz.d.ts +2 -0
- package/dist/trajectory/parse/xyz.js +110 -0
- package/dist/trajectory/plotting.js +13 -8
- package/dist/trajectory/types.d.ts +11 -0
- package/dist/trajectory/types.js +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.js +17 -0
- package/dist/xrd/XrdPlot.svelte +337 -245
- package/dist/xrd/broadening.js +14 -9
- package/dist/xrd/calc-xrd.js +12 -19
- package/dist/xrd/parse.d.ts +1 -1
- package/dist/xrd/parse.js +17 -17
- package/package.json +103 -101
- package/readme.md +4 -4
- package/dist/trajectory/parse.d.ts +0 -42
- package/dist/trajectory/parse.js +0 -1267
- /package/dist/element/{data.json.d.ts → data.json.gz.d.ts} +0 -0
- /package/dist/theme/{themes.js → themes.mjs} +0 -0
|
@@ -45,6 +45,6 @@ type $$ComponentProps = {
|
|
|
45
45
|
camera?: Camera;
|
|
46
46
|
hover_data?: FermiHoverData | null;
|
|
47
47
|
};
|
|
48
|
-
declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "camera_position" | "camera_projection" | "
|
|
48
|
+
declare const FermiSurfaceScene: import("svelte").Component<$$ComponentProps, {}, "camera_position" | "camera_projection" | "camera" | "scene" | "camera_is_moving" | "surface_opacity" | "bz_data" | "hover_data" | "fermi_data">;
|
|
49
49
|
type FermiSurfaceScene = ReturnType<typeof FermiSurfaceScene>;
|
|
50
50
|
export default FermiSurfaceScene;
|
|
@@ -1,8 +1,17 @@
|
|
|
1
|
-
<script lang="ts"
|
|
2
|
-
//
|
|
3
|
-
|
|
4
|
-
import {
|
|
5
|
-
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Tooltip component for Fermi surface hover information
|
|
3
|
+
// Displays band index, spin, k-coordinates, and optional property values
|
|
4
|
+
import { format_num, format_vec3 } from '../labels'
|
|
5
|
+
import { TooltipContent } from '../tooltip'
|
|
6
|
+
import type { FermiHoverData, FermiTooltipProp } from './types'
|
|
7
|
+
|
|
8
|
+
let {
|
|
9
|
+
hover_data,
|
|
10
|
+
tooltip,
|
|
11
|
+
}: {
|
|
12
|
+
hover_data: FermiHoverData
|
|
13
|
+
tooltip?: FermiTooltipProp
|
|
14
|
+
} = $props()
|
|
6
15
|
</script>
|
|
7
16
|
|
|
8
17
|
<TooltipContent data={hover_data} snippet_arg={{ hover_data }} {tooltip}>
|
|
@@ -42,8 +42,9 @@ function tricubic_interpolate(grid, fx, fy, fz, nx, ny, nz) {
|
|
|
42
42
|
for (let yi = 0; yi < 4; yi++) {
|
|
43
43
|
const col = row[wy[yi]];
|
|
44
44
|
// Inline z interpolation
|
|
45
|
-
y_sum +=
|
|
46
|
-
|
|
45
|
+
y_sum +=
|
|
46
|
+
cy[yi] *
|
|
47
|
+
(cz[0] * col[wz[0]] + cz[1] * col[wz[1]] + cz[2] * col[wz[2]] + cz[3] * col[wz[3]]);
|
|
47
48
|
}
|
|
48
49
|
result += cx[xi] * y_sum;
|
|
49
50
|
}
|
|
@@ -95,9 +96,7 @@ export function extract_fermi_surface(band_data, options = {}) {
|
|
|
95
96
|
let total_area = 0;
|
|
96
97
|
// Process each spin channel and band
|
|
97
98
|
for (let spin_idx = 0; spin_idx < band_data.n_spins; spin_idx++) {
|
|
98
|
-
const spin = band_data.n_spins === 2
|
|
99
|
-
? (spin_idx === 0 ? `up` : `down`)
|
|
100
|
-
: null;
|
|
99
|
+
const spin = band_data.n_spins === 2 ? (spin_idx === 0 ? `up` : `down`) : null;
|
|
101
100
|
// Skip if spin not selected
|
|
102
101
|
if (selected_spins && !selected_spins.includes(spin))
|
|
103
102
|
continue;
|
|
@@ -138,8 +137,8 @@ export function extract_fermi_surface(band_data, options = {}) {
|
|
|
138
137
|
// Compute Fermi velocities if requested
|
|
139
138
|
if (compute_velocities && band_data.velocities) {
|
|
140
139
|
isosurface.properties = compute_fermi_velocities(isosurface, band_data.velocities[spin_idx][band_idx], band_data.k_lattice, band_data.k_grid);
|
|
141
|
-
isosurface.avg_velocity =
|
|
142
|
-
isosurface.properties.length;
|
|
140
|
+
isosurface.avg_velocity =
|
|
141
|
+
isosurface.properties.reduce((s, v) => s + v, 0) / isosurface.properties.length;
|
|
143
142
|
}
|
|
144
143
|
// Compute dimensionality if requested
|
|
145
144
|
if (compute_dimensionality) {
|
|
@@ -309,7 +308,7 @@ function analyze_surface_topology(surface, bz_data) {
|
|
|
309
308
|
}
|
|
310
309
|
// Compute 2D Fermi slice along a specified plane
|
|
311
310
|
export function compute_fermi_slice(fermi_data, options = {}) {
|
|
312
|
-
const { miller_indices = [0, 0, 1], distance = 0
|
|
311
|
+
const { miller_indices = [0, 0, 1], distance = 0 } = options;
|
|
313
312
|
// Validate miller indices are not all zero
|
|
314
313
|
if (miller_indices[0] === 0 && miller_indices[1] === 0 && miller_indices[2] === 0) {
|
|
315
314
|
throw new Error(`Invalid miller indices [0, 0, 0]: at least one index must be non-zero to define a plane`);
|
|
@@ -336,7 +335,7 @@ export function compute_fermi_slice(fermi_data, options = {}) {
|
|
|
336
335
|
k_lattice_2d: [in_plane_u, in_plane_v],
|
|
337
336
|
metadata: {
|
|
338
337
|
n_lines: isolines.length,
|
|
339
|
-
has_properties: isolines.some((
|
|
338
|
+
has_properties: isolines.some((line) => line.properties !== undefined),
|
|
340
339
|
},
|
|
341
340
|
};
|
|
342
341
|
}
|
|
@@ -359,8 +358,9 @@ function compute_edge_intersection(surface, vertex_distances, v0_idx, v1_idx) {
|
|
|
359
358
|
];
|
|
360
359
|
let property;
|
|
361
360
|
if (surface.properties) {
|
|
362
|
-
property =
|
|
363
|
-
|
|
361
|
+
property =
|
|
362
|
+
surface.properties[v0_idx] +
|
|
363
|
+
t * (surface.properties[v1_idx] - surface.properties[v0_idx]);
|
|
364
364
|
}
|
|
365
365
|
return { point, property };
|
|
366
366
|
}
|
|
@@ -397,10 +397,7 @@ function slice_surface_with_plane(surface, plane_normal, plane_distance, in_plan
|
|
|
397
397
|
face_segments.push({
|
|
398
398
|
face_idx,
|
|
399
399
|
edge_keys: [crossing_edges[0].edge_key, crossing_edges[1].edge_key],
|
|
400
|
-
points: [
|
|
401
|
-
crossing_edges[0].intersection.point,
|
|
402
|
-
crossing_edges[1].intersection.point,
|
|
403
|
-
],
|
|
400
|
+
points: [crossing_edges[0].intersection.point, crossing_edges[1].intersection.point],
|
|
404
401
|
properties: surface.properties
|
|
405
402
|
? [
|
|
406
403
|
crossing_edges[0].intersection.property ?? 0,
|
|
@@ -487,8 +484,7 @@ function slice_surface_with_plane(surface, plane_normal, plane_distance, in_plan
|
|
|
487
484
|
start_segment.points[0],
|
|
488
485
|
...forward_points,
|
|
489
486
|
];
|
|
490
|
-
const contour_props = backward_props && forward_props &&
|
|
491
|
-
start_segment.properties
|
|
487
|
+
const contour_props = backward_props && forward_props && start_segment.properties
|
|
492
488
|
? [...backward_props, start_segment.properties[0], ...forward_props]
|
|
493
489
|
: undefined;
|
|
494
490
|
// Check if contour is closed
|
|
@@ -498,10 +494,10 @@ function slice_surface_with_plane(surface, plane_normal, plane_distance, in_plan
|
|
|
498
494
|
// Project to 2D (inlined dot product for speed)
|
|
499
495
|
const points_2d = new Array(contour_points.length);
|
|
500
496
|
for (let idx = 0; idx < contour_points.length; idx++) {
|
|
501
|
-
const
|
|
497
|
+
const point = contour_points[idx];
|
|
502
498
|
points_2d[idx] = [
|
|
503
|
-
|
|
504
|
-
|
|
499
|
+
point[0] * ux + point[1] * uy + point[2] * uz,
|
|
500
|
+
point[0] * vx + point[1] * vy + point[2] * vz,
|
|
505
501
|
];
|
|
506
502
|
}
|
|
507
503
|
isolines.push({
|
|
@@ -1,24 +1,13 @@
|
|
|
1
1
|
import * as constants from './constants';
|
|
2
2
|
import { compute_vertex_normals } from './marching-cubes';
|
|
3
|
+
const parse_number_tokens = (line) => line.split(/\s+/).filter(Boolean);
|
|
3
4
|
// Parse whitespace-separated floats from a line (optimized with unary +)
|
|
4
5
|
function parse_floats(line) {
|
|
5
|
-
|
|
6
|
-
const result = [];
|
|
7
|
-
for (let idx = 0; idx < parts.length; idx++) {
|
|
8
|
-
if (parts[idx])
|
|
9
|
-
result.push(+parts[idx]);
|
|
10
|
-
}
|
|
11
|
-
return result;
|
|
6
|
+
return parse_number_tokens(line).map((part) => +part);
|
|
12
7
|
}
|
|
13
8
|
// Parse whitespace-separated integers from a line
|
|
14
9
|
function parse_ints(line) {
|
|
15
|
-
|
|
16
|
-
const result = [];
|
|
17
|
-
for (let idx = 0; idx < parts.length; idx++) {
|
|
18
|
-
if (parts[idx])
|
|
19
|
-
result.push(parseInt(parts[idx], 10));
|
|
20
|
-
}
|
|
21
|
-
return result;
|
|
10
|
+
return parse_number_tokens(line).map((part) => parseInt(part, 10));
|
|
22
11
|
}
|
|
23
12
|
// Parse BXSF (Band-XSF) format used by XCrySDen, Quantum ESPRESSO, etc.
|
|
24
13
|
// Format specification: http://www.xcrysden.org/doc/XSF.html
|
|
@@ -127,7 +116,7 @@ function parse_bxsf(content) {
|
|
|
127
116
|
const lower = line.toLowerCase();
|
|
128
117
|
if (lower.includes(`fermi`) && lower.includes(`energy`)) {
|
|
129
118
|
// Match patterns like "Fermi Energy = 5.123" or "fermi_energy: -0.5"
|
|
130
|
-
const match =
|
|
119
|
+
const match = /(?:=|:)\s*([-+]?\d*\.?\d+(?:[eE][-+]?\d+)?)/i.exec(line);
|
|
131
120
|
if (match) {
|
|
132
121
|
fermi_energy = parseFloat(match[1]);
|
|
133
122
|
break;
|
|
@@ -147,7 +136,10 @@ function parse_bxsf(content) {
|
|
|
147
136
|
// Parse FRMSF format used by FermiSurfer
|
|
148
137
|
// Format: https://mitsuaki1987.github.io/fermisurfer/en/_build/html/ops.html
|
|
149
138
|
function parse_frmsf(content) {
|
|
150
|
-
const lines = content
|
|
139
|
+
const lines = content
|
|
140
|
+
.split(/\r?\n/)
|
|
141
|
+
.map((line) => line.trim())
|
|
142
|
+
.filter(Boolean);
|
|
151
143
|
let line_idx = 0;
|
|
152
144
|
// Line 1: grid dimensions (ng[0] ng[1] ng[2])
|
|
153
145
|
const grid_dims = parse_ints(lines[line_idx++]);
|
|
@@ -173,9 +165,15 @@ function parse_frmsf(content) {
|
|
|
173
165
|
// Lines 4-6: reciprocal lattice vectors (in Bohr^-1, convert to Å^-1)
|
|
174
166
|
const inv_bohr = 1 / constants.BOHR_TO_ANGSTROM;
|
|
175
167
|
const k_lattice = [
|
|
176
|
-
parse_floats(lines[line_idx++])
|
|
177
|
-
|
|
178
|
-
|
|
168
|
+
parse_floats(lines[line_idx++])
|
|
169
|
+
.slice(0, 3)
|
|
170
|
+
.map((val) => val * inv_bohr),
|
|
171
|
+
parse_floats(lines[line_idx++])
|
|
172
|
+
.slice(0, 3)
|
|
173
|
+
.map((val) => val * inv_bohr),
|
|
174
|
+
parse_floats(lines[line_idx++])
|
|
175
|
+
.slice(0, 3)
|
|
176
|
+
.map((val) => val * inv_bohr),
|
|
179
177
|
];
|
|
180
178
|
const [nx, ny, nz] = k_grid;
|
|
181
179
|
const total_points = nx * ny * nz;
|
|
@@ -231,18 +229,21 @@ function parse_frmsf(content) {
|
|
|
231
229
|
function is_valid_isosurface(obj) {
|
|
232
230
|
if (!obj || typeof obj !== `object`)
|
|
233
231
|
return false;
|
|
234
|
-
const
|
|
235
|
-
|
|
236
|
-
|
|
232
|
+
const isosurface_obj = obj;
|
|
233
|
+
const vertices = isosurface_obj.vertices;
|
|
234
|
+
const faces = isosurface_obj.faces;
|
|
235
|
+
const normals = isosurface_obj.normals;
|
|
236
|
+
const band_index = isosurface_obj.band_index;
|
|
237
|
+
const spin = isosurface_obj.spin;
|
|
238
|
+
if (!Array.isArray(vertices) || vertices.length === 0)
|
|
237
239
|
return false;
|
|
238
|
-
if (!Array.isArray(
|
|
240
|
+
if (!Array.isArray(faces))
|
|
239
241
|
return false;
|
|
240
|
-
if (!Array.isArray(
|
|
242
|
+
if (!Array.isArray(normals))
|
|
241
243
|
return false;
|
|
242
|
-
|
|
243
|
-
if (typeof iso.band_index !== `number`)
|
|
244
|
+
if (typeof band_index !== `number` || !Number.isFinite(band_index))
|
|
244
245
|
return false;
|
|
245
|
-
if (
|
|
246
|
+
if (spin !== null && spin !== `up` && spin !== `down`)
|
|
246
247
|
return false;
|
|
247
248
|
return true;
|
|
248
249
|
}
|
|
@@ -282,7 +283,8 @@ function parse_fermi_json(content) {
|
|
|
282
283
|
throw new Error(`Invalid FermiSurfaceData JSON: isosurfaces array present but missing required fields`);
|
|
283
284
|
}
|
|
284
285
|
// Check if it's IFermi format (isosurfaces is an object keyed by band index)
|
|
285
|
-
if (data[`@class`] === `FermiSurface` &&
|
|
286
|
+
if (data[`@class`] === `FermiSurface` &&
|
|
287
|
+
data.isosurfaces &&
|
|
286
288
|
typeof data.isosurfaces === `object`) {
|
|
287
289
|
return parse_ifermi_surface(data);
|
|
288
290
|
}
|
|
@@ -328,7 +330,11 @@ function parse_ifermi_surface(data) {
|
|
|
328
330
|
// Extract reciprocal lattice
|
|
329
331
|
const k_lattice = reciprocal_space?.reciprocal_lattice
|
|
330
332
|
? reciprocal_space.reciprocal_lattice
|
|
331
|
-
: [
|
|
333
|
+
: [
|
|
334
|
+
[1, 0, 0],
|
|
335
|
+
[0, 1, 0],
|
|
336
|
+
[0, 0, 1],
|
|
337
|
+
];
|
|
332
338
|
// Convert IFermi isosurfaces to our format
|
|
333
339
|
const isosurfaces = [];
|
|
334
340
|
const band_indices = new Set();
|
|
@@ -456,8 +462,7 @@ export function parse_fermi_file(content, filename) {
|
|
|
456
462
|
// Try auto-detection based on content
|
|
457
463
|
const trimmed = content.trim();
|
|
458
464
|
// BXSF format detection
|
|
459
|
-
if (trimmed.includes(`BEGIN_BLOCK_BANDGRID_3D`) ||
|
|
460
|
-
trimmed.includes(`BEGIN_BANDGRID_3D`)) {
|
|
465
|
+
if (trimmed.includes(`BEGIN_BLOCK_BANDGRID_3D`) || trimmed.includes(`BEGIN_BANDGRID_3D`)) {
|
|
461
466
|
try {
|
|
462
467
|
return parse_bxsf(content);
|
|
463
468
|
}
|
|
@@ -477,8 +482,7 @@ export function parse_fermi_file(content, filename) {
|
|
|
477
482
|
// FRMSF format detection (starts with grid dimensions)
|
|
478
483
|
const first_line = trimmed.split(/\r?\n/)[0];
|
|
479
484
|
const first_tokens = first_line.split(/\s+/).filter(Boolean);
|
|
480
|
-
if (first_tokens.length === 3 &&
|
|
481
|
-
first_tokens.every((t) => /^\d+$/.test(t))) {
|
|
485
|
+
if (first_tokens.length === 3 && first_tokens.every((t) => /^\d+$/.test(t))) {
|
|
482
486
|
try {
|
|
483
487
|
return parse_frmsf(content);
|
|
484
488
|
}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
// Identity 4x4 matrix (column-major for Three.js)
|
|
2
|
-
//
|
|
3
|
-
export const IDENTITY_4x4 = [
|
|
4
|
-
1, 0, 0, 0,
|
|
5
|
-
0, 1, 0, 0,
|
|
6
|
-
0, 0, 1, 0,
|
|
7
|
-
0, 0, 0, 1,
|
|
8
|
-
];
|
|
2
|
+
// oxfmt-ignore
|
|
3
|
+
export const IDENTITY_4x4 = [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
|
|
9
4
|
// All permutations of (0, 1, 2) for axis swaps
|
|
10
5
|
const AXIS_PERMUTATIONS = [
|
|
11
6
|
[0, 1, 2],
|
|
@@ -106,10 +106,8 @@ export interface FermiHoverData {
|
|
|
106
106
|
symmetry_index?: number;
|
|
107
107
|
}
|
|
108
108
|
export type FermiTooltipConfig = TooltipConfig<FermiHoverData>;
|
|
109
|
-
export type FermiTooltipProp = TooltipProp<FermiHoverData, [
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
]>;
|
|
109
|
+
export type FermiTooltipProp = TooltipProp<FermiHoverData, [{
|
|
110
|
+
hover_data: FermiHoverData;
|
|
111
|
+
}]>;
|
|
114
112
|
export declare const is_fermi_surface_data: (data: BandGridData | FermiSurfaceData | null) => data is FermiSurfaceData;
|
|
115
113
|
export declare const is_band_grid_data: (data: BandGridData | FermiSurfaceData | null) => data is BandGridData;
|