From 1403114eb7509a08328f7cd8d3daa425bd49c67d Mon Sep 17 00:00:00 2001 From: dngoldberg <31406058+dngoldberg@users.noreply.github.com> Date: Sun, 26 May 2024 15:22:21 +0100 Subject: [PATCH 1/3] new change to have multiple mask values --- fenics_ice/config.py | 2 ++ fenics_ice/solver.py | 10 +++++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/fenics_ice/config.py b/fenics_ice/config.py index e37ba09..2aefbe7 100644 --- a/fenics_ice/config.py +++ b/fenics_ice/config.py @@ -266,6 +266,8 @@ class ErrorPropCfg(ConfigPrinter): """ qoi: str = 'vaf' qoi_apply_vaf_mask: bool = False + qoi_vaf_mask_usecode: bool = False + qoi_vaf_mask_code: int = -1 phase_name: str = 'error_prop' phase_suffix: str = '' diff --git a/fenics_ice/solver.py b/fenics_ice/solver.py index 50136ce..b8d112d 100644 --- a/fenics_ice/solver.py +++ b/fenics_ice/solver.py @@ -1458,10 +1458,14 @@ def comp_Q_vaf(self, verbose=False): HAF = ufl.Max(b_ex * (H + (rhow/rhoi)*bed) + (1-b_ex)*(H), 0.0) if self.params.error_prop.qoi_apply_vaf_mask: - msk_ex = conditional(self.vaf_mask > 0.0, 1.0, 0.0) - Q_vaf = msk_ex * HAF * dx + if self.params.error_prop.qoi_vaf_mask_usecode: + code = float(self.params.error_prop.qoi_vaf_mask_code) + msk_ex = conditional((self.vaf_mask-code)<1.e-10, 1.0, 0.0) + else: + msk_ex = conditional(self.vaf_mask > 0.0, 1.0, 0.0) + Q_vaf = msk_ex * HAF * dx else: - Q_vaf = HAF * dx + Q_vaf = HAF * dx if verbose: info(f"Q_vaf: {assemble(Q_vaf)}") From f6e3c3b1a61d59d8fe85172c681efb85edfdbf36 Mon Sep 17 00:00:00 2001 From: dngoldberg <31406058+dngoldberg@users.noreply.github.com> Date: Sun, 26 May 2024 22:50:21 +0100 Subject: [PATCH 2/3] change default vaf code to +1 --- fenics_ice/config.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fenics_ice/config.py b/fenics_ice/config.py index 2aefbe7..7f42fc1 100644 --- a/fenics_ice/config.py +++ b/fenics_ice/config.py @@ -267,7 +267,7 @@ class ErrorPropCfg(ConfigPrinter): qoi: str = 'vaf' qoi_apply_vaf_mask: bool = False qoi_vaf_mask_usecode: bool = False - qoi_vaf_mask_code: int = -1 + qoi_vaf_mask_code: int = 1 phase_name: str = 'error_prop' phase_suffix: str = '' From a8accc97e8f9821ac6ae5bcbc28e79dcb1c457cc Mon Sep 17 00:00:00 2001 From: dngoldberg <31406058+dngoldberg@users.noreply.github.com> Date: Mon, 27 May 2024 13:54:18 +0100 Subject: [PATCH 3/3] need to apply abs to test difference of mask with code --- fenics_ice/solver.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fenics_ice/solver.py b/fenics_ice/solver.py index b8d112d..9c9b77e 100644 --- a/fenics_ice/solver.py +++ b/fenics_ice/solver.py @@ -1460,7 +1460,7 @@ def comp_Q_vaf(self, verbose=False): if self.params.error_prop.qoi_apply_vaf_mask: if self.params.error_prop.qoi_vaf_mask_usecode: code = float(self.params.error_prop.qoi_vaf_mask_code) - msk_ex = conditional((self.vaf_mask-code)<1.e-10, 1.0, 0.0) + msk_ex = conditional(abs(self.vaf_mask-code)<1.e-10, 1.0, 0.0) else: msk_ex = conditional(self.vaf_mask > 0.0, 1.0, 0.0) Q_vaf = msk_ex * HAF * dx