Skip to content
Snippets Groups Projects
Commit 5b7ea25d authored by Fanny CHOPOT's avatar Fanny CHOPOT
Browse files

ajout conditions aux bords sur u et k, modification de Fl

parent d3c0879b
No related branches found
No related tags found
No related merge requests found
......@@ -50,7 +50,7 @@ public:
// pas constant
/*
Mesh(const Connectivity& connectivity)
: m_connectivity(connectivity),
m_xr("xr", connectivity.numberOfNodes())
......@@ -60,11 +60,11 @@ public:
m_xr[r][0] = r*delta_x;
});
}
*/
// pas non constant
// pas non constant
/*
Mesh(const Connectivity& connectivity)
: m_connectivity(connectivity),
m_xr("xr", connectivity.numberOfNodes())
......@@ -85,7 +85,7 @@ public:
}
});
}
*/
~Mesh()
{
......
......@@ -77,7 +77,11 @@ private:
Kokkos::View<Rdd*>
computeFl(const Kokkos::View<const Rd**>& Cjr,
const Kokkos::View<const Rd*>& uj,
const Kokkos::View<const double*>& kj) {
const Kokkos::View<const double*>& kj,
const Kokkos::View<const Rd*>& uL,
const Kokkos::View<const Rd*>& uR,
const Kokkos::View<const double*>& kL,
const Kokkos::View<const double*>& kR) {
const Kokkos::View<const unsigned int**>& face_cells = m_connectivity.faceCells();
......@@ -101,6 +105,20 @@ private:
m_Fl(l) = ((sum2/face_nb_cells(l))/Vl(l))*sum;
// Conditions aux bords
int cell_here = face_cells(0,0);
int local_face_number_in_cell = face_cell_local_face(0,0);
//m_Fl(0) = -(kL(0) + kj(cell_here))*0.5*(tensorProduct(uj(cell_here), Cjr(cell_here, local_face_number_in_cell)) - tensorProduct(uL(0), Cjr(cell_here, local_face_number_in_cell)));
m_Fl(0) = -(kL(0) + kj(0))*0.5*(tensorProduct(uj(0), Cjr(0, 0)));
cell_here = face_cells(m_mesh.numberOfFaces()-1,0);
local_face_number_in_cell = face_cell_local_face(m_mesh.numberOfFaces()-1,0);
//m_Fl(m_mesh.numberOfFaces()-1) = -(kR(0) + kj(cell_here))*0.5*(tensorProduct(uj(cell_here), Cjr(cell_here, local_face_number_in_cell)) - tensorProduct(uR(0), Cjr(cell_here, local_face_number_in_cell)));
m_Fl(m_mesh.numberOfFaces()-1) = -(kR(0) + kj(m_mesh.numberOfCells()-1))*0.5*(tensorProduct(uj(m_mesh.numberOfCells()-1), Cjr(m_mesh.numberOfCells()-1,1)));
});
return m_Fl ;
......@@ -161,9 +179,13 @@ private:
KOKKOS_INLINE_FUNCTION
void computeExplicitFluxes(const Kokkos::View<const Rd*>& uj,
const Kokkos::View<const Rd**>& Cjr,
const Kokkos::View<const double*>& kj) {
const Kokkos::View<const double*>& kj,
const Kokkos::View<const Rd*>& uL,
const Kokkos::View<const Rd*>& uR,
const Kokkos::View<const double*>& kL,
const Kokkos::View<const double*>& kR) {
Kokkos::View<Rdd*> Fl = m_Fl ;
Fl = computeFl (Cjr, uj, kj);
Fl = computeFl (Cjr, uj, kj, uL, uR, kL, kR);
Kokkos::View<Rd*> Gl = m_Gl ;
Gl = computeGl (uj, Fl );
}
......@@ -247,12 +269,20 @@ public:
const Kokkos::View<const double*> kj = unknowns.kj();
Kokkos::View<Rd*> uL = unknowns.uL();
Kokkos::View<Rd*> uR = unknowns.uR();
Kokkos::View<double*> kL = unknowns.kL();
Kokkos::View<double*> kR = unknowns.kR();
const Kokkos::View<const Rd*> xj = m_mesh_data.xj();
const Kokkos::View<const double*> Vj = m_mesh_data.Vj();
const Kokkos::View<const Rd**> Cjr = m_mesh_data.Cjr();
// Calcule les flux
computeExplicitFluxes(uj, Cjr, kj);
computeExplicitFluxes(uj, Cjr, kj, uL, uR, kL, kR);
const Kokkos::View<const Rdd*> Fl = m_Fl ;
const Kokkos::View<const Rd *> Gl = m_Gl ;
......
......@@ -27,6 +27,10 @@ private:
Kokkos::View<double*> m_inv_mj;
Kokkos::View<double*> m_kj;
Kokkos::View<Rd*> m_Sj;
Kokkos::View<Rd*> m_uL;
Kokkos::View<Rd*> m_uR;
Kokkos::View<double*> m_kL;
Kokkos::View<double*> m_kR;
public:
Kokkos::View<double*> rhoj()
......@@ -134,11 +138,53 @@ public:
return m_Sj;
}
const Kokkos::View<const double*> Sj() const
const Kokkos::View<const Rd*> Sj() const
{
return m_Sj;
}
Kokkos::View<Rd*> uL()
{
return m_uL;
}
const Kokkos::View<const Rd*> uL() const
{
return m_uL;
}
Kokkos::View<Rd*> uR()
{
return m_uR;
}
const Kokkos::View<const Rd*> uR() const
{
return m_uR;
}
Kokkos::View<double*> kL()
{
return m_kL;
}
const Kokkos::View<const double*> kL() const
{
return m_kL;
}
Kokkos::View<double*> kR()
{
return m_kR;
}
const Kokkos::View<const double*> kR() const
{
return m_kR;
}
// --- Acoustic Solver ---
// void initializeSod()
......@@ -211,7 +257,6 @@ void initializeSod()
Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
m_gammaj[j] = 2.;
});
BlockPerfectGas block_eos(m_rhoj, m_ej, m_pj, m_gammaj, m_cj);
......@@ -239,6 +284,14 @@ void initializeSod()
Kokkos::parallel_for(m_mesh.numberOfCells(), KOKKOS_LAMBDA(const int& j){
m_Sj[j] = std::sin(pi*xj[j][0])*(pi*pi*xj[j][0]-1.) - std::cos(xj[j][0]*pi)*pi;
});
// Conditions aux bords de Dirichlet sur u et k
m_uL[0] = zero;
m_uR[0] = zero;
m_kL[0] = 2.;
m_kR[0] = 2.;
}
......@@ -255,7 +308,12 @@ void initializeSod()
m_mj("mj",m_mesh.numberOfCells()),
m_inv_mj("inv_mj",m_mesh.numberOfCells()),
m_kj("kj",m_mesh.numberOfCells()),
m_Sj("Sj",m_mesh.numberOfCells())
m_Sj("Sj",m_mesh.numberOfCells()),
m_uL("uL", 1),
m_uR("uR", 1),
m_kL("kL", 1),
m_kR("kR", 1)
{
;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment