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.h> 8 #include <petsc_ops.h> 9 10 typedef struct { 11 DM dm_filter; 12 PetscInt num_filtered_fields; 13 CeedInt *num_field_components; 14 PetscInt field_prim_state, field_velo_prod; 15 OperatorApplyContext op_rhs_ctx; 16 KSP ksp; 17 PetscObjectState X_loc_state; 18 PetscBool do_mms_test; 19 CeedContextFieldLabel filter_width_scaling_label; 20 } *DiffFilterData; 21 22 PetscErrorCode DifferentialFilterSetup(Honee honee, DiffFilterData *diff_filter); 23 PetscErrorCode DifferentialFilterDataDestroy(DiffFilterData *diff_filter); 24 PetscErrorCode DifferentialFilterApply(Honee honee, DiffFilterData diff_filter, const PetscReal solution_time, const Vec Q, Vec Filtered_Solution); 25 26 PetscErrorCode TSMonitor_DifferentialFilterSetup(TS ts, PetscViewerAndFormat *ctx); 27 PetscErrorCode TSMonitor_DifferentialFilter(TS ts, PetscInt steps, PetscReal solution_time, Vec Q, PetscViewerAndFormat *ctx); 28 29 PetscErrorCode DifferentialFilterMmsICSetup(Honee honee); 30