Skip to content

[Stagging PR] solvergraph testing #952

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 50 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
62b0801
dag v2 start
tdavidcl May 4, 2025
e83a216
cleaner dot
tdavidcl May 4, 2025
2300620
implement a dumb looper
tdavidcl May 5, 2025
7ec4e4d
move to shamrock/solvergraph
tdavidcl May 6, 2025
c02d4b7
clean API
tdavidcl May 6, 2025
83d6069
even cleaner clean API
tdavidcl May 6, 2025
a4c9b99
working base on ConsToPrim
tdavidcl May 6, 2025
07541ef
add ensure size
tdavidcl May 6, 2025
16eaae8
add some stuff to the tex exemple
tdavidcl May 7, 2025
7ed4f34
improve tex again
tdavidcl May 7, 2025
942fa8d
move ConsToPrimGas to separate file
tdavidcl May 7, 2025
4bce5a2
even better
tdavidcl May 7, 2025
05c9d8a
move dd diff function to DistributedData.hpp
tdavidcl May 7, 2025
867a3df
Merge branch 'main' into feat/dag-v2
tdavidcl May 7, 2025
b2343c7
doc
tdavidcl May 7, 2025
d92c4ba
Merge branch 'main' into feat/dag-v2
tdavidcl May 7, 2025
2ca03ea
move IDataEdgeNamed
tdavidcl May 8, 2025
1c8f9e8
const qualify get tex and dot
tdavidcl May 8, 2025
adb6881
allow const-ness of DistributedData in kernel call
tdavidcl May 8, 2025
1950d58
make read only edges const
tdavidcl May 8, 2025
c8b7686
Merge branch 'main' into feat/dag-v2
tdavidcl May 8, 2025
0fbc72c
Merge branch 'main' into feat/dag-v2
tdavidcl May 9, 2025
07bb086
migrate Cons to prim dust
tdavidcl May 9, 2025
970f197
remove old routine
tdavidcl May 9, 2025
cd69575
migrate cons to prim to solvergraph
tdavidcl May 9, 2025
26608ba
split some headers
tdavidcl May 9, 2025
83ae7e4
remove cons to prim
tdavidcl May 9, 2025
82c3da5
includes cleanup
tdavidcl May 9, 2025
07c902c
populate the spans in basic ghost instead
tdavidcl May 9, 2025
5a3ae50
attach coord ghost spans
tdavidcl May 9, 2025
6591c50
compute cell aabb node
tdavidcl May 9, 2025
c23d159
[SolverGraph] add shamrock solvergraph API to compose modules
tdavidcl May 9, 2025
7a98b67
[Ramses] Migrate ConsToPrim to use solvergraph
tdavidcl May 9, 2025
7861c1a
move spans to solver storage
tdavidcl May 9, 2025
5bbe185
remove extra print
tdavidcl May 9, 2025
58c322f
move spans creation to ghost zones
tdavidcl May 9, 2025
2fbbf29
move new field to storage
tdavidcl May 9, 2025
ea87e4b
Merge branch 'main' into feat/dag-v2
tdavidcl May 9, 2025
bd84e04
Merge branch 'main' into feat/move-fieldedge-to-storage
tdavidcl May 9, 2025
98cc968
[Ramses] replace ConsToPrim by solvergraph modules
tdavidcl May 9, 2025
1c956d1
fix godunov test
tdavidcl May 9, 2025
6307c35
Merge branch 'feat/remove-cons-to-prim' into feat/dag-v2
tdavidcl May 9, 2025
cc8fa5e
ghost zones output fields should be refs instead of spans
tdavidcl May 10, 2025
6eb65ed
Merge branch 'main' into feat/dag-v2
tdavidcl May 10, 2025
292ac08
clean the api
tdavidcl May 10, 2025
e0ad983
fix
tdavidcl May 11, 2025
1a84455
sync
tdavidcl May 11, 2025
059eb24
migrate amr tree
tdavidcl May 11, 2025
7c50b43
wrap up the new amr tree node
tdavidcl May 11, 2025
e6aee5e
add correct bounding box
tdavidcl May 11, 2025
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
2 changes: 1 addition & 1 deletion exemples/ci_tests/sod_tube_godunov.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ def rhovel_map(rmin, rmax):
### Plot
#################
# do plot or not
if False:
if True:

def convert_to_cell_coords(dic):

Expand Down
5 changes: 4 additions & 1 deletion src/shammodels/ramses/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,10 @@ set(Sources
src/modules/GhostZones.cpp
src/modules/AMRSortBlocks.cpp
src/modules/ComputeCFL.cpp
src/modules/ConsToPrim.cpp
src/modules/ConsToPrimGas.cpp
src/modules/ConsToPrimDust.cpp
src/modules/ComputeCellAABB.cpp
src/modules/NodeBuildTrees.cpp
src/modules/StencilGenerator.cpp
)

Expand Down
2 changes: 2 additions & 0 deletions src/shammodels/ramses/include/shammodels/ramses/Solver.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,8 @@ namespace shammodels::basegodunov {

return true;
}

void init_solver_graph();
};

} // namespace shammodels::basegodunov
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
// -------------------------------------------------------//
//
// SHAMROCK code for hydrodynamics
// Copyright (c) 2021-2024 Timothée David--Cléris <[email protected]>
// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
//
// -------------------------------------------------------//

#pragma once

/**
* @file ComputeCellAABB.hpp
* @author Timothée David--Cléris ([email protected])
* @brief
*
*/

#include "shambackends/vec.hpp"
#include "shamrock/solvergraph/FieldSpan.hpp"
#include "shamrock/solvergraph/INode.hpp"
#include "shamrock/solvergraph/Indexes.hpp"

namespace shammodels::basegodunov::modules {

template<class Tvec, class TgridVec>
class NodeComputeCellAABB : public shamrock::solvergraph::INode {
using Tscal = shambase::VecComponent<Tvec>;
u32 block_nside;
Tscal grid_coord_to_pos_fact;

public:
NodeComputeCellAABB(u32 block_nside, Tscal grid_coord_to_pos_fact)
: block_nside(block_nside), grid_coord_to_pos_fact(grid_coord_to_pos_fact) {}

struct Edges {
const shamrock::solvergraph::Indexes<u32> &sizes;
const shamrock::solvergraph::FieldSpan<TgridVec> &spans_block_min;
const shamrock::solvergraph::FieldSpan<TgridVec> &spans_block_max;
shamrock::solvergraph::FieldSpan<Tscal> &spans_block_cell_sizes;
shamrock::solvergraph::FieldSpan<Tvec> &spans_cell0block_aabb_lower;
};

inline void set_edges(
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> sizes,
std::shared_ptr<shamrock::solvergraph::FieldSpan<TgridVec>> spans_block_min,
std::shared_ptr<shamrock::solvergraph::FieldSpan<TgridVec>> spans_block_max,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tscal>> spans_block_cell_sizes,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tvec>> spans_cell0block_aabb_lower) {
__internal_set_ro_edges({sizes, spans_block_min, spans_block_max});
__internal_set_rw_edges({spans_block_cell_sizes, spans_cell0block_aabb_lower});
}

inline Edges get_edges() {
return Edges{
get_ro_edge<shamrock::solvergraph::Indexes<u32>>(0),
get_ro_edge<shamrock::solvergraph::FieldSpan<TgridVec>>(1),
get_ro_edge<shamrock::solvergraph::FieldSpan<TgridVec>>(2),
get_rw_edge<shamrock::solvergraph::FieldSpan<Tscal>>(0),
get_rw_edge<shamrock::solvergraph::FieldSpan<Tvec>>(1),
};
}

void _impl_evaluate_internal();

inline void _impl_reset_internal() {}

inline virtual std::string _impl_get_label() { return "ComputeCellAABB"; };

virtual std::string _impl_get_tex();
};
} // namespace shammodels::basegodunov::modules

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
// -------------------------------------------------------//
//
// SHAMROCK code for hydrodynamics
// Copyright (c) 2021-2024 Timothée David--Cléris <[email protected]>
// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
//
// -------------------------------------------------------//

#pragma once

/**
* @file ConsToPrimDust.hpp
* @author Timothée David--Cléris ([email protected])
* @brief Field variant object to instanciate a variant on the patch types
* @date 2023-07-31
*/

#include "shambackends/vec.hpp"
#include "shamrock/solvergraph/FieldSpan.hpp"
#include "shamrock/solvergraph/INode.hpp"
#include "shamrock/solvergraph/Indexes.hpp"

namespace shammodels::basegodunov::modules {
template<class Tvec>
class NodeConsToPrimDust : public shamrock::solvergraph::INode {
using Tscal = shambase::VecComponent<Tvec>;
u32 block_size;
u32 ndust;

public:
NodeConsToPrimDust(u32 block_size, u32 ndust) : block_size(block_size), ndust(ndust) {}

struct Edges {
const shamrock::solvergraph::Indexes<u32> &sizes;
const shamrock::solvergraph::FieldSpan<Tscal> &spans_rho_dust;
const shamrock::solvergraph::FieldSpan<Tvec> &spans_rhov_dust;
shamrock::solvergraph::FieldSpan<Tvec> &spans_vel_dust;
};

inline void set_edges(
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> sizes,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tscal>> spans_rho_dust,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tvec>> spans_rhov_dust,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tvec>> spans_vel_dust) {
__internal_set_ro_edges({sizes, spans_rho_dust, spans_rhov_dust});
__internal_set_rw_edges({spans_vel_dust});
}

inline Edges get_edges() {
return Edges{
get_ro_edge<shamrock::solvergraph::Indexes<u32>>(0),
get_ro_edge<shamrock::solvergraph::FieldSpan<Tscal>>(1),
get_ro_edge<shamrock::solvergraph::FieldSpan<Tvec>>(2),
get_rw_edge<shamrock::solvergraph::FieldSpan<Tvec>>(0),
};
}

void _impl_evaluate_internal();

inline void _impl_reset_internal() {}

inline virtual std::string _impl_get_label() { return "ConsToPrimDust"; };

virtual std::string _impl_get_tex();
};
} // namespace shammodels::basegodunov::modules
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// -------------------------------------------------------//
//
// SHAMROCK code for hydrodynamics
// Copyright (c) 2021-2024 Timothée David--Cléris <[email protected]>
// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
//
// -------------------------------------------------------//

#pragma once

/**
* @file ConsToPrimGas.hpp
* @author Timothée David--Cléris ([email protected])
* @brief Field variant object to instanciate a variant on the patch types
* @date 2023-07-31
*/

#include "shambackends/vec.hpp"
#include "shamrock/solvergraph/FieldSpan.hpp"
#include "shamrock/solvergraph/INode.hpp"
#include "shamrock/solvergraph/Indexes.hpp"

namespace shammodels::basegodunov::modules {
template<class Tvec>
class NodeConsToPrimGas : public shamrock::solvergraph::INode {
using Tscal = shambase::VecComponent<Tvec>;
u32 block_size;
Tscal gamma;

public:
NodeConsToPrimGas(u32 block_size, Tscal gamma) : block_size(block_size), gamma(gamma) {}

struct Edges {
const shamrock::solvergraph::Indexes<u32> &sizes;
const shamrock::solvergraph::FieldSpan<Tscal> &spans_rho;
const shamrock::solvergraph::FieldSpan<Tvec> &spans_rhov;
const shamrock::solvergraph::FieldSpan<Tscal> &spans_rhoe;
shamrock::solvergraph::FieldSpan<Tvec> &spans_vel;
shamrock::solvergraph::FieldSpan<Tscal> &spans_P;
};

inline void set_edges(
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> sizes,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tscal>> spans_rho,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tvec>> spans_rhov,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tscal>> spans_rhoe,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tvec>> spans_vel,
std::shared_ptr<shamrock::solvergraph::FieldSpan<Tscal>> spans_P) {
__internal_set_ro_edges({sizes, spans_rho, spans_rhov, spans_rhoe});
__internal_set_rw_edges({spans_vel, spans_P});
}

inline Edges get_edges() {
return Edges{
get_ro_edge<shamrock::solvergraph::Indexes<u32>>(0),
get_ro_edge<shamrock::solvergraph::FieldSpan<Tscal>>(1),
get_ro_edge<shamrock::solvergraph::FieldSpan<Tvec>>(2),
get_ro_edge<shamrock::solvergraph::FieldSpan<Tscal>>(3),
get_rw_edge<shamrock::solvergraph::FieldSpan<Tvec>>(0),
get_rw_edge<shamrock::solvergraph::FieldSpan<Tscal>>(1),
};
}

void _impl_evaluate_internal();

inline void _impl_reset_internal() {}

inline virtual std::string _impl_get_label() { return "ConsToPrimGas"; };

virtual std::string _impl_get_tex();
};
} // namespace shammodels::basegodunov::modules
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
// -------------------------------------------------------//
//
// SHAMROCK code for hydrodynamics
// Copyright (c) 2021-2024 Timothée David--Cléris <[email protected]>
// SPDX-License-Identifier: CeCILL Free Software License Agreement v2.1
// Shamrock is licensed under the CeCILL 2.1 License, see LICENSE for more information
//
// -------------------------------------------------------//

#pragma once

/**
* @file NodeBuildTrees.hpp
* @author Timothée David--Cléris ([email protected])
* @brief
*
*/

#include "shammodels/ramses/solvegraph/TreeEdge.hpp"
#include "shamrock/solvergraph/FieldRefs.hpp"
#include "shamrock/solvergraph/INode.hpp"
#include "shamrock/solvergraph/Indexes.hpp"
#include "shamtree/RadixTree.hpp"

namespace shammodels::basegodunov::modules {

template<class Umorton, class TgridVec>
class NodeBuildTrees : public shamrock::solvergraph::INode {

u32 reduction_level = 0;

using RTree = RadixTree<Umorton, TgridVec>;

public:
NodeBuildTrees() {}

struct Edges {
const shamrock::solvergraph::Indexes<u32> &sizes;
const shamrock::solvergraph::FieldRefs<TgridVec> &block_min;
const shamrock::solvergraph::FieldRefs<TgridVec> &block_max;
solvergraph::TreeEdge<Umorton, TgridVec> &trees;
};

inline void set_edges(
std::shared_ptr<shamrock::solvergraph::Indexes<u32>> sizes,
std::shared_ptr<shamrock::solvergraph::FieldRefs<TgridVec>> block_min,
std::shared_ptr<shamrock::solvergraph::FieldRefs<TgridVec>> block_max,
std::shared_ptr<solvergraph::TreeEdge<Umorton, TgridVec>> trees) {
__internal_set_ro_edges({sizes, block_min, block_max});
__internal_set_rw_edges({trees});
}

inline Edges get_edges() {
return Edges{
get_ro_edge<shamrock::solvergraph::Indexes<u32>>(0),
get_ro_edge<shamrock::solvergraph::FieldRefs<TgridVec>>(1),
get_ro_edge<shamrock::solvergraph::FieldRefs<TgridVec>>(2),
get_rw_edge<solvergraph::TreeEdge<Umorton, TgridVec>>(0)};
}

void _impl_evaluate_internal();

void _impl_reset_internal() {};

inline virtual std::string _impl_get_label() { return "BuildTrees"; };

virtual std::string _impl_get_tex();
};

} // namespace shammodels::basegodunov::modules
Loading
Loading