diff --git a/fenics_ice/config.py b/fenics_ice/config.py index e37ba09..7f42fc1 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..9c9b77e 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(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 else: - Q_vaf = HAF * dx + Q_vaf = HAF * dx if verbose: info(f"Q_vaf: {assemble(Q_vaf)}")