This commit is contained in:
jaseg 2023-10-06 16:17:25 +02:00
parent 84f7e5d25b
commit 78f5bf965f
2 changed files with 10 additions and 4 deletions

View file

@ -73,14 +73,14 @@ def elmer_grid(infile, outfile=None, intype=None, outtype=None, cwd=None, **kwar
if outfile is not None:
kwargs['out'] = str(outfile)
args = ['ElmerGrid', intype, outtype, infile]
args = ['ElmerGrid', intype, outtype, str(infile)]
for key, value in kwargs.items():
args.append(f'-{key}')
if isinstance(value, (tuple, list)):
args.extend(str(v) for v in value)
else:
args.append(str(value))
subprocess.run(args, cwd=cwd)
subprocess.run(args, cwd=cwd, check=True)
def elmer_solver(cwd):
subprocess.run(['ElmerSolver'], cwd=cwd)
@ -138,7 +138,7 @@ def run_capacitance_simulation(mesh_file, sim_dir):
sim.write_startinfo(tmpdir)
sim.write_sif(tmpdir)
# Convert mesh from gmsh to elemer formats. Also scale it from 1 unit = 1 mm to 1 unit = 1 m (SI units)
elmer_grid(mesh_file.name, 'mesh', cwd=tmpdir, scale=[1e-3, 1e-3, 1e-3])
elmer_grid(mesh_file.absolute(), 'mesh', cwd=tmpdir, scale=[1e-3, 1e-3, 1e-3])
elmer_solver(tmpdir)
capacitance_matrix = np.loadtxt(tmpdir / 'capacitance.txt')
@ -212,7 +212,7 @@ def run_inductance_simulation(mesh_file, sim_dir):
sim.write_startinfo(tmpdir)
sim.write_sif(tmpdir)
# Convert mesh from gmsh to elemer formats. Also scale it from 1 unit = 1 mm to 1 unit = 1 m (SI units)
elmer_grid(mesh_file.name, 'mesh', cwd=tmpdir, scale=[1e-3, 1e-3, 1e-3])
elmer_grid(mesh_file.absolute(), 'mesh', cwd=tmpdir, scale=[1e-3, 1e-3, 1e-3])
elmer_solver(tmpdir)

View file

@ -253,6 +253,7 @@ def traces_to_gmsh_mag(traces, mesh_out, bbox, model_name='gerbonara_board', log
print('Cutting substrate')
occ.cut([(3, substrate)], [(3, toplevel_tag)], removeObject=True, removeTool=False)
occ.fragment([(3, substrate)], [(2, interface_tag_top), (2, interface_tag_bottom)])
occ.fragment([(3, airbox)], [(3, substrate), (3, toplevel_tag)])
print('Synchronizing')
@ -263,6 +264,11 @@ def traces_to_gmsh_mag(traces, mesh_out, bbox, model_name='gerbonara_board', log
trace_physical = gmsh.model.add_physical_group(3, [toplevel_tag], name='trace')
interface_top_physical = gmsh.model.add_physical_group(2, [interface_tag_top], name='interface_top')
interface_bottom_physical = gmsh.model.add_physical_group(2, [interface_tag_bottom], name='interface_bottom')
print('first disk', first_disk)
print('bbox', occ.getBoundingBox(2, interface_tag_top))
print('last disk', last_disk)
print('bbox', occ.getBoundingBox(2, interface_tag_bottom))
airbox_adjacent = set(gmsh.model.getAdjacencies(3, airbox)[1])
in_bbox = {tag for _dim, tag in gmsh.model.getEntitiesInBoundingBox(x1+eps, y1+eps, z0+eps, x2-eps, y2-eps, z0+ab_h-eps, dim=2)}