@@ -30,19 +30,19 @@ mutable struct SemidiscretizationHyperbolic{Mesh, Equations, InitialCondition,
3030
3131 function SemidiscretizationHyperbolic{Mesh, Equations, InitialCondition,
3232 BoundaryConditions, SourceTerms, Solver,
33- Cache}(mesh:: Mesh , equations:: Equations ,
33+ Cache}(mesh:: Mesh ,
34+ equations:: Equations ,
3435 initial_condition:: InitialCondition ,
3536 boundary_conditions:: BoundaryConditions ,
3637 source_terms:: SourceTerms ,
3738 solver:: Solver ,
38- cache:: Cache ) where {Mesh, Equations,
39+ cache:: Cache ,
40+ performance_counter:: PerformanceCounter ) where {Mesh, Equations,
3941 InitialCondition,
4042 BoundaryConditions,
4143 SourceTerms,
4244 Solver,
4345 Cache}
44- performance_counter = PerformanceCounter ()
45-
4646 new (mesh, equations, initial_condition, boundary_conditions, source_terms,
4747 solver, cache, performance_counter)
4848 end
@@ -74,14 +74,16 @@ function SemidiscretizationHyperbolic(mesh, equations, initial_condition, solver
7474
7575 check_periodicity_mesh_boundary_conditions (mesh, _boundary_conditions)
7676
77+ performance_counter = PerformanceCounter ()
78+
7779 SemidiscretizationHyperbolic{typeof (mesh), typeof (equations),
7880 typeof (initial_condition),
7981 typeof (_boundary_conditions), typeof (source_terms),
8082 typeof (solver), typeof (cache)}(mesh, equations,
8183 initial_condition,
8284 _boundary_conditions,
8385 source_terms, solver,
84- cache)
86+ cache, performance_counter )
8587end
8688
8789# Create a new semidiscretization but change some parameters compared to the input.
@@ -103,6 +105,30 @@ function remake(semi::SemidiscretizationHyperbolic; uEltype = real(semi.solver),
103105 source_terms, boundary_conditions, uEltype)
104106end
105107
108+ function Adapt. adapt_structure (to, semi:: SemidiscretizationHyperbolic )
109+ if ! (typeof (semi. mesh) <: P4estMesh )
110+ error (" Adapt.adapt is only supported for semidiscretizations based on P4estMesh" )
111+ end
112+
113+ mesh = semi. mesh
114+ equations = Adapt. adapt_structure (to, semi. equations)
115+ initial_condition = Adapt. adapt_structure (to, semi. initial_condition)
116+ boundary_conditions = Adapt. adapt_structure (to, semi. boundary_conditions)
117+ source_terms = Adapt. adapt_structure (to, semi. source_terms)
118+ solver = Adapt. adapt_structure (to, semi. solver)
119+ cache = Adapt. adapt_structure (to, semi. cache)
120+ performance_counter = semi. performance_counter
121+
122+ SemidiscretizationHyperbolic{typeof (mesh), typeof (equations),
123+ typeof (initial_condition),
124+ typeof (boundary_conditions), typeof (source_terms),
125+ typeof (solver), typeof (cache)}(mesh, equations,
126+ initial_condition,
127+ boundary_conditions,
128+ source_terms, solver,
129+ cache, performance_counter)
130+ end
131+
106132# general fallback
107133function digest_boundary_conditions (boundary_conditions, mesh, solver, cache)
108134 boundary_conditions
0 commit comments