From 09ac1eab3709009ec359a214fb240f5927a594bd Mon Sep 17 00:00:00 2001
From: Gene Lin <genelin@GenedeMacBook-Air.local>
Date: Sat, 1 Jun 2024 14:39:45 +0800
Subject: [PATCH] set boundary value

---
 cpp/modmesh/onedim/Euler1DCore.cpp | 32 ++++++++++++++++++++++++++++++
 1 file changed, 32 insertions(+)

diff --git a/cpp/modmesh/onedim/Euler1DCore.cpp b/cpp/modmesh/onedim/Euler1DCore.cpp
index 8065d791..7f01614f 100644
--- a/cpp/modmesh/onedim/Euler1DCore.cpp
+++ b/cpp/modmesh/onedim/Euler1DCore.cpp
@@ -170,6 +170,22 @@ void Euler1DCore::treat_boundary_so0()
         m_so0(ic, 1) = m_so0(ic - 1, 1);
         m_so0(ic, 2) = m_so0(ic - 1, 2);
     }
+
+    // Set the boundary point eqaul to the inside point.
+    {
+        // Left boundary.
+        size_t const ic = 0;
+        m_so0(ic, 0) = m_so0(ic + 2, 0);
+        m_so0(ic, 1) = m_so0(ic + 2, 1);
+        m_so0(ic, 2) = m_so0(ic + 2, 2);
+    }
+    {
+        // Right boundary.
+        size_t const ic = ncoord() - 1;
+        m_so0(ic, 0) = m_so0(ic - 2, 0);
+        m_so0(ic, 1) = m_so0(ic - 2, 1);
+        m_so0(ic, 2) = m_so0(ic - 2, 2);
+    }
 }
 
 void Euler1DCore::treat_boundary_so1()
@@ -191,6 +207,22 @@ void Euler1DCore::treat_boundary_so1()
         m_so1(ic, 1) = m_so1(ic - 1, 1);
         m_so1(ic, 2) = m_so1(ic - 1, 2);
     }
+
+    // Set the boundary point eqaul to the inside point.
+    {
+        // Left boundary.
+        size_t const ic = 0;
+        m_so1(ic, 0) = m_so1(ic + 2, 0);
+        m_so1(ic, 1) = m_so1(ic + 2, 1);
+        m_so1(ic, 2) = m_so1(ic + 2, 2);
+    }
+    {
+        // Right boundary.
+        size_t const ic = ncoord() - 1;
+        m_so1(ic, 0) = m_so1(ic - 2, 0);
+        m_so1(ic, 1) = m_so1(ic - 2, 1);
+        m_so1(ic, 2) = m_so1(ic - 2, 2);
+    }
 }
 
 SimpleArray<double> Euler1DCore::temperature() const