diff options
Diffstat (limited to 'examples/cavity_2d.cpp')
-rw-r--r-- | examples/cavity_2d.cpp | 30 |
1 files changed, 13 insertions, 17 deletions
diff --git a/examples/cavity_2d.cpp b/examples/cavity_2d.cpp index d40e06e..a10276a 100644 --- a/examples/cavity_2d.cpp +++ b/examples/cavity_2d.cpp @@ -44,6 +44,11 @@ using CellStruct = Struct< Member<CellInfo<Desc>, "info"> >; +template<typename T, uint64_t D> +using MacroStruct = Struct< + Member<FixedArray<T,D>, "velocity">, + Member<T, "pressure"> +>; using CavityFieldD2Q9 = CellField<D2Q9, CellStruct<D2Q9>>; } @@ -390,6 +395,8 @@ int main(){ uint64_t print_every = 256u; uint64_t file_no = 0u; + saw::data<sch::Array<sch::MacroStruct<sch::T,sch::D2Q9::D>,sch::D2Q9::D>> macros{dim}; + for(uint64_t step = 0; step < lattice_steps; ++step){ if(step % print_every == 0u){ @@ -481,28 +488,17 @@ int main(){ /// std::cout<<"Average rho: "<<(sum / ((dim_x-4)*(dim_y-4)))<<std::endl; std::cout.flush(); - std::ofstream vtk_file{"tmp/cavity_2d_"+std::to_string(file_no)+".vtk"}; - - vtk_file <<"# vtk DataFile Version 3.0\n"; - vtk_file <<"Velocity Cavity2D example\n"; - vtk_file <<"ASCII\n"; - vtk_file <<"DATASET STRUCTURED_POINTS\n"; - vtk_file <<"DIMENSIONS "<< dim_x <<" "<<dim_y<<" 1\n"; - vtk_file <<"SPACING 1.0 1.0 1.0\n"; - vtk_file <<"ORIGIN 0.0 0.0 0.0\n"; - vtk_file <<"POINT_DATA "<<(dim_x*dim_y)<<"\n"; - vtk_file <<"VECTORS Velocity float\n"; - apply_for_cells([&](auto& cell, std::size_t i, std::size_t j){ auto dfs = even_step ? cell.template get<"dfs_old">() : cell.template get<"dfs">(); - typename saw::native_data_type<sch::T>::type rho; - std::array<typename saw::native_data_type<sch::T>::type, sch::D2Q9::D> vel; + auto& rho = macros.at({{i,j}}).template get<"pressure">(); + auto& vel = macros.at({{i,j}}).template get<"velocity">(); compute_rho_u<sch::T,sch::D2Q9>(dfs,rho,vel); - - vtk_file << static_cast<float>(vel[0u]) << " " << static_cast<float>(vel[1u])<<" 0.0\n"; }, lattice); - + + std::string vtk_f_name{"tmp/cavity_2d_"}; + vtk_f_name += std::to_string(file_no) + ".vtk"; + write_vtk_file(vtk_f_name, macros); ++file_no; } |