Skip to content
Snippets Groups Projects
Commit 9da7dc6b authored by Dmitri Naumov's avatar Dmitri Naumov
Browse files

Merge branch 'snakemake-vtkdiff' into 'master'

Small Snakemake refactorings

See merge request ogs/ogs!3487
parents d7f55edb 48cdafaf
No related branches found
No related tags found
No related merge requests found
...@@ -14,33 +14,26 @@ workdir: f"{config['Data_BINARY_DIR']}/{output_path}" ...@@ -14,33 +14,26 @@ workdir: f"{config['Data_BINARY_DIR']}/{output_path}"
elem_types = ['tri', 'quad'] elem_types = ['tri', 'quad']
rule all: rule all:
input: input:
expand("square_1x1_{type}_boundary_diff.out", type=elem_types) expand("square_10_1x1_{type}_boundary_diff.out", type=elem_types)
rule generate_meshes: include: f"{config['SOURCE_DIR']}/scripts/snakemake/modules/meshes.smk"
output:
"input_square_1x1_{type}.vtu"
shell:
"""
generateStructuredMesh -e {wildcards.type} \
--lx 1 --ly 1 \
--nx 10 --ny 10 \
-o {output}
"""
rule extract_boundary: rule extract_boundary:
input: input:
"input_square_1x1_{type}.vtu" rules.generate_square_mesh.output
output: output:
"square_1x1_{type}_boundary.vtu" "square_{size}_{lx}x{ly}_{type}_boundary.vtu"
shell: shell:
"ExtractBoundary -i {input} -o {output}" "ExtractBoundary -i {input} -o {output}"
rule vtkdiff: rule vtkdiff:
input: input:
"square_1x1_{type}_boundary.vtu" a = rules.extract_boundary.output,
b = f"{config['Data_SOURCE_DIR']}/{output_path}/{rules.extract_boundary.output}"
output: output:
"square_1x1_{type}_boundary_diff.out" "square_{size}_{lx}x{ly}_{type}_boundary_diff.out"
params: params:
check_mesh = True,
fields = [ fields = [
# second field name can be omitted if identical # second field name can be omitted if identical
["bulk_node_ids", 0, 0], ["bulk_node_ids", 0, 0],
......
...@@ -11,8 +11,7 @@ out_dir = f"{config['Data_BINARY_DIR']}/MeshLib" ...@@ -11,8 +11,7 @@ out_dir = f"{config['Data_BINARY_DIR']}/MeshLib"
rule all: rule all:
input: input:
f"{out_dir}/AREHS_test_diff_geometry.out", f"{out_dir}/AREHS_test_diff_geometry.out",
f"{out_dir}/AREHS_test_fault_diff_material_ids.out", f"{out_dir}/AREHS_test_fault_diff.out",
f"{out_dir}/AREHS_test_fault_diff_geometry.out",
f"{out_dir}/AREHS_test_iso_diff_geometry.out" f"{out_dir}/AREHS_test_iso_diff_geometry.out"
rule layers_to_grid: rule layers_to_grid:
...@@ -41,23 +40,17 @@ rule add_fault_to_grid: ...@@ -41,23 +40,17 @@ rule add_fault_to_grid:
shell: shell:
"AddFaultToVoxelGrid -i {input.grid} -f {input.fault} -o {output}" "AddFaultToVoxelGrid -i {input.grid} -f {input.fault} -o {output}"
rule vtkdiff_material_ids: rule vtkdiff_fault:
input: input:
out = rules.add_fault_to_grid.output, a = rules.add_fault_to_grid.output,
ref = "AREHS_test_fault.vtu" b = "AREHS_test_fault.vtu"
output: output:
f"{out_dir}/AREHS_test_fault_diff_material_ids.out" f"{out_dir}/AREHS_test_fault_diff.out"
shell: params:
"vtkdiff -a MaterialIDs -b MaterialIDs {input.out} {input.ref} > {output}" check_mesh = True,
fields = [["MaterialIDs", 0, 0]]
rule vtkdiff_fault_geometry: wrapper:
input: f"file://{config['SOURCE_DIR']}/scripts/snakemake/vtkdiff"
out = rules.add_fault_to_grid.output,
ref = "AREHS_test_fault.vtu"
output:
f"{out_dir}/AREHS_test_fault_diff_geometry.out"
shell:
"vtkdiff -m {input.out} {input.ref} > {output}"
rule layers_to_grid_iso: rule layers_to_grid_iso:
input: input:
......
rule generate_square_mesh:
output:
"square_{size}_{lx}x{ly}_{type}.vtu"
shell:
"""
generateStructuredMesh -e {wildcards.type} \
--lx {wildcards.lx} --ly {wildcards.ly} \
--nx {wildcards.size} --ny {wildcards.size} \
-o {output}
"""
...@@ -7,12 +7,12 @@ __license__ = "BSD" ...@@ -7,12 +7,12 @@ __license__ = "BSD"
import os import os
from snakemake.shell import shell from snakemake.shell import shell
output_path = (
os.getcwd().replace("\\", "/").replace(snakemake.config["Data_BINARY_DIR"], "")
)
if os.path.exists(snakemake.output[0]): if os.path.exists(snakemake.output[0]):
os.remove(snakemake.output[0]) os.remove(snakemake.output[0])
if snakemake.params.check_mesh:
shell("vtkdiff {snakemake.input.a} {snakemake.input.b} -m > {snakemake.output[0]}")
for field in snakemake.params.fields: for field in snakemake.params.fields:
field_a = field[0] field_a = field[0]
offset = 0 offset = 0
...@@ -24,8 +24,7 @@ for field in snakemake.params.fields: ...@@ -24,8 +24,7 @@ for field in snakemake.params.fields:
shell( shell(
""" """
vtkdiff {snakemake.input[0]} \ vtkdiff {snakemake.input.a} {snakemake.input.b} \
{snakemake.config[Data_SOURCE_DIR]}/{output_path}/{snakemake.input[0]} \
-a {field_a} -b {field_b} \ -a {field_a} -b {field_b} \
--abs {abs_tol} --rel {rel_tol} >> {snakemake.output[0]} --abs {abs_tol} --rel {rel_tol} >> {snakemake.output[0]}
""" """
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment