fiqus 2024.5.2__py3-none-any.whl → 2024.6.0__py3-none-any.whl
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.
- fiqus/MainFiQuS.py +15 -5
- fiqus/data/DataConductor.py +301 -0
- fiqus/data/DataFiQuS.py +5 -2
- fiqus/data/DataFiQuSConductor.py +84 -0
- fiqus/data/DataFiQuSConductorAC_Strand.py +565 -0
- fiqus/data/DataFiQuSPancake3D.py +149 -39
- fiqus/data/RegionsModelFiQuS.py +4 -2
- fiqus/geom_generators/GeometryCCT.py +19 -17
- fiqus/geom_generators/GeometryConductorAC_Strand.py +1391 -0
- fiqus/getdp_runners/RunGetdpConductorAC_Strand.py +202 -0
- fiqus/getdp_runners/RunGetdpMultipole.py +4 -4
- fiqus/mains/MainConductorAC_Strand.py +133 -0
- fiqus/mesh_generators/MeshCCT.py +8 -8
- fiqus/mesh_generators/MeshConductorAC_Strand.py +657 -0
- fiqus/mesh_generators/MeshMultipole.py +11 -8
- fiqus/mesh_generators/MeshPancake3D.py +20 -18
- fiqus/plotters/PlotPythonConductorAC.py +840 -0
- fiqus/post_processors/PostProcessConductorAC.py +49 -0
- fiqus/pro_assemblers/ProAssembler.py +4 -3
- fiqus/pro_templates/combined/CCT_template.pro +25 -25
- fiqus/pro_templates/combined/ConductorAC_template.pro +1025 -0
- fiqus/pro_templates/combined/Multipole_template.pro +5 -5
- fiqus/pro_templates/combined/Pancake3D_template.pro +131 -46
- fiqus/pro_templates/combined/materials.pro +13 -9
- {fiqus-2024.5.2.dist-info → fiqus-2024.6.0.dist-info}/METADATA +2 -1
- {fiqus-2024.5.2.dist-info → fiqus-2024.6.0.dist-info}/RECORD +34 -22
- {fiqus-2024.5.2.dist-info → fiqus-2024.6.0.dist-info}/WHEEL +1 -1
- tests/test_geometry_generators.py +41 -0
- tests/test_mesh_generators.py +45 -0
- tests/test_solvers.py +52 -0
- tests/utils/fiqus_test_classes.py +42 -6
- tests/utils/generate_reference_files_ConductorAC.py +57 -0
- tests/utils/generate_reference_files_Pancake3D.py +92 -0
- {fiqus-2024.5.2.dist-info → fiqus-2024.6.0.dist-info}/top_level.txt +0 -0
|
@@ -5,11 +5,11 @@ Group {
|
|
|
5
5
|
// Physical regions:
|
|
6
6
|
<<rm.air.vol.name>> = Region[ <<rm.air.vol.number>> ]; // Air
|
|
7
7
|
<<rm.air_far_field.vol.names[0]>> = Region[ <<rm.air_far_field.vol.numbers[0]>> ]; // AirInf
|
|
8
|
-
{% for name, number in zip(rm.powered.vol.names, rm.powered.vol.numbers) %}
|
|
8
|
+
{% for name, number in zip(rm.powered['Multipole'].vol.names, rm.powered['Multipole'].vol.numbers) %}
|
|
9
9
|
<<name>> = Region[ <<number>> ];
|
|
10
10
|
{% endfor %}
|
|
11
11
|
|
|
12
|
-
{% for name, number in zip(rm.induced.vol.names, rm.induced.vol.numbers) %}
|
|
12
|
+
{% for name, number in zip(rm.induced['Multipole'].vol.names, rm.induced['Multipole'].vol.numbers) %}
|
|
13
13
|
<<name>> = Region[ <<number>> ];
|
|
14
14
|
{% endfor %}
|
|
15
15
|
|
|
@@ -21,9 +21,9 @@ Group {
|
|
|
21
21
|
// Surface_bn0 = Region[ 1101 ];
|
|
22
22
|
<<rm.air_far_field.surf.name>> = Region[ <<rm.air_far_field.surf.number>> ];
|
|
23
23
|
|
|
24
|
-
<<nc.omega>><<nc.powered>> = Region[ {<<rm.powered.vol.names|join(', ')>>} ];
|
|
24
|
+
<<nc.omega>><<nc.powered>> = Region[ {<<rm.powered['Multipole'].vol.names|join(', ')>>} ];
|
|
25
25
|
<<nc.omega>><<nc.iron>> = Region[ {<<rm.iron.vol.names|join(', ')>>} ];
|
|
26
|
-
<<nc.omega>><<nc.induced>> = Region[ {<<rm.induced.vol.names|join(', ')>>} ];
|
|
26
|
+
<<nc.omega>><<nc.induced>> = Region[ {<<rm.induced['Multipole'].vol.names|join(', ')>>} ];
|
|
27
27
|
<<nc.omega>><<nc.air_far_field>> = Region[ <<rm.air_far_field.vol.names[0]>> ];
|
|
28
28
|
<<nc.omega>><<nc.conducting>> = Region[ {<<nc.omega>><<nc.powered>>, <<nc.omega>><<nc.iron>>, <<nc.omega>><<nc.induced>>} ];
|
|
29
29
|
<<nc.omega>> = Region[ {<<rm.air.vol.name>>, <<rm.air_far_field.vol.names[0]>>, <<nc.omega>><<nc.powered>>, <<nc.omega>><<nc.iron>>, <<nc.omega>><<nc.induced>>} ];
|
|
@@ -52,7 +52,7 @@ Function {
|
|
|
52
52
|
// Help "Current injected in coil [A]"];
|
|
53
53
|
|
|
54
54
|
// NbTurns = 1 ; // number of turns in the coil
|
|
55
|
-
{% for name, current in zip(rm.powered.vol.names, rm.powered.vol.currents) %}
|
|
55
|
+
{% for name, current in zip(rm.powered['Multipole'].vol.names, rm.powered['Multipole'].vol.currents) %}
|
|
56
56
|
js_fct[ <<name>> ] = <<current>>/SurfaceArea[];
|
|
57
57
|
{% endfor %}
|
|
58
58
|
//js_fct[ PowPos ] = Current/SurfaceArea[];
|
|
@@ -302,7 +302,7 @@ Integral {
|
|
|
302
302
|
// Division by area to compute Watts per meter squared
|
|
303
303
|
// SurfaceArea function does not allow DOM_*** as argument, so we need to use
|
|
304
304
|
// the actual ids
|
|
305
|
-
[
|
|
305
|
+
[ CFUN_P2vsT2_cryocooler_SHI_SRDE_418D4_T[{LOCALQUANT_T}]/SurfaceArea[]{<< rm.powered['Pancake3D'].surf_in.numbers | join(', ') >>, << rm.powered['Pancake3D'].surf_out.numbers | join(', ') >> }, {LOCALQUANT_T} ];
|
|
306
306
|
In Region[{DOM_bottomTerminalSurface, DOM_topTerminalSurface}];
|
|
307
307
|
Jacobian JAC_sur;
|
|
308
308
|
Integration Int;
|
|
@@ -444,14 +444,19 @@ EndFor
|
|
|
444
444
|
{# ================================================================================== #}
|
|
445
445
|
{# ================================================================================== #}
|
|
446
446
|
{# ================================================================================== #}
|
|
447
|
-
{% macro RESOLUTION_tolerances(
|
|
447
|
+
{% macro RESOLUTION_tolerances(systemTolerances, postOperationTolerances, type) %}
|
|
448
|
+
{% set map_quantity_to_system_name = {
|
|
449
|
+
"coupledSolutionVector": "SYSTEM_stronglyCoupled",
|
|
450
|
+
"thermalSolutionVector": "SYSTEM_thermal",
|
|
451
|
+
"electromagneticSolutionVector": "SYSTEM_electromagnetic",
|
|
452
|
+
}
|
|
453
|
+
%}
|
|
448
454
|
{% for tolerance in systemTolerances %}
|
|
449
455
|
{% if loop.first %}
|
|
450
456
|
System{
|
|
451
457
|
{% endif %}
|
|
452
|
-
{% for systemName in systemNames %}
|
|
453
458
|
{
|
|
454
|
-
<<
|
|
459
|
+
<<map_quantity_to_system_name[tolerance["quantity"]]>>,
|
|
455
460
|
<<tolerance["relative"]>>,
|
|
456
461
|
<<tolerance["absolute"]>>,
|
|
457
462
|
{% if type == "nonlinearSolver" %}
|
|
@@ -463,7 +468,6 @@ System{
|
|
|
463
468
|
// ERROR: wrong type for RESOLUTION_tolerances!
|
|
464
469
|
{% endif %}
|
|
465
470
|
}
|
|
466
|
-
{% endfor %}
|
|
467
471
|
{% if loop.last %}
|
|
468
472
|
}
|
|
469
473
|
{% endif %}
|
|
@@ -500,7 +504,6 @@ IterativeLoopN[
|
|
|
500
504
|
INPUT_NLSMaxNumOfIter,
|
|
501
505
|
INPUT_NLSRelaxFactor,
|
|
502
506
|
<<RESOLUTION_tolerances(
|
|
503
|
-
systemNames,
|
|
504
507
|
dm.magnet.solve.nls.systemTolerances,
|
|
505
508
|
dm.magnet.solve.nls.postOperationTolerances,
|
|
506
509
|
type="nonlinearSolver")|indent(4)>>
|
|
@@ -581,6 +584,11 @@ SetExtrapolationOrder[INPUT_extrapolationOrder];
|
|
|
581
584
|
{# ================================================================================== #}
|
|
582
585
|
{# ================================================================================== #}
|
|
583
586
|
{% macro RESOLUTION_SaveSolutions(systemNames, solveAfterThisTimes) %}
|
|
587
|
+
{% for quantity in dm.magnet.postproc.timeSeriesPlots %}
|
|
588
|
+
{% if quantity.quantity == "maximumTemperature" %}
|
|
589
|
+
PostOperation[POSTOP_maximumTemperature];
|
|
590
|
+
{% endif %}
|
|
591
|
+
{% endfor %}
|
|
584
592
|
{% if dm.magnet.solve.save %}
|
|
585
593
|
{% for quantity in dm.magnet.solve.save %}
|
|
586
594
|
{% if quantity.timesToBeSaved %}
|
|
@@ -667,7 +675,6 @@ TimeLoopAdaptive[
|
|
|
667
675
|
"<<dm.magnet.solve.t.adaptive.integrationMethod>>",
|
|
668
676
|
List[INPUT_tAdaptiveBreakPoints],
|
|
669
677
|
<<RESOLUTION_tolerances(
|
|
670
|
-
systemNames,
|
|
671
678
|
dm.magnet.solve.t.adaptive.systemTolerances,
|
|
672
679
|
dm.magnet.solve.t.adaptive.postOperationTolerances,
|
|
673
680
|
type="timeLoop")|indent(4)>>
|
|
@@ -712,7 +719,9 @@ TimeLoopAdaptive[
|
|
|
712
719
|
format="Default",
|
|
713
720
|
name="None",
|
|
714
721
|
fileName="None",
|
|
715
|
-
lastTimeStepOnly=False
|
|
722
|
+
lastTimeStepOnly=False,
|
|
723
|
+
appendToExistingFile=False,
|
|
724
|
+
noTitle=False) %}
|
|
716
725
|
Print[
|
|
717
726
|
<<quantity>>,
|
|
718
727
|
{% if onElementsOf != "None" %}
|
|
@@ -772,6 +781,12 @@ Print[
|
|
|
772
781
|
{% if lastTimeStepOnly == True %}
|
|
773
782
|
LastTimeStepOnly 1,
|
|
774
783
|
{% endif %}
|
|
784
|
+
{% if appendToExistingFile == True %}
|
|
785
|
+
AppendToExistingFile 1,
|
|
786
|
+
{% endif %}
|
|
787
|
+
{% if noTitle == True %}
|
|
788
|
+
NoTitle,
|
|
789
|
+
{% endif %}
|
|
775
790
|
{% if name != "None" %}
|
|
776
791
|
Name "<<name>>"
|
|
777
792
|
{% elif fileName != "None" %}
|
|
@@ -797,8 +812,8 @@ Group{
|
|
|
797
812
|
DOM_terminalContactLayerSurface_0 = Region[{ <<rm.insulator.surf.numbers[-1]>> }];
|
|
798
813
|
|
|
799
814
|
{% for i in range(1, NofSets+2) %}
|
|
800
|
-
DOM_windingMinus_<<i>> = Region[{ <<rm.powered.vol.numbers[:-2][(i-1)%NofSets]>> }];
|
|
801
|
-
DOM_windingPlus_<<i>> = Region[{ <<rm.powered.vol.numbers[:-2][(i-1+HalfNofSets)%NofSets]>> }];
|
|
815
|
+
DOM_windingMinus_<<i>> = Region[{ <<rm.powered["Pancake3D"].vol.numbers[:-2][(i-1)%NofSets]>> }];
|
|
816
|
+
DOM_windingPlus_<<i>> = Region[{ <<rm.powered["Pancake3D"].vol.numbers[:-2][(i-1+HalfNofSets)%NofSets]>> }];
|
|
802
817
|
|
|
803
818
|
DOM_allInsulationSurface_<<i>> = Region[{ <<rm.insulator.surf.numbers[(2 * (i-1))%(2 * NofSets)]>> }];
|
|
804
819
|
DOM_allInsulationSurface_<<i>> += Region[{ <<rm.insulator.surf.numbers[(2 * (i-1))%(2 * NofSets) + 1]>> }];
|
|
@@ -810,18 +825,18 @@ Group{
|
|
|
810
825
|
{% endfor %}
|
|
811
826
|
|
|
812
827
|
// Add terminals to winding region logic:
|
|
813
|
-
// <<rm.powered.vol_in.number>>: inner terminal
|
|
814
|
-
// <<rm.powered.vol_out.number>>: outer terminal
|
|
815
|
-
// <<rm.powered.vol.numbers[-2]>>: inner layer transition angle
|
|
816
|
-
// <<rm.powered.vol.numbers[-1]>>: outer layer transition angle
|
|
828
|
+
// <<rm.powered["Pancake3D"].vol_in.number>>: inner terminal
|
|
829
|
+
// <<rm.powered["Pancake3D"].vol_out.number>>: outer terminal
|
|
830
|
+
// <<rm.powered["Pancake3D"].vol.numbers[-2]>>: inner layer transition angle
|
|
831
|
+
// <<rm.powered["Pancake3D"].vol.numbers[-1]>>: outer layer transition angle
|
|
817
832
|
{% for i in range(1, NofSets+2) %}
|
|
818
|
-
DOM_windingMinus_<<i>> += Region[{ <<rm.powered.vol_in.number>> }];
|
|
819
|
-
DOM_windingMinus_<<i>> += Region[{ <<rm.powered.vol.numbers[-2]>> }];
|
|
833
|
+
DOM_windingMinus_<<i>> += Region[{ <<rm.powered["Pancake3D"].vol_in.number>> }];
|
|
834
|
+
DOM_windingMinus_<<i>> += Region[{ <<rm.powered["Pancake3D"].vol.numbers[-2]>> }];
|
|
820
835
|
{% endfor %}
|
|
821
836
|
|
|
822
837
|
{% for i in range(1, NofSets+1) %}
|
|
823
|
-
DOM_windingPlus_<<i>> += Region[{ <<rm.powered.vol_out.number>> }];
|
|
824
|
-
DOM_windingPlus_<<i>> += Region[{ <<rm.powered.vol.numbers[-1]>> }];
|
|
838
|
+
DOM_windingPlus_<<i>> += Region[{ <<rm.powered["Pancake3D"].vol_out.number>> }];
|
|
839
|
+
DOM_windingPlus_<<i>> += Region[{ <<rm.powered["Pancake3D"].vol.numbers[-1]>> }];
|
|
825
840
|
{% endfor %}
|
|
826
841
|
|
|
827
842
|
DOM_allInsulationSurface = Region[{ <<rm.insulator.surf.numbers|join(', ')>> }];
|
|
@@ -837,13 +852,13 @@ Group{
|
|
|
837
852
|
{% endif %}
|
|
838
853
|
|
|
839
854
|
// create windings region:
|
|
840
|
-
DOM_allWindings = Region[{ <<rm.powered.vol.numbers[:-2]|join(', ')>> }];
|
|
855
|
+
DOM_allWindings = Region[{ <<rm.powered["Pancake3D"].vol.numbers[:-2]|join(', ')>> }];
|
|
841
856
|
|
|
842
857
|
// create terminals region:
|
|
843
|
-
DOM_terminals = Region[{ <<rm.powered.vol_in.number>>, <<rm.powered.vol_out.number>>}];
|
|
858
|
+
DOM_terminals = Region[{ <<rm.powered["Pancake3D"].vol_in.number>>, <<rm.powered["Pancake3D"].vol_out.number>>}];
|
|
844
859
|
|
|
845
860
|
// create layer transition angle region:
|
|
846
|
-
DOM_transitionNotchVolumes = Region[{<<rm.powered.vol.numbers[-2]>>, <<rm.powered.vol.numbers[-1]>>}];
|
|
861
|
+
DOM_transitionNotchVolumes = Region[{<<rm.powered["Pancake3D"].vol.numbers[-2]>>, <<rm.powered["Pancake3D"].vol.numbers[-1]>>}];
|
|
847
862
|
|
|
848
863
|
// create powered region:
|
|
849
864
|
DOM_powered = Region[{ DOM_allWindings, DOM_terminals, DOM_transitionNotchVolumes }];
|
|
@@ -899,9 +914,9 @@ Group{
|
|
|
899
914
|
|
|
900
915
|
// boundary surface between the all conducting and non-conducting domains:
|
|
901
916
|
{% if dm.magnet.geometry.ii.tsa or dm.magnet.solve.ii.resistivity != "perfectlyInsulating" %}
|
|
902
|
-
DOM_pancakeBoundary = Region[{ <<rm.powered.surf.numbers[0]>> }];
|
|
917
|
+
DOM_pancakeBoundary = Region[{ <<rm.powered["Pancake3D"].surf.numbers[0]>> }];
|
|
903
918
|
{% else %}
|
|
904
|
-
DOM_pancakeBoundary = Region[{ <<rm.powered.surf.numbers[1]>> }];
|
|
919
|
+
DOM_pancakeBoundary = Region[{ <<rm.powered["Pancake3D"].surf.numbers[1]>> }];
|
|
905
920
|
{% endif %}
|
|
906
921
|
|
|
907
922
|
// support of magnetic scalar potential, i.e., all non-conducting doms:
|
|
@@ -921,9 +936,9 @@ Group{
|
|
|
921
936
|
DOM_total = Region[{ DOM_allConducting, DOM_Phi }];
|
|
922
937
|
|
|
923
938
|
// top and bottom surfaces of the terminals for constant temperature BC:
|
|
924
|
-
DOM_bottomTerminalSurface = Region[{ << rm.powered.surf_in.numbers | join(', ') >> }];
|
|
939
|
+
DOM_bottomTerminalSurface = Region[{ << rm.powered['Pancake3D'].surf_in.numbers | join(', ') >> }];
|
|
925
940
|
|
|
926
|
-
DOM_topTerminalSurface = Region[{ << rm.powered.surf_out.numbers | join(', ') >> }];
|
|
941
|
+
DOM_topTerminalSurface = Region[{ << rm.powered['Pancake3D'].surf_out.numbers | join(', ') >> }];
|
|
927
942
|
}
|
|
928
943
|
|
|
929
944
|
//======================================================================================
|
|
@@ -1123,7 +1138,8 @@ if (
|
|
|
1123
1138
|
"Silver": 2,
|
|
1124
1139
|
"Indium": 3,
|
|
1125
1140
|
"StainlessSteel": 4,
|
|
1126
|
-
"HTSSuperPower": 5
|
|
1141
|
+
"HTSSuperPower": 5,
|
|
1142
|
+
"HTSFujikura": 6,
|
|
1127
1143
|
} %}
|
|
1128
1144
|
rhoWindingAndDerivative[] = WindingWithSuperConductorRhoAndDerivativeV1[
|
|
1129
1145
|
$Time,
|
|
@@ -1131,7 +1147,9 @@ if (
|
|
|
1131
1147
|
$3,
|
|
1132
1148
|
$2,
|
|
1133
1149
|
$1
|
|
1134
|
-
]{
|
|
1150
|
+
]{ <<dm.magnet.solve.wi.superConductor.IcReferenceTemperature>>,
|
|
1151
|
+
<<dm.magnet.solve.wi.superConductor.IcReferenceBmagnitude>>,
|
|
1152
|
+
<<dm.magnet.solve.wi.superConductor.IcReferenceBangle>>,
|
|
1135
1153
|
<<numberOfIcValues>>, // N of Ic Values
|
|
1136
1154
|
{% for lengthValue in listOfLengthValues %}
|
|
1137
1155
|
<<lengthValue>>,
|
|
@@ -1156,10 +1174,10 @@ if (
|
|
|
1156
1174
|
<<dm.magnet.solve.wi.shuntLayer.material.relativeHeight>>,
|
|
1157
1175
|
<<dm.magnet.solve.wi.shuntLayer.material.rrr>>,
|
|
1158
1176
|
<<dm.magnet.solve.wi.shuntLayer.material.rrrRefT>>,
|
|
1159
|
-
|
|
1160
|
-
<<dm.magnet.solve.wi.relativeThicknessOfSuperConductor>>, // relative thickness of
|
|
1161
|
-
<<dm.magnet.solve.wi.superConductor.electricFieldCriterion>>, // electric field criterion of
|
|
1162
|
-
<<dm.magnet.solve.wi.superConductor.nValue>>, // n value of
|
|
1177
|
+
<<materialCodes[dm.magnet.solve.wi.superConductor.name]>>, // material integer: HTS
|
|
1178
|
+
<<dm.magnet.solve.wi.relativeThicknessOfSuperConductor>>, // relative thickness of HTS
|
|
1179
|
+
<<dm.magnet.solve.wi.superConductor.electricFieldCriterion>>, // electric field criterion of HTS
|
|
1180
|
+
<<dm.magnet.solve.wi.superConductor.nValue>>, // n value of HTS
|
|
1163
1181
|
<<dm.magnet.solve.wi.superConductor.minimumPossibleResistivity>>, // winding minimum possible resistivity (or superconductor minimum? bug)
|
|
1164
1182
|
<<dm.magnet.solve.wi.superConductor.maximumPossibleResistivity>>, // winding maximum possible resistivity (or superconductor maximum? bug)
|
|
1165
1183
|
<<dm.magnet.solve.localDefects.jCritical.startTurn if dm.magnet.solve.localDefects.jCritical is not none else "0">>, // local defect start turn
|
|
@@ -2546,11 +2564,11 @@ FunctionSpace{
|
|
|
2546
2564
|
NameOfConstraint CONSTRAINT_zeroPhiAtOuterPoint;
|
|
2547
2565
|
}
|
|
2548
2566
|
{% if dm.magnet.geometry.ii.tsa and dm.magnet.solve.ii.resistivity != "perfectlyInsulating" %}
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
|
|
2552
|
-
|
|
2553
|
-
|
|
2567
|
+
{
|
|
2568
|
+
NameOfCoef phin_bnd;
|
|
2569
|
+
EntityType NodesOf;
|
|
2570
|
+
NameOfConstraint CONSTRAINT_zeroPhiAtOuterPoint;
|
|
2571
|
+
}
|
|
2554
2572
|
{% endif %}
|
|
2555
2573
|
}
|
|
2556
2574
|
}
|
|
@@ -2939,6 +2957,17 @@ PostProcessing{
|
|
|
2939
2957
|
}
|
|
2940
2958
|
}
|
|
2941
2959
|
|
|
2960
|
+
{
|
|
2961
|
+
Name RESULT_maximumTemperature; // voltages in cuts
|
|
2962
|
+
Value{
|
|
2963
|
+
Term {
|
|
2964
|
+
Type Global;
|
|
2965
|
+
[ #999 ];
|
|
2966
|
+
In DOM_thermal;
|
|
2967
|
+
}
|
|
2968
|
+
}
|
|
2969
|
+
}
|
|
2970
|
+
|
|
2942
2971
|
{
|
|
2943
2972
|
Name RESULT_currentThroughCoil; // currents in cuts
|
|
2944
2973
|
Value{
|
|
@@ -3308,6 +3337,37 @@ PostOperation{
|
|
|
3308
3337
|
)|indent(12)>>
|
|
3309
3338
|
}
|
|
3310
3339
|
}
|
|
3340
|
+
{% if dm.magnet.solve.type in ["weaklyCoupled", "stronglyCoupled", "thermal"] %}
|
|
3341
|
+
{
|
|
3342
|
+
Name POSTOP_maximumTemperature;
|
|
3343
|
+
NameOfPostProcessing POSTPRO_<<dm.magnet.solve.type>>;
|
|
3344
|
+
Operation {
|
|
3345
|
+
Print[ RESULT_temperature,
|
|
3346
|
+
OnElementsOf DOM_thermal,
|
|
3347
|
+
StoreMaxInRegister 999,
|
|
3348
|
+
Format Table,
|
|
3349
|
+
LastTimeStepOnly 1,
|
|
3350
|
+
SendToServer "No"
|
|
3351
|
+
] ;
|
|
3352
|
+
// We can print the maximum temperature at any region that is part
|
|
3353
|
+
// of the thermal domain since the `StoreMaxInRegister` command
|
|
3354
|
+
// already searches all of the thermal region for the maximum and
|
|
3355
|
+
//populates the same value for all physical regions of the thermal
|
|
3356
|
+
// domain.
|
|
3357
|
+
// Printing in just one domain makes the parsing of the output easier.
|
|
3358
|
+
<<POSTOPERATION_printResults(
|
|
3359
|
+
quantity="RESULT_maximumTemperature",
|
|
3360
|
+
onRegion="Region[%d]" % rm.powered['Pancake3D'].vol_in.number,
|
|
3361
|
+
format="TimeTable",
|
|
3362
|
+
name="Maximum temperature [K]",
|
|
3363
|
+
appendToExistingFile=True,
|
|
3364
|
+
lastTimeStepOnly=True,
|
|
3365
|
+
fileName="maximumTemperature(TimeSeriesPlot)",
|
|
3366
|
+
noTitle=True
|
|
3367
|
+
)|indent(12)>>
|
|
3368
|
+
}
|
|
3369
|
+
}
|
|
3370
|
+
{% endif %}
|
|
3311
3371
|
{
|
|
3312
3372
|
Name POSTOP_currentThroughCoil;
|
|
3313
3373
|
NameOfPostProcessing POSTPRO_<<dm.magnet.solve.type>>;
|
|
@@ -3383,21 +3443,23 @@ PostOperation{
|
|
|
3383
3443
|
Name POSTOP_timeSeriesPlot_<<timeSeriesPlot.quantity>>;
|
|
3384
3444
|
NameOfPostProcessing POSTPRO_<<dm.magnet.solve.type>>;
|
|
3385
3445
|
Operation{
|
|
3386
|
-
{% if timeSeriesPlot.quantity
|
|
3446
|
+
{% if timeSeriesPlot.quantity == "maximumTemperature" %}
|
|
3447
|
+
|
|
3448
|
+
{% elif timeSeriesPlot.quantity in ["currentThroughCoil", "voltageBetweenTerminals"] %}
|
|
3387
3449
|
<<POSTOPERATION_printResults(
|
|
3388
3450
|
quantity=timeSeriesPlot.getdpQuantityName,
|
|
3389
3451
|
onRegion="DOM_terminalCut",
|
|
3390
3452
|
format="TimeTable",
|
|
3391
3453
|
fileName=timeSeriesPlot.fileName
|
|
3392
3454
|
)|indent(12)>>
|
|
3393
|
-
|
|
3394
|
-
|
|
3395
|
-
|
|
3396
|
-
|
|
3397
|
-
|
|
3398
|
-
|
|
3399
|
-
|
|
3400
|
-
|
|
3455
|
+
{% elif timeSeriesPlot.quantity in ["totalResistiveHeating", "magneticEnergy"] %}
|
|
3456
|
+
<<POSTOPERATION_printResults(
|
|
3457
|
+
quantity=timeSeriesPlot.getdpQuantityName,
|
|
3458
|
+
onGlobal=True,
|
|
3459
|
+
format="TimeTable",
|
|
3460
|
+
fileName=timeSeriesPlot.fileName
|
|
3461
|
+
)|indent(12)>>
|
|
3462
|
+
{% elif timeSeriesPlot.position.x is none %}
|
|
3401
3463
|
<<POSTOPERATION_printResults(
|
|
3402
3464
|
quantity=timeSeriesPlot.getdpQuantityName,
|
|
3403
3465
|
onGlobal=True,
|
|
@@ -3446,7 +3508,7 @@ PostOperation{
|
|
|
3446
3508
|
{% endif %}
|
|
3447
3509
|
// convergence criteria as postoperations:
|
|
3448
3510
|
{% for tolerance in (dm.magnet.solve.nls.postOperationTolerances + dm.magnet.solve.t.adaptive.postOperationTolerances)|unique(attribute="quantity") %}
|
|
3449
|
-
{% if tolerance.quantity
|
|
3511
|
+
{% if tolerance.quantity == "totalResistiveHeating" %}
|
|
3450
3512
|
{
|
|
3451
3513
|
Name POSTOP_CONV_totalResistiveHeating;
|
|
3452
3514
|
NameOfPostProcessing POSTPRO_<<dm.magnet.solve.type>>;
|
|
@@ -3464,6 +3526,29 @@ PostOperation{
|
|
|
3464
3526
|
Print[RESULT_<<tolerance.quantity>>, OnRegion DOM_terminalCut];
|
|
3465
3527
|
}
|
|
3466
3528
|
}
|
|
3529
|
+
{% elif tolerance.quantity == "maximumTemperature" %}
|
|
3530
|
+
{
|
|
3531
|
+
Name POSTOP_CONV_maximumTemperature;
|
|
3532
|
+
NameOfPostProcessing POSTPRO_<<dm.magnet.solve.type>>;
|
|
3533
|
+
Operation {
|
|
3534
|
+
Print[ RESULT_temperature,
|
|
3535
|
+
OnElementsOf DOM_thermal,
|
|
3536
|
+
StoreMaxInRegister 999,
|
|
3537
|
+
Format Table,
|
|
3538
|
+
LastTimeStepOnly 1,
|
|
3539
|
+
SendToServer "No"
|
|
3540
|
+
] ;
|
|
3541
|
+
|
|
3542
|
+
<<POSTOPERATION_printResults(
|
|
3543
|
+
quantity="RESULT_maximumTemperature",
|
|
3544
|
+
onRegion="DOM_thermal",
|
|
3545
|
+
format="TimeTable",
|
|
3546
|
+
name="Maximum temperature [K]",
|
|
3547
|
+
appendToExistingFile=True,
|
|
3548
|
+
lastTimeStepOnly=True,
|
|
3549
|
+
)|indent(12)>>
|
|
3550
|
+
}
|
|
3551
|
+
}
|
|
3467
3552
|
{% else %}
|
|
3468
3553
|
{
|
|
3469
3554
|
Name POSTOP_CONV_<<tolerance.quantity>>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Quench Heater Circuits:
|
|
2
|
-
{% macro MATERIAL_QuenchHeater_SSteel_t_T(
|
|
3
|
-
|
|
2
|
+
{% macro MATERIAL_QuenchHeater_SSteel_t_T(t_on="None", U_0="None", C="None", R_warm="None", w_SS="None", h_SS="None", l_SS="None", mode="None", time="$Time", T="$1") -%}
|
|
3
|
+
CFUN_QHCircuit_t_rhoSS[<<time>>, CFUN_rhoSS_T[<<T>>]]{<<t_on>>, <<U_0>>, <<C>>, <<R_warm>>, <<w_SS>>, <<h_SS>>, <<l_SS>>, <<mode>>}
|
|
4
4
|
{%- endmacro %} // mode: 1 -> Power, 2 -> Current, 3 -> Resistance
|
|
5
5
|
|
|
6
6
|
// Critical Currents:
|
|
@@ -12,24 +12,28 @@ CFUN_IcNbTi_T_a[<<T>>, <<area>>]{<<BMagnitude>>}
|
|
|
12
12
|
{%- endmacro %}
|
|
13
13
|
|
|
14
14
|
// Critical Current Densities:
|
|
15
|
-
{% macro
|
|
15
|
+
{% macro MATERIAL_CriticalCurrentDensity_NiobiumTitanium_CUDI1_T(C1="None", C2="None", Tc0="None", Bc20="None", wireDiameter="None", Cu_noCu="None", T="$1", BMagnitude="5") -%}
|
|
16
16
|
CFUN_Jc_NbTi_Cudi_fit1_T[<<T>>]{<<BMagnitude>>, <<Tc0>>, <<Bc20>>, <<C1>>, <<C2>>, <<wireDiameter>>, <<Cu_noCu>>}
|
|
17
17
|
{%- endmacro %}
|
|
18
18
|
|
|
19
|
-
{% macro
|
|
19
|
+
{% macro MATERIAL_CriticalCurrentDensity_Niobium3Tin_Summers_T(Jc0="None", Tc0="None", Bc20="None", T="$1", BMagnitude="5") -%}
|
|
20
20
|
CFUN_Jc_Nb3Sn_Summers_T[<<T>>]{<<BMagnitude>>, <<Jc0>>, <<Tc0>>, <<Bc20>>}
|
|
21
21
|
{%- endmacro %}
|
|
22
22
|
|
|
23
|
-
{% macro
|
|
23
|
+
{% macro MATERIAL_CriticalCurrentDensity_Niobium3Tin_Bordini_T(Tc0="None", Bc20="None", C0="None", alpha="None", T="$1", BMagnitude="5") -%}
|
|
24
|
+
CFUN_Jc_Bordini_T[<<T>>]{<<BMagnitude>>, <<Tc0>>, <<Bc20>>, <<C0>>, <<alpha>>}
|
|
25
|
+
{%- endmacro %}
|
|
26
|
+
|
|
27
|
+
{% macro MATERIAL_CriticalCurrentDensity_BSCCO2212_BSCCO_2212_LBNL_T(f_scaling="None", T="$1", BMagnitude="5") -%}
|
|
24
28
|
CFUN_Jc_T_B_BSCCO2212_block20T_new_T[<<T>>]{<<BMagnitude>>, <<f_scaling>>}
|
|
25
29
|
{%- endmacro %}
|
|
26
30
|
|
|
27
31
|
// Resistivities:
|
|
28
32
|
{% macro MATERIAL_Resistivity_Copper_T_B(RRR="None", rrrRefT="None", T="$1", BMagnitude="Norm[$2]") -%}
|
|
29
|
-
CFUN_rhoCu_T_B[<<T>>, <<BMagnitude>>]{<<RRR
|
|
33
|
+
CFUN_rhoCu_T_B[<<T>>, <<BMagnitude>>]{<<RRR>>}
|
|
30
34
|
{%- endmacro %}
|
|
31
35
|
{% macro MATERIAL_Resistivity_Copper_T(RRR="None", rrrRefT="None", T="$1", BMagnitude="5") -%}
|
|
32
|
-
CFUN_rhoCu_T[<<T>>]{<<BMagnitude>>, <<RRR
|
|
36
|
+
CFUN_rhoCu_T[<<T>>]{<<BMagnitude>>, <<RRR>>}
|
|
33
37
|
{%- endmacro %}
|
|
34
38
|
|
|
35
39
|
{% macro MATERIAL_Resistivity_Hastelloy_T(RRR="None", rrrRefT="None", T="$1", BMagnitude="Norm[$2]") -%}
|
|
@@ -53,11 +57,11 @@ CFUN_rhoSS_T[<<T>>]
|
|
|
53
57
|
|
|
54
58
|
// Thermal Conductivities:
|
|
55
59
|
{% macro MATERIAL_ThermalConductivity_Copper_T_B(RRR="None", rrrRefT="None", T="$1", BMagnitude="Norm[$2]") -%}
|
|
56
|
-
CFUN_kCu_T_rho0_rho[<<T>>, CFUN_rhoCu_T[<<T>>]{0, <<RRR
|
|
60
|
+
CFUN_kCu_T_rho0_rho[<<T>>, CFUN_rhoCu_T[<<T>>]{0, <<RRR>>}, CFUN_rhoCu_T_B[<<T>>, <<BMagnitude>>]{<<RRR>>}]{<<RRR>>}
|
|
57
61
|
{%- endmacro %}
|
|
58
62
|
|
|
59
63
|
{% macro MATERIAL_ThermalConductivity_Copper_T(RRR="None", rrrRefT="None", T="$1", BMagnitude="5") -%}
|
|
60
|
-
CFUN_kCu_T_rho0_rho[<<T>>, CFUN_rhoCu_T[<<T>>]{0, <<RRR
|
|
64
|
+
CFUN_kCu_T_rho0_rho[<<T>>, CFUN_rhoCu_T[<<T>>]{0, <<RRR>>}, CFUN_rhoCu_T[<<T>>]{<<BMagnitude>>, <<RRR>>}]{<<RRR>>}
|
|
61
65
|
{%- endmacro %}
|
|
62
66
|
|
|
63
67
|
{% macro MATERIAL_ThermalConductivity_Hastelloy_T(RRR="None", rrrRefT="None", T="$1", BMagnitude="Norm[$2]") -%}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: fiqus
|
|
3
|
-
Version: 2024.
|
|
3
|
+
Version: 2024.6.0
|
|
4
4
|
Summary: Source code for STEAM FiQuS tool
|
|
5
5
|
Home-page: https://gitlab.cern.ch/steam/fiqus
|
|
6
6
|
Author: STEAM Team
|
|
@@ -72,6 +72,7 @@ Source code for STEAM **FiQuS** (**Fi**nite Element **Qu**ench **S**imulator).
|
|
|
72
72
|
# Publications
|
|
73
73
|
|
|
74
74
|
- S. Atalay et al, "An open-source 3D FE quench simulation tool for no-insulation HTS pancake coils", in Superconductor Science and Technology, doi: [10.1088/1361-6668/ad3f83](https://doi.org/10.1088/1361-6668/ad3f83)
|
|
75
|
+
- J. Dular et al, "Coupled Axial and Transverse Currents Method for Finite Element Modelling of Periodic Superconductors", arXiv preprint, doi:[10.48550/arXiv.2404.09775](https://doi.org/10.48550/arXiv.2404.09775).
|
|
75
76
|
- A. Vitrano et al, "An Open-Source Finite Element Quench Simulation Tool for Superconducting Magnets," in IEEE Transactions on Applied Superconductivity, vol. 33, no. 5, pp. 1-6, Aug. 2023, Art no. 4702006, doi: [10.1109/TASC.2023.3259332](https://ieeexplore.ieee.org/abstract/document/10077402).
|
|
76
77
|
- M. Wozniak et al, "Fast Quench Propagation Conductor for Protecting Canted Cos-Theta Magnets," in IEEE Transactions on Applied Superconductivity, vol. 33, no. 5, pp. 1-5, Aug. 2023, Art no. 4701705, doi: [10.1109/TASC.2023.3247997](https://ieeexplore.ieee.org/document/10050158).
|
|
77
78
|
|
|
@@ -1,29 +1,36 @@
|
|
|
1
|
-
fiqus/MainFiQuS.py,sha256=
|
|
1
|
+
fiqus/MainFiQuS.py,sha256=iLfsYTqQ93AVT4E1b81z-cx6LsdBJBXjOhMQkt-k4dM,14343
|
|
2
2
|
fiqus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
3
|
-
fiqus/data/
|
|
3
|
+
fiqus/data/DataConductor.py,sha256=iBtmUOfz68yPqTq_5-dprigb4BgP_BCbFzSMSKoqN_c,13919
|
|
4
|
+
fiqus/data/DataFiQuS.py,sha256=-lxp98aU3f-sHdbLYlBipBVr1w6zQi0kK7pWZQM3D5Y,6599
|
|
4
5
|
fiqus/data/DataFiQuSCCT.py,sha256=j3K9ODSwOuP-tkie0o4fvkouEyDHhlX3Y2DH1zO58Eo,7287
|
|
6
|
+
fiqus/data/DataFiQuSConductor.py,sha256=uxPR3cN38Kf93EN339JegM5GCg5wBtbfzCI-qeByMAQ,2710
|
|
7
|
+
fiqus/data/DataFiQuSConductorAC_Strand.py,sha256=e1gJYudRcbWE7-cUt3avyUXgz-ZNi5xQ_U-pQr3mv-s,28186
|
|
5
8
|
fiqus/data/DataFiQuSMultipole.py,sha256=cKa4JTzYUfUcbruoyALE1tgIDTy8zYhRFJuKZnnFuhc,2403
|
|
6
|
-
fiqus/data/DataFiQuSPancake3D.py,sha256
|
|
9
|
+
fiqus/data/DataFiQuSPancake3D.py,sha256=-xW4neYKIf9_10kRM1h9Vq1GQcrTQV1ABxiHw4ZT3tk,115543
|
|
7
10
|
fiqus/data/DataMultipole.py,sha256=Ai-z_Ux2iLxZPnHvCDneeUWxeOlfQEbVa74r_Il9ym0,2304
|
|
8
11
|
fiqus/data/DataRoxieParser.py,sha256=ysQfTnJ7nUHbjwgVWLtD_k0jggyEeNCXwRpm6ghVE8E,9036
|
|
9
12
|
fiqus/data/DataWindingsCCT.py,sha256=qqqxO4VG6rsKpNEImkA1hjrUMyS4UFNfVG_ioQd4ML8,1709
|
|
10
|
-
fiqus/data/RegionsModelFiQuS.py,sha256=
|
|
13
|
+
fiqus/data/RegionsModelFiQuS.py,sha256=cOFyZNZEgE1xdvUfAvCpzBKp0dhjUORhGd6b0d1kDLY,7242
|
|
11
14
|
fiqus/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
12
|
-
fiqus/geom_generators/GeometryCCT.py,sha256=
|
|
15
|
+
fiqus/geom_generators/GeometryCCT.py,sha256=Xp-lRlYeKX1ZkrbSbmzrGCq_dFgiC4XqW8qtCw3Xadk,49972
|
|
16
|
+
fiqus/geom_generators/GeometryConductorAC_Strand.py,sha256=GDMbPuYvE4Pwxy-qPlmTSurd1p92Nk6xDjgYZuXex2Q,76016
|
|
13
17
|
fiqus/geom_generators/GeometryMultipole.py,sha256=App1thx8KZ1kGwGaIxgRhJfIbG-VrjJZmwSv3s2P9w0,24171
|
|
14
18
|
fiqus/geom_generators/GeometryPancake3D.py,sha256=KefA9iK_pYeJKOZjfIYw8klYA1ToLXnfq6WiMwypPpk,167791
|
|
15
19
|
fiqus/geom_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
20
|
fiqus/getdp_runners/RunGetdpCCT.py,sha256=EPkckG8PPrBgACKG5oHSJrsBmBYvd9yJ8BvnaTeO3l4,3012
|
|
17
|
-
fiqus/getdp_runners/
|
|
21
|
+
fiqus/getdp_runners/RunGetdpConductorAC_Strand.py,sha256=N_CZp2rua6TtJK__dv0WMHD2QlxGCigWGzRmz-EzDpU,10198
|
|
22
|
+
fiqus/getdp_runners/RunGetdpMultipole.py,sha256=6g5F1YBi0DzWWMBg0fVAIN0zbvgnIwY231NXShM_wK8,4224
|
|
18
23
|
fiqus/getdp_runners/RunGetdpPancake3D.py,sha256=9iBAKEeHOlpE9nWLf7bmpj2xMOMslBRq62ZnP-e1I7s,9744
|
|
19
24
|
fiqus/getdp_runners/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
25
|
fiqus/mains/MainCCT.py,sha256=egzRdGq-kCs-ZNIRGsBhmN7MCcF1Lp1n8r0XKBFImsA,4414
|
|
26
|
+
fiqus/mains/MainConductorAC_Strand.py,sha256=TEPft6rzq4wxOc3ljJj1AkLe9oiVccSyFiM4lrRziE0,5147
|
|
21
27
|
fiqus/mains/MainMultipole.py,sha256=2ntN2ACDIncQv-1yX5S6KlFG2nIK40-hpUxVnAogS-I,5075
|
|
22
28
|
fiqus/mains/MainPancake3D.py,sha256=nfyTW_Km39G5NqzgRpg5vjWUBpDyqIs54xkmNpyANe4,21524
|
|
23
29
|
fiqus/mains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
-
fiqus/mesh_generators/MeshCCT.py,sha256=
|
|
25
|
-
fiqus/mesh_generators/
|
|
26
|
-
fiqus/mesh_generators/
|
|
30
|
+
fiqus/mesh_generators/MeshCCT.py,sha256=j2Qj69tdFb-weQnNgv5zi6dkL3ZJxGRdzKqzjlYdIy8,11436
|
|
31
|
+
fiqus/mesh_generators/MeshConductorAC_Strand.py,sha256=PjERjIQNRNej6eTLH8bSVA94VKcRtCOAfNQyCgwVWn8,43122
|
|
32
|
+
fiqus/mesh_generators/MeshMultipole.py,sha256=hyDKt_3K_jo8pvfoA8I3gAsU4vnlfX3pie5afMkOq-A,14508
|
|
33
|
+
fiqus/mesh_generators/MeshPancake3D.py,sha256=ClWH7sX00V6-LNptmWYY1nzeSyZCvGN_RKDnpdtsenc,120973
|
|
27
34
|
fiqus/mesh_generators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
28
35
|
fiqus/parsers/ParserDAT.py,sha256=eLbpr74BDoSw6UAeP_qkM55ZLRYPdk8t-RhTXU_oHE4,675
|
|
29
36
|
fiqus/parsers/ParserGetDPOnSection.py,sha256=pTk2EqO1sitoNIztekyEtIy5xpFKou_L3KGsIjJV3R0,8408
|
|
@@ -33,35 +40,40 @@ fiqus/parsers/ParserPOS.py,sha256=hO4mLneIuSvX-Gaqeke27OLgnCfzNvg4E_9r6nFr6Wg,10
|
|
|
33
40
|
fiqus/parsers/ParserRES.py,sha256=782GouJaw0j5u1RLGag6FauSUTuKV7gKa1G4EowSKBE,5984
|
|
34
41
|
fiqus/parsers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
42
|
fiqus/plotters/PlotPythonCCT.py,sha256=YgphOuiTk0klqZh4d4u81hahtiDp-tx149EpBjyKH-Y,6333
|
|
43
|
+
fiqus/plotters/PlotPythonConductorAC.py,sha256=GA_4dtzADlB64FsonYzWXlaBwhIJ4i5wg3y1Nv5KAag,45715
|
|
36
44
|
fiqus/plotters/PlotPythonMultipole.py,sha256=SjJQKHX5mUoMW3yli97W6Kja0Hux8C16YE1U22hQRHY,481
|
|
37
45
|
fiqus/plotters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
46
|
fiqus/post_processors/PostProcessCCT.py,sha256=-lao2mxHRJNuLSqP2pdiXAIvLxdAw0e5NNEbTfhDQs0,28443
|
|
47
|
+
fiqus/post_processors/PostProcessConductorAC.py,sha256=77E9nUOZUktgX8J_g03ASVyoZIKeZPcCl1y9s-CEs2Y,2184
|
|
39
48
|
fiqus/post_processors/PostProcessMultipole.py,sha256=Jm4mbe8HUHHMbFT51PLXYM7We0Siltuw4ZclJ1A5Vus,15649
|
|
40
49
|
fiqus/post_processors/PostProcessPancake3D.py,sha256=owXLKxAZ-tZw6oW0RemjH8HJTnINZuZnAgY0x-WLVgU,13195
|
|
41
50
|
fiqus/post_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
42
51
|
fiqus/pre_processors/PreProcessCCT.py,sha256=BDRei7uLdOHxNnsg-r17HcjtvvrST8HUj_lQ1GSmVZo,9217
|
|
43
52
|
fiqus/pre_processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
-
fiqus/pro_assemblers/ProAssembler.py,sha256=
|
|
53
|
+
fiqus/pro_assemblers/ProAssembler.py,sha256=LyGpydWUJmw9hKpWsI72qyoG8y4Su2hKn3adykISMWc,2906
|
|
45
54
|
fiqus/pro_assemblers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
46
55
|
fiqus/pro_material_functions/ironBHcurves.pro,sha256=0Tz1KzZ63G_zaS6dYQ5NYwa9EAtJna0jR61OxsM9J_E,17835
|
|
47
56
|
fiqus/pro_templates/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
48
|
-
fiqus/pro_templates/combined/CCT_template.pro,sha256=
|
|
49
|
-
fiqus/pro_templates/combined/
|
|
50
|
-
fiqus/pro_templates/combined/
|
|
57
|
+
fiqus/pro_templates/combined/CCT_template.pro,sha256=8dyBKotys4kr7FyUZJFZr0CMBjEupPJ3XIPPOQwJ2Ps,13832
|
|
58
|
+
fiqus/pro_templates/combined/ConductorAC_template.pro,sha256=ocZgeGgqj49DYDbX9QUFtag9-i3dWsL2_MYkJgNN6BA,61725
|
|
59
|
+
fiqus/pro_templates/combined/Multipole_template.pro,sha256=Tuheajy32uZFyTe-OsvCyIRsDiOyYm0yoOe4LxfcSi8,8060
|
|
60
|
+
fiqus/pro_templates/combined/Pancake3D_template.pro,sha256=i0lr2hROYJVRff0S7PgJNfxxG0EHy_HrPCEbYftaKjs,150118
|
|
51
61
|
fiqus/pro_templates/combined/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
52
|
-
fiqus/pro_templates/combined/materials.pro,sha256=
|
|
62
|
+
fiqus/pro_templates/combined/materials.pro,sha256=TMqOu93KqSn0FWy6As6oTLqYChXXz-pGq6AVhweLpg8,5709
|
|
53
63
|
fiqus/pro_templates/separated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
64
|
fiqus/utils/Utils.py,sha256=di-IYXD36cArEvkki8XbStXkpmmFL8EPOjMBAsNrT7I,18489
|
|
55
65
|
fiqus/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
66
|
tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
67
|
tests/test_FiQuS.py,sha256=KN8qkXuUrkHg82rB_wsUEq_diP5mPOQpOpA0WBHMwpo,15537
|
|
58
|
-
tests/test_geometry_generators.py,sha256=
|
|
59
|
-
tests/test_mesh_generators.py,sha256=
|
|
60
|
-
tests/test_solvers.py,sha256=
|
|
68
|
+
tests/test_geometry_generators.py,sha256=GtoykfajdGMO5GQHWjFLNbaCHCKQLFOzfsiHhfJja0Q,3908
|
|
69
|
+
tests/test_mesh_generators.py,sha256=Ea0lZmTn0MeryrdQoZ1HUNpYmEFjourvH5eGK6T6szI,3988
|
|
70
|
+
tests/test_solvers.py,sha256=nJXLELUZWAiLRqVkpD2FtYXhuStKRHYvuGkztiI1AUc,6407
|
|
61
71
|
tests/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
62
|
-
tests/utils/fiqus_test_classes.py,sha256=
|
|
72
|
+
tests/utils/fiqus_test_classes.py,sha256=Il8T-Bz1WNJhOrTBFHNoRRr_QXQzzprZu9Y8SXRbLJ0,26948
|
|
73
|
+
tests/utils/generate_reference_files_ConductorAC.py,sha256=_jEE6xcqiz52bnmY6Is11QmG-bZ2vdH0k99p733t4N4,1676
|
|
74
|
+
tests/utils/generate_reference_files_Pancake3D.py,sha256=ufELeL8WMoWZFcOkVxR7w5OHCgIQ4Z3cLcXM-LtgvmM,3314
|
|
63
75
|
tests/utils/helpers.py,sha256=BQxdHr8N4rGXc2C_YNEeOXxTIDJSUeRyyxLkvWfhiJY,4149
|
|
64
|
-
fiqus-2024.
|
|
65
|
-
fiqus-2024.
|
|
66
|
-
fiqus-2024.
|
|
67
|
-
fiqus-2024.
|
|
76
|
+
fiqus-2024.6.0.dist-info/METADATA,sha256=d1e4oxzUM0oh38p7X2eVTs2bmIluQSf-Fytr8FBQBho,4914
|
|
77
|
+
fiqus-2024.6.0.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
|
|
78
|
+
fiqus-2024.6.0.dist-info/top_level.txt,sha256=oGzSIyoVc1zYg14o67zI3QFwWsJvqNzNT0-te9WbUQc,12
|
|
79
|
+
fiqus-2024.6.0.dist-info/RECORD,,
|
|
@@ -45,6 +45,47 @@ class TestGeometryGenerators(FiQuSGeometryTests):
|
|
|
45
45
|
data_model=data_model, file_name=model_name, file_extension="vi"
|
|
46
46
|
)
|
|
47
47
|
self.compare_json_or_yaml_files(vi_file, reference_vi_file)
|
|
48
|
+
|
|
49
|
+
def test_ConductorAC_Strand(self):
|
|
50
|
+
"""
|
|
51
|
+
Checks if ConductorAC geometry generators work correctly by comparing the number
|
|
52
|
+
of entities in the generated geometry file to the reference file that was
|
|
53
|
+
checked manually.
|
|
54
|
+
"""
|
|
55
|
+
model_names = [
|
|
56
|
+
"TEST_CAC_Strand_adaptiveMesh",
|
|
57
|
+
"TEST_CAC_Strand_hexFilaments",
|
|
58
|
+
"TEST_CAC_wireInChannel",
|
|
59
|
+
]
|
|
60
|
+
|
|
61
|
+
for model_name in model_names:
|
|
62
|
+
with self.subTest(model_name=model_name):
|
|
63
|
+
data_model = self.get_data_model(model_name)
|
|
64
|
+
|
|
65
|
+
# data_model can be modified here if necessary
|
|
66
|
+
# Example:
|
|
67
|
+
|
|
68
|
+
# data_model.magnet.geometry.N = 3
|
|
69
|
+
|
|
70
|
+
self.generate_geometry(data_model, model_name)
|
|
71
|
+
|
|
72
|
+
# Compare the number of entities with the reference file:
|
|
73
|
+
geometry_file = self.get_path_to_generated_file(
|
|
74
|
+
data_model=data_model, file_name=model_name, file_extension="brep"
|
|
75
|
+
)
|
|
76
|
+
reference_file = self.get_path_to_reference_file(
|
|
77
|
+
data_model=data_model, file_name=model_name, file_extension="brep"
|
|
78
|
+
)
|
|
79
|
+
self.compare_number_of_entities(geometry_file, reference_file)
|
|
80
|
+
|
|
81
|
+
# Compare the Geometry YAML files:
|
|
82
|
+
geometry_yaml_file = self.get_path_to_generated_file(
|
|
83
|
+
data_model=data_model, file_name='GeometryModel', file_extension="yaml"
|
|
84
|
+
)
|
|
85
|
+
reference_geometry_yaml_file = self.get_path_to_reference_file(
|
|
86
|
+
data_model=data_model, file_name='GeometryModel', file_extension="yaml"
|
|
87
|
+
)
|
|
88
|
+
self.compare_json_or_yaml_files(geometry_yaml_file, reference_geometry_yaml_file, tolerance=1e-9)
|
|
48
89
|
|
|
49
90
|
if __name__ == "__main__":
|
|
50
91
|
unittest.main()
|