@@ -9,6 +9,7 @@ using SegregatedVMSSolver
99using SegregatedVMSSolver. ParametersDef
1010using SegregatedVMSSolver. Interfaces
1111using SegregatedVMSSolver. CreateProblem
12+ using SegregatedVMSSolver. ExportUtility: write_to_csv
1213
1314
1415export compute_VMS2_error
@@ -19,18 +20,18 @@ export compute_VMS2_error
1920
2021function compute_VMS2_error (uh_fine, simcase:: SimulationCase ,params:: Dict{Symbol,Any} , tn:: Real )
2122 @unpack U, dΩ, degree,parts = params
22-
23+ @sunpack D = simcase
2324 ubar, uprime = project_solution (uh_fine, simcase, params, tn)
24- compute_stresses (ubar, uprime, dΩ)
25-
25+ norm_cross, norm_re, eps_cross, eps_re = compute_stresses (ubar, uprime, dΩ)
26+ write_apriori_analysis (tn, D, norm_cross, norm_re, eps_cross, eps_re, parts)
2627end
2728
28- function create_coarse_spaces (params,simcase)
29+ function create_coarse_spaces (params,simcase,order :: Int64 )
2930 compute_Uc = true
30- haskey (params , Uc) ? compute_Uc = false : compute_Uc = true
31+ haskey (params , : Uc ) ? compute_Uc = false : compute_Uc = true
3132 if compute_Uc
32- @sunpack model = params
33- simcase_coarse = deepcapy (simcase)
33+ @unpack model = params
34+ simcase_coarse = deepcopy (simcase)
3435 # simcase_coarse.meshp.meshinfo.N .= ones(Int64, D) .* Int(ceil(N[1] / 2))
3536 simcase_coarse. sprob. method. order = order - 1
3637 boundary_conditions = create_boundary_conditions (simcase)
@@ -54,7 +55,7 @@ function project_solution(uh_fine, simcase::TaylorGreen{Periodic}, params::Dict{
5455
5556 @assert order > 1
5657
57- Vc, Uc = create_coarse_spaces (params,simcase)
58+ Vc, Uc = create_coarse_spaces (params,simcase,order )
5859
5960 # L2 projection of uh_fine solution on lower order dimensional space (same mesh)
6061 # Build weak form
7475
7576function compute_stresses (ubar, uprime, dΩ) # dΩ is of the coarse mesh
7677 tau_cross = ubar ⊗ uprime + uprime ⊗ ubar
77- println (" tau_cross" )
7878 tau_re = uprime ⊗ uprime
79- println (" tau_re" )
8079
8180 norm_cross = sum (∫ ( tau_cross⊙ tau_cross )dΩ) # basically we compute the tensor product to compute the norm
8281 norm_re = sum (∫ ( tau_re⊙ tau_re )dΩ)
@@ -88,9 +87,22 @@ function compute_stresses(ubar, uprime, dΩ) # dΩ is of the coarse mesh
8887
8988 eps_cross = sum (∫ ( - (tau_cross ⊙ grad_ubar) )dΩ)
9089 eps_re = sum (∫ ( - (tau_re⊙ grad_ubar) )dΩ)
90+ println (" eps_cross = $(eps_cross) " )
91+ println (" eps_re = $(eps_re) " )
92+
93+ return norm_cross, norm_re, eps_cross, eps_re
94+ end
95+
96+
97+ function write_apriori_analysis (tn, D, norm_cross, norm_re, eps_cross, eps_re, parts)
98+
99+ # Construct data array dynamically
100+ data_out = [tn, norm_cross, norm_re, eps_cross, eps_re]
101+
102+
103+ headers = [" time" , " norm_cross" , " norm_re" , " eps_cross" , " eps_re" ]
91104
92- println (" eps_cross = $(eps_cross) " )
93- println (" eps_re = $(eps_re) " )
105+ write_to_csv (" TGV_$(D) D_apriori.csv" , data_out, headers, parts)
94106
95107end
96108
0 commit comments