Skip to content

Commit 8b7675b

Browse files
committed
mas
1 parent 570a1ee commit 8b7675b

6 files changed

+29
-3
lines changed

src/Mod/Fem/femsolver/calculix/solver.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
if FreeCAD.GuiUp:
4242
import FemGui
4343

44-
ANALYSIS_TYPES = ["static", "frequency", "thermomech", "check", "buckling"]
44+
ANALYSIS_TYPES = ["static", "frequency", "thermomech", "check", "buckling", "electrostatic"]
4545

4646

4747
def create(doc, name="SolverCalculiX"):

src/Mod/Fem/femsolver/calculix/tasks.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import subprocess
3535

3636
import FreeCAD
37+
import Fem
3738

3839
from . import writer
3940
from .. import run
@@ -120,6 +121,7 @@ def run(self):
120121
self.fail()
121122
return
122123

124+
print("DIRECTORIO:", self.directory)
123125
# run solver
124126
self._process = subprocess.Popen(
125127
[binary, "-i", _inputFileName],
@@ -135,6 +137,16 @@ def run(self):
135137
# self._updateOutput(output)
136138
# del output # get flake8 quiet
137139

140+
def clean_result_files(self):
141+
files = os.listdir(self.directory)
142+
for f in files:
143+
if f.endswith(".vtm"):
144+
os.remove(f)
145+
# remove dir with .vtu files
146+
d = f.rstrip(".vtm")
147+
[os.remove(d + "/" + i.name) for i in os.scandir(d)]
148+
os.rmdir(d)
149+
138150

139151
class Results(run.Results):
140152

@@ -165,7 +177,7 @@ def load_results(self):
165177
def load_ccxfrd_results(self):
166178
frd_result_file = os.path.join(self.directory, _inputFileName + ".frd")
167179
if os.path.isfile(frd_result_file):
168-
result_name_prefix = "CalculiX_" + self.solver.AnalysisType + "_"
180+
result_name_prefix = "SolverCalculiX" + self.solver.AnalysisType + "_"
169181
importCcxFrdResults.importFrd(frd_result_file, self.analysis, result_name_prefix)
170182
else:
171183
# TODO: use solver framework status message system

src/Mod/Fem/femsolver/calculix/write_constraint_electrostatic.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929

3030

3131
def get_analysis_types():
32-
return ["thermomech"]
32+
return ["electrostatic"]
3333

3434

3535
def get_sets_name():

src/Mod/Fem/femsolver/calculix/write_femelement_material.py

+6
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,9 @@ def is_density_needed():
9292
KV = FreeCAD.Units.Quantity(mat_obj.Material["KinematicViscosity"])
9393
KV_in_mm2s = KV.getValueAs("mm^2/s").Value
9494
DV_in_tmms = KV_in_mm2s * density_in_tonne_per_mm3
95+
if ccxwriter.analysis_type == "electrostatic":
96+
TC = FreeCAD.Units.Quantity(mat_obj.Material["ThermalConductivity"])
97+
TC_in_WmK = TC.getValueAs("W/m/K").Value
9598

9699
# write material properties
97100
f.write(f"** FreeCAD material name: {mat_info_name}\n")
@@ -114,6 +117,9 @@ def is_density_needed():
114117
elif mat_obj.Category == "Fluid":
115118
f.write("*FLUID CONSTANTS\n")
116119
f.write(f"{SH_in_JkgK:.13G},{DV_in_tmms:.13G}\n")
120+
if ccxwriter.analysis_type == "electrostatic":
121+
f.write("*CONDUCTIVITY\n")
122+
f.write(f"{TC_in_WmK:.13G}\n")
117123

118124
# nonlinear material properties
119125
if ccxwriter.solver_obj.MaterialNonlinearity == "nonlinear":

src/Mod/Fem/femsolver/calculix/write_step_equation.py

+4
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ def write_step_equation(f, ccxwriter):
7878
analysis_type = "*NO ANALYSIS"
7979
elif ccxwriter.analysis_type == "buckling":
8080
analysis_type = "*BUCKLE"
81+
elif ccxwriter.analysis_type == "electrostatic":
82+
analysis_type = "*HEAT TRANSFER, STEADY STATE, MATRIXSTORAGE"
8183
# analysis line --> solver type
8284
# https://forum.freecad.org/viewtopic.php?f=18&t=43178
8385
if ccxwriter.solver_obj.MatrixSolverType == "default":
@@ -99,6 +101,8 @@ def write_step_equation(f, ccxwriter):
99101
analysis_type += ", DIRECT"
100102
elif ccxwriter.analysis_type == "thermomech":
101103
analysis_type += ", DIRECT"
104+
# elif ccxwriter.analysis_type == "electrostatic":
105+
# analysis_type += ", DIRECT"
102106
elif ccxwriter.analysis_type == "frequency":
103107
FreeCAD.Console.PrintMessage(
104108
"Analysis type frequency and IterationsUserDefinedIncrementations "

src/Mod/Fem/femsolver/calculix/write_step_output.py

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ def write_step_output(f, ccxwriter):
4747
f.write("U, NT\n")
4848
else:
4949
f.write("MF, PS\n")
50+
elif ccxwriter.analysis_type == "electrostatic":
51+
f.write("NT\n")
5052
else:
5153
f.write("U\n")
5254
if not ccxwriter.member.geos_fluidsection:
@@ -56,6 +58,8 @@ def write_step_output(f, ccxwriter):
5658
variables += ", HFL"
5759
if ccxwriter.solver_obj.MaterialNonlinearity == "nonlinear":
5860
variables += ", PEEQ"
61+
if ccxwriter.analysis_type == "electrostatic":
62+
variables = "HFL"
5963

6064
f.write(variables + "\n")
6165

0 commit comments

Comments
 (0)