Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
blegouix committed Dec 29, 2024
1 parent 66038a1 commit eedd55f
Show file tree
Hide file tree
Showing 12 changed files with 127 additions and 151 deletions.
2 changes: 0 additions & 2 deletions .devnote
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
- Tensor indexes should be template with TensorNatIndex
- Consider removing metric_prod_t (and every helper producing a tensor). At least, standardize API.
- Relabelizion in different file ?
- Rename TensorCovariantTensorIndex -> Covariant
- Streams in Laplacian
- else if constexpr

----- SETUP BASIC COMMAND -----

Expand Down
10 changes: 5 additions & 5 deletions examples/2d_laplacian.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ struct Y

// Declare a metric
using MetricIndex = sil::tensor::TensorSymmetricIndex<
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex1<X, Y>>,
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex2<X, Y>>>;
sil::tensor::Covariant<sil::tensor::MetricIndex1<X, Y>>,
sil::tensor::Covariant<sil::tensor::MetricIndex2<X, Y>>>;

using MesherXY = sil::mesher::Mesher<s_degree, X, Y>;

Expand All @@ -114,10 +114,10 @@ struct Nu : sil::tensor::TensorNaturalIndex<X, Y>
};

// Declare indices
using NuLow = sil::tensor::TensorCovariantNaturalIndex<Nu>;
using NuUp = sil::tensor::TensorContravariantNaturalIndex<Nu>;
using NuLow = sil::tensor::Covariant<Nu>;
using NuUp = sil::tensor::Contravariant<Nu>;

using DummyIndex = sil::tensor::TensorCovariantNaturalIndex<sil::tensor::ScalarIndex>;
using DummyIndex = sil::tensor::Covariant<sil::tensor::ScalarIndex>;

int main(int argc, char** argv)
{
Expand Down
12 changes: 6 additions & 6 deletions examples/2d_vector_laplacian.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -87,8 +87,8 @@ struct Y

// Declare a metric
using MetricIndex = sil::tensor::TensorSymmetricIndex<
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex1<X, Y>>,
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex2<X, Y>>>;
sil::tensor::Covariant<sil::tensor::MetricIndex1<X, Y>>,
sil::tensor::Covariant<sil::tensor::MetricIndex2<X, Y>>>;

using MesherXY = sil::mesher::Mesher<s_degree, X, Y>;

Expand Down Expand Up @@ -118,10 +118,10 @@ struct Nu : sil::tensor::TensorNaturalIndex<X, Y>
};

// Declare indices
using MuUp = sil::tensor::TensorContravariantNaturalIndex<Mu>;
using MuLow = sil::tensor::TensorCovariantNaturalIndex<Mu>;
using NuUp = sil::tensor::TensorContravariantNaturalIndex<Nu>;
using NuLow = sil::tensor::TensorCovariantNaturalIndex<Nu>;
using MuUp = sil::tensor::Contravariant<Mu>;
using MuLow = sil::tensor::Covariant<Mu>;
using NuUp = sil::tensor::Contravariant<Nu>;
using NuLow = sil::tensor::Covariant<Nu>;

int main(int argc, char** argv)
{
Expand Down
12 changes: 6 additions & 6 deletions examples/kretschmann_scalar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@ struct Z
// Declare the Minkowski metric as a Lorentzian signature (-, +, +, +)
using MetricIndex = sil::tensor::TensorLorentzianSignIndex<
std::integral_constant<std::size_t, 1>,
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex1<T, X, Y, Z>>,
sil::tensor::TensorCovariantNaturalIndex<sil::tensor::MetricIndex2<T, X, Y, Z>>>;
sil::tensor::Covariant<sil::tensor::MetricIndex1<T, X, Y, Z>>,
sil::tensor::Covariant<sil::tensor::MetricIndex2<T, X, Y, Z>>>;

// Declare natural indices taking values in {T, X, Y, Z}
struct Mu : sil::tensor::TensorNaturalIndex<T, X, Y, Z>
Expand All @@ -52,10 +52,10 @@ struct Sigma : sil::tensor::TensorNaturalIndex<T, X, Y, Z>
};

// Declare upper (contravariant) indices
using MuUp = sil::tensor::TensorContravariantNaturalIndex<Mu>;
using NuUp = sil::tensor::TensorContravariantNaturalIndex<Nu>;
using RhoUp = sil::tensor::TensorContravariantNaturalIndex<Rho>;
using SigmaUp = sil::tensor::TensorContravariantNaturalIndex<Sigma>;
using MuUp = sil::tensor::Contravariant<Mu>;
using NuUp = sil::tensor::Contravariant<Nu>;
using RhoUp = sil::tensor::Contravariant<Rho>;
using SigmaUp = sil::tensor::Contravariant<Sigma>;

// Declare also their covariant counterparts
using MuLow = sil::tensor::lower<MuUp>;
Expand Down
5 changes: 2 additions & 3 deletions include/similie/exterior/codifferential.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ template <tensor::TensorNatIndex TagToRemoveFromCochain, tensor::TensorNatIndex
requires(CochainTag::rank() == 1 && std::is_same_v<TagToRemoveFromCochain, CochainTag>)
struct CodifferentialIndex<TagToRemoveFromCochain, CochainTag>
{
using type = tensor::TensorCovariantNaturalIndex<tensor::ScalarIndex>;
using type = tensor::Covariant<tensor::ScalarIndex>;
};

template <tensor::TensorNatIndex TagToRemoveFromCochain, tensor::TensorNatIndex Tag>
Expand Down Expand Up @@ -135,8 +135,7 @@ struct CodifferentialDummyIndexSeq_;
template <std::size_t... Id, class T>
struct CodifferentialDummyIndexSeq_<std::index_sequence<Id...>, T>
{
using type = ddc::detail::TypeSeq<
tensor::TensorCovariantNaturalIndex<CodifferentialDummyIndex<Id, T>>...>;
using type = ddc::detail::TypeSeq<tensor::Covariant<CodifferentialDummyIndex<Id, T>>...>;
};

template <std::size_t EndId, class T>
Expand Down
2 changes: 1 addition & 1 deletion include/similie/exterior/laplacian.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ TensorType laplacian(
MetricType inv_metric)
{
static_assert(tensor::is_covariant_v<LaplacianDummyIndex>);
using LaplacianDummyIndex2 = tensor::TensorCovariantNaturalIndex<
using LaplacianDummyIndex2 = tensor::Covariant<
detail::LaplacianDummy2<tensor::uncharacterize<LaplacianDummyIndex>>>;

if constexpr (CochainTag::rank() == 0) {
Expand Down
50 changes: 24 additions & 26 deletions include/similie/tensor/character.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,14 +35,14 @@ struct TensorNaturalIndexFromTypeSeqDim<ddc::detail::TypeSeq<CDim...>>

// struct representing an index mu or nu in a tensor Tmunu.
template <TensorNatIndex NaturalIndex>
struct TensorCovariantNaturalIndex
struct Covariant
: detail::TensorNaturalIndexFromTypeSeqDim<typename NaturalIndex::type_seq_dimensions>::type
{
using character = Covariant;
};

template <TensorNatIndex NaturalIndex>
struct TensorContravariantNaturalIndex
struct Contravariant
: detail::TensorNaturalIndexFromTypeSeqDim<typename NaturalIndex::type_seq_dimensions>::type
{
using character = Contravariant;
Expand All @@ -55,15 +55,15 @@ template <class Index>
struct Lower;

template <TensorNatIndex NaturalIndex>
struct Lower<TensorCovariantNaturalIndex<NaturalIndex>>
struct Lower<Covariant<NaturalIndex>>
{
using type = TensorCovariantNaturalIndex<NaturalIndex>;
using type = Covariant<NaturalIndex>;
};

template <TensorNatIndex NaturalIndex>
struct Lower<TensorContravariantNaturalIndex<NaturalIndex>>
struct Lower<Contravariant<NaturalIndex>>
{
using type = TensorCovariantNaturalIndex<NaturalIndex>;
using type = Covariant<NaturalIndex>;
};

template <template <TensorIndex...> class T, TensorIndex... Index>
Expand All @@ -83,15 +83,15 @@ template <class Index>
struct Upper;

template <TensorNatIndex NaturalIndex>
struct Upper<TensorCovariantNaturalIndex<NaturalIndex>>
struct Upper<Covariant<NaturalIndex>>
{
using type = TensorContravariantNaturalIndex<NaturalIndex>;
using type = Contravariant<NaturalIndex>;
};

template <TensorNatIndex NaturalIndex>
struct Upper<TensorContravariantNaturalIndex<NaturalIndex>>
struct Upper<Contravariant<NaturalIndex>>
{
using type = TensorContravariantNaturalIndex<NaturalIndex>;
using type = Contravariant<NaturalIndex>;
};

template <template <TensorIndex...> class T, TensorIndex... Index>
Expand All @@ -111,15 +111,15 @@ template <class Index>
struct SwapCharacter;

template <TensorNatIndex NaturalIndex>
struct SwapCharacter<TensorCovariantNaturalIndex<NaturalIndex>>
struct SwapCharacter<Covariant<NaturalIndex>>
{
using type = TensorContravariantNaturalIndex<NaturalIndex>;
using type = Contravariant<NaturalIndex>;
};

template <TensorNatIndex NaturalIndex>
struct SwapCharacter<TensorContravariantNaturalIndex<NaturalIndex>>
struct SwapCharacter<Contravariant<NaturalIndex>>
{
using type = TensorCovariantNaturalIndex<NaturalIndex>;
using type = Covariant<NaturalIndex>;
};

template <template <TensorIndex...> class T, TensorIndex... Index>
Expand All @@ -139,13 +139,13 @@ template <class Index>
struct Uncharacterize;

template <class NaturalIndex>
struct Uncharacterize<TensorCovariantNaturalIndex<NaturalIndex>>
struct Uncharacterize<Covariant<NaturalIndex>>
{
using type = NaturalIndex;
};

template <class NaturalIndex>
struct Uncharacterize<TensorContravariantNaturalIndex<NaturalIndex>>
struct Uncharacterize<Contravariant<NaturalIndex>>
{
using type = NaturalIndex;
};
Expand Down Expand Up @@ -195,13 +195,13 @@ template <TensorNatIndex Index>
struct IsCovariant;

template <TensorNatIndex Index>
struct IsCovariant<TensorCovariantNaturalIndex<Index>>
struct IsCovariant<Covariant<Index>>
{
static constexpr bool value = true;
};

template <TensorNatIndex Index>
struct IsCovariant<TensorContravariantNaturalIndex<Index>>
struct IsCovariant<Contravariant<Index>>
{
static constexpr bool value = false;
};
Expand Down Expand Up @@ -234,13 +234,13 @@ template <TensorNatIndex Index>
struct IsContravariant;

template <TensorNatIndex Index>
struct IsContravariant<TensorCovariantNaturalIndex<Index>>
struct IsContravariant<Covariant<Index>>
{
static constexpr bool value = false;
};

template <TensorNatIndex Index>
struct IsContravariant<TensorContravariantNaturalIndex<Index>>
struct IsContravariant<Contravariant<Index>>
{
static constexpr bool value = true;
};
Expand Down Expand Up @@ -273,27 +273,25 @@ template <TensorNatIndex Index1, TensorNatIndex Index2>
struct IsSameCharacter;

template <TensorNatIndex Index1, TensorNatIndex Index2>
struct IsSameCharacter<TensorCovariantNaturalIndex<Index1>, TensorCovariantNaturalIndex<Index2>>
struct IsSameCharacter<Covariant<Index1>, Covariant<Index2>>
{
static constexpr bool value = true;
};

template <TensorNatIndex Index1, TensorNatIndex Index2>
struct IsSameCharacter<TensorContravariantNaturalIndex<Index1>, TensorCovariantNaturalIndex<Index2>>
struct IsSameCharacter<Contravariant<Index1>, Covariant<Index2>>
{
static constexpr bool value = false;
};

template <TensorNatIndex Index1, TensorNatIndex Index2>
struct IsSameCharacter<TensorCovariantNaturalIndex<Index1>, TensorContravariantNaturalIndex<Index2>>
struct IsSameCharacter<Covariant<Index1>, Contravariant<Index2>>
{
static constexpr bool value = false;
};

template <TensorNatIndex Index1, TensorNatIndex Index2>
struct IsSameCharacter<
TensorContravariantNaturalIndex<Index1>,
TensorContravariantNaturalIndex<Index2>>
struct IsSameCharacter<Contravariant<Index1>, Contravariant<Index2>>
{
static constexpr bool value = true;
};
Expand Down
8 changes: 4 additions & 4 deletions include/similie/tensor/prime.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -33,15 +33,15 @@ struct Primes<ddc::detail::TypeSeq<Index...>, I>
};

template <class... Index, std::size_t I>
struct Primes<ddc::detail::TypeSeq<TensorContravariantNaturalIndex<Index>...>, I>
struct Primes<ddc::detail::TypeSeq<Contravariant<Index>...>, I>
{
using type = ddc::detail::TypeSeq<TensorContravariantNaturalIndex<prime<Index, I>>...>;
using type = ddc::detail::TypeSeq<Contravariant<prime<Index, I>>...>;
};

template <class... Index, std::size_t I>
struct Primes<ddc::detail::TypeSeq<TensorCovariantNaturalIndex<Index>...>, I>
struct Primes<ddc::detail::TypeSeq<Covariant<Index>...>, I>
{
using type = ddc::detail::TypeSeq<TensorCovariantNaturalIndex<prime<Index, I>>...>;
using type = ddc::detail::TypeSeq<Covariant<prime<Index, I>>...>;
};

} // namespace detail
Expand Down
16 changes: 8 additions & 8 deletions tests/exterior/hodge_star.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,16 +47,16 @@ struct Rho : sil::tensor::TensorNaturalIndex<X, Y, Z>
{
};

using MuUp = sil::tensor::TensorContravariantNaturalIndex<Mu>;
using MuLow = sil::tensor::TensorCovariantNaturalIndex<Mu>;
using NuUp = sil::tensor::TensorContravariantNaturalIndex<Nu>;
using NuLow = sil::tensor::TensorCovariantNaturalIndex<Nu>;
using RhoUp = sil::tensor::TensorContravariantNaturalIndex<Rho>;
using RhoLow = sil::tensor::TensorCovariantNaturalIndex<Rho>;
using MuUp = sil::tensor::Contravariant<Mu>;
using MuLow = sil::tensor::Covariant<Mu>;
using NuUp = sil::tensor::Contravariant<Nu>;
using NuLow = sil::tensor::Covariant<Nu>;
using RhoUp = sil::tensor::Contravariant<Rho>;
using RhoLow = sil::tensor::Covariant<Rho>;

using MetricIndex = sil::tensor::TensorSymmetricIndex<
sil::tensor::TensorContravariantNaturalIndex<sil::tensor::MetricIndex1<X, Y, Z>>,
sil::tensor::TensorContravariantNaturalIndex<sil::tensor::MetricIndex2<X, Y, Z>>>;
sil::tensor::Contravariant<sil::tensor::MetricIndex1<X, Y, Z>>,
sil::tensor::Contravariant<sil::tensor::MetricIndex2<X, Y, Z>>>;

using HodgeStarDomain = sil::exterior::
hodge_star_domain_t<ddc::detail::TypeSeq<MuUp, NuUp>, ddc::detail::TypeSeq<RhoLow>>;
Expand Down
Loading

0 comments on commit eedd55f

Please sign in to comment.