@@ -6,6 +6,7 @@ using GridapDistributed
66using PartitionedArrays
77using SparseArrays
88using ForwardDiff
9+ using Gridap. ODEs: TransientCellField, get_jacs
910
1011function main_sf (distribute,parts)
1112 ranks = distribute (LinearIndices ((prod (parts),)))
@@ -206,11 +207,54 @@ function skeleton_mf_different_fespace_trians(distribute,parts)
206207 end
207208end
208209
210+ function main_transient_sf (distribute,parts)
211+ ranks = distribute (LinearIndices ((prod (parts),)))
212+
213+ domain = (0 ,4 ,0 ,4 )
214+ cells = (4 ,4 )
215+ model = CartesianDiscreteModel (ranks,parts,domain,cells)
216+
217+ u ((x,y),t) = (x+ y)^ k + 2 * t
218+ u (t:: Real ) = x -> u (x,t)
219+ σ (∇u) = (1.0 + ∇u⋅ ∇u)* ∇u
220+ dσ (∇du,∇u) = (2 * ∇u⋅ ∇du)* ∇u + (1.0 + ∇u⋅ ∇u)* ∇du
221+ f (t) = x -> ∂t (u)(t)(x) - divergence (y-> σ (∇ (u (t),y)),x)
222+
223+ k = 1
224+ reffe = ReferenceFE (lagrangian,Float64,k)
225+ V = TestFESpace (model,reffe,dirichlet_tags= " boundary" )
226+ U = TransientTrialFESpace (V,u)
227+
228+ Ω = Triangulation (model)
229+ dΩ = Measure (Ω,2 * k)
230+ r (t,u,v) = ∫ ( ∂t (u)⋅ v + ∇ (v)⋅ (σ∘ ∇ (u)) - v* f (t) )dΩ
231+ j_0 (t,u,du,v) = ∫ ( ∇ (v)⋅ (dσ∘ (∇ (du),∇ (u))) )dΩ
232+ j_t (t,u,dut,v) = ∫ ( dut⋅ v )dΩ
233+
234+ op = TransientFEOperator (r,(j_0,j_t),U,V)
235+ op_AD = TransientFEOperator (r,U,V)
236+
237+ uh = interpolate (0.0 ,U (0.0 ))
238+ ∂tuₕ = interpolate (0.0 ,U (0.0 ))
239+ uhₜ = TransientCellField (uh,(∂tuₕ,))
240+
241+ b = assemble_vector (v-> r (1.0 ,uhₜ,v),V)
242+ A_0 = assemble_matrix ((du,v)-> j_0 (1.0 ,uhₜ,du,v),U (1.0 ),V)
243+ A_t = assemble_matrix ((dut,v)-> j_t (1.0 ,uhₜ,dut,v),U (1.0 ),V)
244+ jac_0_AD = get_jacs (op_AD)[1 ]
245+ jac_t_AD = get_jacs (op_AD)[2 ]
246+ A_0_AD = assemble_matrix ((du,v)-> jac_0_AD (1.0 ,uhₜ,du,v),U (1.0 ),V)
247+ A_t_AD = assemble_matrix ((dut,v)-> jac_t_AD (1.0 ,uhₜ,dut,v),U (1.0 ),V)
248+ @test reduce (& ,map (≈ ,partition (A_0),partition (A_0_AD)))
249+ @test reduce (& ,map (≈ ,partition (A_t),partition (A_t_AD)))
250+ end
251+
209252function main (distribute,parts)
210253 main_sf (distribute,parts)
211254 main_mf (distribute,parts)
212255 mf_different_fespace_trians (distribute,parts)
213256 skeleton_mf_different_fespace_trians (distribute,parts)
257+ main_transient_sf (distribute,parts)
214258end
215259
216260end
0 commit comments