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