Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
93 changes: 93 additions & 0 deletions tests/apps/nektarpp/src/TGV128_conditions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<!-- Taylor Green's problem - Quasi 2D -->
<?xml version="1.0" encoding="utf-8"?>

<NEKTAR>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="9" FIELDS="u,v,w,p" TYPE="MODIFIED" />
</EXPANSIONS>
<FILTERS>
<FILTER TYPE="ModalEnergy">
<PARAM NAME="OutputFile"> TGV128MEnergy </PARAM>
<PARAM NAME="OutputFrequency"> 10 </PARAM>
</FILTER>
<FILTER TYPE="Energy">
<PARAM NAME="OutputFile"> TGV128Energy </PARAM>
<PARAM NAME="OutputFrequency"> 10 </PARAM>
</FILTER>
</FILTERS>
<CONDITIONS>
<SOLVERINFO>
<I PROPERTY="SolverType" VALUE="VelocityCorrectionScheme" />
<I PROPERTY="EqType" VALUE="UnsteadyNavierStokes" />
<I PROPERTY="AdvectionForm" VALUE="Convective" />
<I PROPERTY="Projection" VALUE="Galerkin" />
<I PROPERTY="TimeIntegrationMethod" VALUE="IMEXOrder2" />
<I PROPERTY="Homogeneous" VALUE="1D" />
<!-- <I PROPERTY="UseFFT" VALUE="FFTW" /> -->
<!-- <I PROPERTY="GlobalSysSoln" VALUE="DirectMultiLevelStaticCond" /> -->
<I PROPERTY="GlobalSysSoln" VALUE="XxtMultiLevelStaticCond" />
<I PROPERTY="SpectralHPDealiasing" VALUE="True" />
<I PROPERTY="SpectralVanishingViscosity" VALUE="False" />
</SOLVERINFO>
<PARAMETERS>
<P> TimeStep = 0.005 </P>
<P> FinalTime = 20.0 </P>
<P> NumSteps = FinalTime/TimeStep </P>
<P> IO_CheckSteps = 200 </P>
<P> IO_InfoSteps = 200 </P>
<P> IO_CFLSteps = 50 </P>
<P> Re = 1600 </P>
<P> Kinvis = 1/Re </P>
<P> V0 = 1 </P>
<P> L = 1 </P>
<P> LZ = 2*PI </P>
<P> HomModesZ = 128 </P>
<P> SVVCutoffRatio = 0.7 </P>
<P> SVVDiffCoeff = 0.1 </P>
</PARAMETERS>
<VARIABLES>
<V ID="0"> u </V>
<V ID="1"> v </V>
<V ID="2"> w </V>
<V ID="3"> p </V>
</VARIABLES>
<BOUNDARYREGIONS>
<B ID="0"> C[1] </B>
<B ID="1"> C[2] </B>
<B ID="2"> C[3] </B>
<B ID="3"> C[4] </B>
</BOUNDARYREGIONS>
<BOUNDARYCONDITIONS>
<REGION REF="0">
<P VAR="u" VALUE="[2]" />
<P VAR="v" VALUE="[2]" />
<P VAR="w" VALUE="[2]" />
<P VAR="p" VALUE="[2]" />
</REGION>
<REGION REF="1">
<P VAR="u" VALUE="[3]" />
<P VAR="v" VALUE="[3]" />
<P VAR="w" VALUE="[3]" />
<P VAR="p" VALUE="[3]" />
</REGION>
<REGION REF="2">
<P VAR="u" VALUE="[0]" />
<P VAR="v" VALUE="[0]" />
<P VAR="w" VALUE="[0]" />
<P VAR="p" VALUE="[0]" />
</REGION>
<REGION REF="3">
<P VAR="u" VALUE="[1]" />
<P VAR="v" VALUE="[1]" />
<P VAR="w" VALUE="[1]" />
<P VAR="p" VALUE="[1]" />
</REGION>
</BOUNDARYCONDITIONS>
<FUNCTION NAME="InitialConditions">
<E VAR="u" VALUE="V0 * sin(x/L)*cos(y/L)*cos(z/L)" />
<E VAR="v" VALUE="-1 * V0 * cos(x/L)*sin(y/L)*cos(z/L)" />
<E VAR="w" VALUE="0" />
<E VAR="p" VALUE="0" />
</FUNCTION>
</CONDITIONS>
</NEKTAR>
21 changes: 21 additions & 0 deletions tests/apps/nektarpp/src/TGV128_mesh.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8" ?>
<NEKTAR>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="9" FIELDS="u,v,w,p" TYPE="MODIFIED" />
</EXPANSIONS>
<GEOMETRY DIM="2" SPACE="2">
<VERTEX COMPRESSED="B64Z-LittleEndian" BITSIZE="64">eJx92XmUl1Mcx/E7U1NN+z7TtI49KhEK0Ur2tUgou2TJliURlahsoez7kn3JblDW7FKKsSfF2GVJkjpnuvdzj3ef4/nnOcfr9+35Pvd5z19CWHuVdu4/cGV58ex0j/85FMT7qBkVVRWritbxQni6J6+Bf59eE/PzyruNHVNZKC/CPL0W5of1GNRx9IjVs5LXxjy9DubLqn+3Ql6MeXpdzM+t3m+ZvB7m6fXt+VbJG2Ce3hDzJdVeKW+EeXpjzAdcTTBPb+qf3yt5M/98eXP//vIW/v3lLTEfz1degnl6Kebj95W3wjy9DPOxL3lrzNPbYD723Tt5W8zT22E+3uXtMU/vgPn4O3k55unrxXv6u2Qn68PZ2QZw/n1vCOff70Zw/n1uDOff3yZ2//z31RHOv59N4QHXZn5e37+Tf768s99f3sW/v3xzf37yrnD2tQWc/Wxp9899dIv39N3Yx1Zw9rE1nOe8DZx9dIezjx5w9rGt3T/3sR2cfWwPD7h6+nl9nx388+U7+v3lveDso7c/P3kfOPvoC2cf/ez+uY/+8Z6+C/vYCc4+doazjwFwfodd4OxjVzj72M3un/vYHc4+9oAHXHv6eX2fvfzz5Xv7/eX7+PeX7+vPT74fnH3sD2cfA+3+uY9B8Z7OnX0cAGcfB8LZx2A4+zgIzu80BM4+Drb75z4OgbOPQ+EB11A/r+8zzD9ffpjfX364f3/5Ef785EfC2cdRcPZxtN0/93FMvKdzZR/HwtnHcDj7OA7OPkbA2cfxcH7HE+z+uY8T4ezjJHjANdLP6/uc7J8vP8XvLz/Vv7/8NH9+8tPh7GMUnH2cYffPfZwZ7+nc2MdZcPZxNpx9jIazj3Pg7GMMnH2ca/fP3/k8OPsYCw+4zvfz+j4X+OfLx/n95eP9+8sn+POTXwhnHxPh7OMiu3/u42KcB/uYBGcfk+HsYwqcfVwCZx+XwtnHZXb/3MflcHZwRfj/a6qf1/e50j9ffpXfX341nH1Mg7OP6XD2cQ2cfVxr9899XBfv6b3Zx/Vw9nEDnH3cCGcfN8HZx81w9nGL3T/3cSucfdwGx3GF2/28fneHf778Tr+//C7//vK7/fnJZ8DZxz1w9nGv3T/3cV+8p/diH/fD2ccDcPbxIJx9PARnHw/D2ccjdv/cx6Nw9jETHnA95uf1u8f98+VP+P3lT/r3lz/lz0/+NJx9PANnH8/a/XMfFfGe9mYfz8HZx/Nw9vECnH3MgrOP2XD28aLdP/fxEpx9vAwPuF7x8/rdq/758tf8/vI5/v3lr/vzk78BZx9vwtnHW3b/3Mfb8Z72Yh/vwNnHu3D28R6cfcyFs4/34exjnt0/9zEfzj4+gAdcC/y8frfQP1/+od9f/pF/f3mlPz/5x3D28QmcfXxq9899fBbv6bns43M4+/gCzj6+hLOPRXD28RWcfSy2++c+voazjyXwgGupn9fvvvHPl3/r95dX+feXf+fPT/49nH38AGcfP9r9cx8/xXv6d9nHz3D28QucffwKZx/L4OzjNzj7+N3un/v4A84+/oQHXMv9vL7PX/758hV+f/nf/v3lK/35yf+B8z1WwdnHv3b/3MfqeE9z6/x/3IL/OvsogLOPQjj7qAFnHzXh7KMIzj5qwdlHbXjAVcfP6/sU++fL6/r95fX8+8vr+/OTN/Dnr/do6L+fvJHdP/fROHr67+yjCZx9NIWzj2Zw9tEczj5awNlHS7t/7qMEzj5K4QFXKz+v71Pmny9v7feXt/HvL2/rz0/ezp+/3qO9/37yDv77y9cA/cI15gAA</VERTEX>
<EDGE COMPRESSED="B64Z-LittleEndian" BITSIZE="64">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</EDGE>
<ELEMENT>
<Q COMPRESSED="B64Z-LittleEndian" BITSIZE="64">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</Q>
</ELEMENT>
<COMPOSITE>
<C ID="0"> Q[0-255] </C>
<C ID="1"> E[0,49,82,115,148,181,214,247,280,313,346,379,412,445,478,511] </C>
<C ID="2"> E[512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542] </C>
<C ID="3"> E[47,81,114,147,180,213,246,279,312,345,378,411,444,477,510,543] </C>
<C ID="4"> E[3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48] </C>
</COMPOSITE>
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
</NEKTAR>
80 changes: 59 additions & 21 deletions tests/apps/nektarpp/test_module_nektarpp.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,44 +11,28 @@
import reframe.utility.sanity as sn


@rfm.simple_test
class TestModuleNektarpluslus(rfm.RunOnlyRegressionTest):
"""Nektarplusplus Test"""
class TestModuleNektarplusplusBase(rfm.RunOnlyRegressionTest):
"""Nektarplusplus Test Base"""

descr = "Test Nektarplusplus"
descr = "Test Nektarplusplus Base"

valid_systems = ["archer2:compute"]
valid_prog_environs = ["PrgEnv-cray"]

tags = {"performance", "applications"}

keep_files = ["rfm_job.out"]

reference = {
"archer2:compute": {
"Computationtime": (953.0, -0.1, 0.1, "seconds"),
},
}

num_nodes = 1
num_tasks_per_node = 1
num_cpus_per_task = 1
num_tasks = num_nodes * num_tasks_per_node * num_cpus_per_task

time_limit = "2h"

modules = ["cpe/22.12", "nektar/5.5.0"]

env_vars = {"CRAY_ADD_RPATH": "yes"}

keep_files = ["rfm_job.out"]

@run_before("run")
def prepare_run(self):
"""Setup test execution"""

self.executable = "IncNavierStokesSolver"

self.executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"]

@sanity_function
def assert_finished(self):
"""Sanity check that simulation finished successfully"""
Expand All @@ -67,3 +51,57 @@ def extract_perf(self):
"Comptime",
float,
)


@rfm.simple_test
class TestModuleNektarplusplusSerial(TestModuleNektarplusplusBase):
"""Module Nektarplusplus Test Serial"""

descr = "Test Module Nektarplusplus Serial"

num_nodes = 1
num_tasks_per_node = 1
num_cpus_per_task = 1
num_tasks = num_nodes * num_tasks_per_node

time_limit = "20m"

executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}}


@rfm.simple_test
class TestModuleNektarplusplusParallel(TestModuleNektarplusplusBase):
"""Module Nektarplusplus Test Parallel"""

descr = "Test Module Nektarplusplus Parallel"

num_nodes = 1
num_tasks_per_node = 32
num_cpus_per_task = 4
num_tasks = num_nodes * num_tasks_per_node

time_limit = "1h"

executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}}


@rfm.simple_test
class TestModuleNektarplusplusMultiNode(TestModuleNektarplusplusBase):
"""Module Nektarplusplus Test Multi Node"""

descr = "Test Module Nektarplusplus Multi Node"

num_nodes = 1
num_tasks_per_node = 32
num_cpus_per_task = 4
num_tasks = num_nodes * num_tasks_per_node

time_limit = "1h"

executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}}
95 changes: 68 additions & 27 deletions tests/apps/nektarpp/test_nektarpp.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,19 @@
import reframe.utility.sanity as sn


NEKTAR_VERSION = "5.5.0"
NEKTAR_LABEL = "nektar"
NEKTAR_ARCHIVE = f"{NEKTAR_LABEL}-v{NEKTAR_VERSION}.tar.gz"
NEKTAR_NAME = f"{NEKTAR_LABEL}-{NEKTAR_VERSION}"


class FetchNektarplusplus(rfm.RunOnlyRegressionTest):
"""Test access to nektarplusplus source code"""

descr = "Fetch Nektarplusplus"
nektar_version = "5.5.0"
nektar_label = "nektar"
nektar_archive = f"{nektar_label}-v{nektar_version}.tar.gz"
nektar_name = f"{nektar_label}-{nektar_version}"
version = variable(str, value=nektar_version)
version = variable(str, value=NEKTAR_VERSION)
executable = "wget"
executable_opts = [f"https://gitlab.nektar.info/nektar/nektar/-/archive/v{nektar_version}/{nektar_archive}"]
executable_opts = [f"https://gitlab.nektar.info/nektar/nektar/-/archive/v{NEKTAR_VERSION}/{NEKTAR_ARCHIVE}"]
local = True
valid_systems = ["archer2:login"]
valid_prog_environs = ["PrgEnv-cray"]
Expand Down Expand Up @@ -54,32 +56,28 @@ class CompileNektarplusplus(rfm.CompileOnlyRegressionTest):
@run_before("compile")
def prepare_build(self):
"""Prepare environment for build"""
nektar_version = "5.5.0"
nektar_label = "nektar"
nektar_name = f"{nektar_label}-v{nektar_version}"
nektar_archive = f"{nektar_label}-v{nektar_version}.tar.gz"
tarball = f"{nektar_archive}"
self.build_prefix = f"{nektar_name}"
tarball = f"{NEKTAR_ARCHIVE}"
self.build_prefix = f"{NEKTAR_NAME}"

fullpath = os.path.join(self.fetch_nektarpp.stagedir, tarball)

self.prebuild_cmds = [
f"cp {fullpath} {self.stagedir}",
f"tar xzf {tarball}",
f"mv {NEKTAR_LABEL}-v{NEKTAR_VERSION} {self.build_prefix}",
f"cd {self.build_prefix}",
f"source ../cmake_nektarpp.sh {nektar_label}",
f"source ../cmake_nektarpp.sh {NEKTAR_LABEL}",
]
self.build_system.max_concurrency = 8
self.build_system.options = ["install"]

@sanity_function
def validate_compile(self):
"""Validate compilation by checking existance of binary"""
return sn.path_isfile("nektar-v5.5.0/build/nektar/bin/IncNavierStokesSolver")
return sn.path_isfile(f"{NEKTAR_NAME}/build/nektar/bin/IncNavierStokesSolver")


@rfm.simple_test
class TestNektarpluslus(rfm.RunOnlyRegressionTest):
class TestNektarplusplusBase(rfm.RunOnlyRegressionTest):
"""Nektarplusplus Test"""

descr = "Test Nektarplusplus"
Expand All @@ -95,19 +93,8 @@ class TestNektarpluslus(rfm.RunOnlyRegressionTest):

env_vars = {"CRAY_ADD_RPATH": "yes"}

num_nodes = 1
num_tasks_per_node = 1
num_cpus_per_task = 1
num_tasks = num_nodes * num_tasks_per_node * num_cpus_per_task

time_limit = "20m"

keep_files = ["rfm_job.out"]

executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}}

@run_before("run")
def prepare_run(self):
"""set up job execution"""
Expand Down Expand Up @@ -138,3 +125,57 @@ def extract_perf(self):
"Comptime",
float,
)


@rfm.simple_test
class TestNektarpluslusSerial(TestNektarplusplusBase):
"""Nektarplusplus Test Serial"""

descr = "Test Nektarplusplus Serial"

num_nodes = 1
num_tasks_per_node = 1
num_cpus_per_task = 1
num_tasks = num_nodes * num_tasks_per_node

time_limit = "20m"

executable_opts = ["TGV64_mesh.xml TGV64_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (953, -0.1, 0.1, "seconds")}}


@rfm.simple_test
class TestNektarpluslusParallel(TestNektarplusplusBase):
"""Nektarplusplus Test Parallel"""

descr = "Test Nektarplusplus Parallel"

num_nodes = 1
num_tasks_per_node = 32
num_cpus_per_task = 4
num_tasks = num_nodes * num_tasks_per_node

time_limit = "1h"

executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}}


@rfm.simple_test
class TestNektarpluslusMultiNode(TestNektarplusplusBase):
"""Nektarplusplus Test Multi Node"""

descr = "Test Nektarplusplus Multi Node"

num_nodes = 4
num_tasks_per_node = 8
num_cpus_per_task = 16
num_tasks = num_nodes * num_tasks_per_node

time_limit = "1h"

executable_opts = ["TGV128_mesh.xml TGV128_conditions.xml"]

reference = {"archer2:compute": {"Computationtime": (1570, -0.1, 0.1, "seconds")}}