1 // SPDX-FileCopyrightText: Copyright (c) 2017-2025, HONEE contributors. 2 // SPDX-License-Identifier: Apache-2.0 OR BSD-2-Clause 3 #pragma once 4 5 #include <ceed.h> 6 #include <honee.h> 7 #include <petsc_ops.h> 8 9 typedef struct { 10 DM dm_filter; 11 PetscInt num_filtered_fields; 12 CeedInt *num_field_components; 13 PetscInt field_prim_state, field_velo_prod; 14 OperatorApplyContext op_rhs_ctx; 15 KSP ksp; 16 PetscObjectState X_loc_state; 17 PetscBool do_mms_test; 18 CeedContextFieldLabel filter_width_scaling_label; 19 } *DiffFilterData; 20 21 PetscErrorCode DifferentialFilterSetup(Honee honee, DiffFilterData *diff_filter); 22 PetscErrorCode DifferentialFilterDataDestroy(DiffFilterData *diff_filter); 23 PetscErrorCode DifferentialFilterApply(Honee honee, DiffFilterData diff_filter, const PetscReal solution_time, const Vec Q, Vec Filtered_Solution); 24 25 PetscErrorCode TSMonitor_DifferentialFilterSetup(TS ts, PetscViewerAndFormat *ctx); 26 PetscErrorCode TSMonitor_DifferentialFilter(TS ts, PetscInt steps, PetscReal solution_time, Vec Q, PetscViewerAndFormat *ctx); 27 28 PetscErrorCode DifferentialFilterMmsICSetup(Honee honee); 29