-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.cpp
More file actions
84 lines (66 loc) · 2.36 KB
/
main.cpp
File metadata and controls
84 lines (66 loc) · 2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#include <AMReX.H>
#include <AMReX_Print.H>
#include <AMReX_MultiFab.H>
#include <AMReX_PlotFileUtil.H>
//Standard C++ libraries
#include <cmath>
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <array>
//
// My libraries
//
#include "include/hierachicalFiniteElement.hpp"
#include "include/hierachicalFEMesh.hpp"
#include "include/integrationRules.hpp"
//
// Problem Operators
//
#include "sampleProblems/poissonProb.hpp"
int main(int argc, char* argv[]){
const int pOrder_1D=3;
const int nsampl=4;
std::vector<std::array<amrex::Real,nsampl>> Ni(pOrder_1D+1), dNi(pOrder_1D+1);
std::vector<std::array<amrex::Real,2>> XiWi(nsampl);
CalcGaussLegendreXW1D<int,amrex::Real,nsampl>(&XiWi);
HLegendreElement1D::CalcSF_SDFs1D<int,amrex::Real,nsampl,pOrder_1D>(&Ni, &dNi, XiWi);
for(int I=0; I<nsampl; I++){
std::cout << std::setw(12) << XiWi[I][0]
<< std::setw(12) << XiWi[I][1] << std::endl;
}
for(int I=0; I<nsampl; I++){
for(int J=0; J<(pOrder_1D+1); J++){
std::cout << std::setw(12) << Ni[J][I];
}
std::cout << std::endl;
}
amrex::Initialize(argc, argv);
{
amrex::Print() << "Hi AMReX version " << amrex::Version() << "\n";
poissonProblem MyPoisson(AMREX_SPACEDIM,"Config.txt");
hierachicalFEMeshProblemSolver<int,amrex::Real,AMREX_SPACEDIM> MySolver(&MyPoisson);
/*
//Data for MultiFab
amrex::RealBox real_box({0.,0.,0.},{1.,1.,1.});//Physical Dimension of domain
amrex::Geometry geom(domain, &real_box); //Geometric object
amrex::GpuArray<amrex::Real, 3> dx = geom.CellSizeArray();
const amrex::MultiArray4<amrex::Real>& mf_arrs = mf.arrays();
const amrex::IntVect ngs(nGhost);
amrex::ParallelFor(mf, ngs, [=] AMREX_GPU_DEVICE( int nbx, int I, int J, int K) noexcept {
amrex::Real x = I * dx[0];
amrex::Real y = J * dx[1];
amrex::Real z = K * dx[2];
amrex::Real rSqaured = amrex::Real(EntityMapping::EntityTypeTest(I,J,K,pOrder_1D));
for(int L=0; L<ncomp; L++){//Iterate over components
mf_arrs[nbx](I,J,K,L) = rSqaured + amrex::Real(L);//1.0 + std::exp(-r_squared);
};
});
//Plot the MultiFab Data
WriteSingleLevelPlotfile("plt001",mf,{"comp0","comp1","comp2"},geom,0.,0);
*/
}
amrex::Finalize();
return 0;
};