NeoN
A framework for CFD software
Loading...
Searching...
No Matches
include
NeoN
dsl
explicit.hpp
Go to the documentation of this file.
1
// SPDX-FileCopyrightText: 2023 - 2026 NeoN authors
2
//
3
// SPDX-License-Identifier: MIT
4
5
#pragma once
6
7
#include "
NeoN/core/primitives/scalar.hpp
"
8
#include "
NeoN/core/primitives/vec3.hpp
"
9
#include "
NeoN/dsl/spatialOperator.hpp
"
10
#include "
NeoN/dsl/temporalOperator.hpp
"
11
#include "
NeoN/dsl/ddt.hpp
"
12
#include "
NeoN/finiteVolume/cellCentred/fields/surfaceField.hpp
"
13
// TODO: decouple from fvcc
14
#include "
NeoN/finiteVolume/cellCentred/fields/volumeField.hpp
"
15
#include "
NeoN/finiteVolume/cellCentred/operators/ddtOperator.hpp
"
16
#include "
NeoN/finiteVolume/cellCentred/operators/divOperator.hpp
"
17
#include "
NeoN/finiteVolume/cellCentred/operators/laplacianOperator.hpp
"
18
#include "
NeoN/finiteVolume/cellCentred/operators/sourceTerm.hpp
"
19
#include "
NeoN/finiteVolume/cellCentred/operators/gradOperator.hpp
"
20
#include "
NeoN/finiteVolume/cellCentred/operators/surfaceIntegrate.hpp
"
21
22
namespace
NeoN::dsl::exp
23
{
24
25
namespace
fvcc
=
NeoN::finiteVolume::cellCentred
;
26
27
template
<
typename
ValueType>
28
TemporalOperator<ValueType>
ddt
(
fvcc::VolumeField<ValueType>
& phi)
29
{
30
return
fvcc::DdtOperator
(
dsl::Operator::Type::Explicit
, phi);
31
}
32
33
// Density-weighted explicit temporal operator ddt(rho, phi), mirroring imp::ddt's
34
// two-arg overload. rho must carry an old-time collection (see DdtOperator's ctor doc).
35
template
<
typename
ValueType>
36
TemporalOperator<ValueType>
ddt
(
fvcc::VolumeField<scalar>
& rho,
fvcc::VolumeField<ValueType>
& phi)
37
{
38
return
fvcc::DdtOperator<ValueType>
(
dsl::Operator::Type::Explicit
, rho, phi);
39
}
40
41
template
<
typename
ValueType>
42
SpatialOperator<ValueType>
43
source
(
const
fvcc::VolumeField<scalar>
& coeff,
const
fvcc::VolumeField<ValueType>
& phi)
44
{
45
return
SpatialOperator<ValueType>
(
fvcc::SourceTerm
(
dsl::Operator::Type::Explicit
, coeff, phi));
46
}
47
48
template
<
typename
ValueType>
49
SpatialOperator<ValueType>
50
div
(
const
fvcc::SurfaceField<scalar>
& faceFlux,
const
fvcc::VolumeField<ValueType>
& phi)
51
{
52
return
SpatialOperator<ValueType>
(
53
fvcc::DivOperator
(
dsl::Operator::Type::Explicit
, faceFlux, phi)
54
);
55
}
56
57
SpatialOperator<scalar>
div
(
const
fvcc::SurfaceField<scalar>
& flux);
58
59
template
<
typename
ValueType>
60
SpatialOperator<ValueType>
61
laplacian
(
const
fvcc::SurfaceField<scalar>
& gamma,
fvcc::VolumeField<ValueType>
& phi)
62
{
63
return
SpatialOperator<ValueType>
(
64
fvcc::LaplacianOperator<ValueType>
(
dsl::Operator::Type::Explicit
, gamma, phi)
65
);
66
}
67
68
SpatialOperator<Vec3>
grad
(
const
fvcc::VolumeField<scalar>
& phi);
69
70
template
<
typename
ValueType>
71
SpatialOperator<ValueType>
source
(
fvcc::VolumeField<ValueType>
& coeff)
72
{
73
return
SpatialOperator<ValueType>
(
fvcc::SourceTerm
(
dsl::Operator::Type::Explicit
, coeff));
74
}
75
76
}
// namespace NeoN
NeoN::dsl::Operator::Type::Explicit
@ Explicit
Definition
operator.hpp:21
NeoN::dsl::SpatialOperator
Definition
spatialOperator.hpp:67
NeoN::dsl::TemporalOperator
Definition
temporalOperator.hpp:78
NeoN::finiteVolume::cellCentred::DdtOperator
Definition
ddtOperator.hpp:29
NeoN::finiteVolume::cellCentred::DivOperator
Definition
divOperator.hpp:84
NeoN::finiteVolume::cellCentred::LaplacianOperator
Definition
laplacianOperator.hpp:91
NeoN::finiteVolume::cellCentred::SourceTerm
Definition
sourceTerm.hpp:20
NeoN::finiteVolume::cellCentred::SurfaceField
Represents a surface field in a finite volume method.
Definition
surfaceField.hpp:30
NeoN::finiteVolume::cellCentred::VolumeField
Represents a volume field in a finite volume method.
Definition
volumeField.hpp:31
ddtOperator.hpp
ddt.hpp
divOperator.hpp
gradOperator.hpp
laplacianOperator.hpp
NeoN::dsl::exp
Definition
explicit.hpp:23
NeoN::dsl::exp::source
SpatialOperator< ValueType > source(const fvcc::VolumeField< scalar > &coeff, const fvcc::VolumeField< ValueType > &phi)
Definition
explicit.hpp:43
NeoN::dsl::exp::grad
SpatialOperator< Vec3 > grad(const fvcc::VolumeField< scalar > &phi)
NeoN::dsl::exp::div
SpatialOperator< ValueType > div(const fvcc::SurfaceField< scalar > &faceFlux, const fvcc::VolumeField< ValueType > &phi)
Definition
explicit.hpp:50
NeoN::dsl::exp::laplacian
SpatialOperator< ValueType > laplacian(const fvcc::SurfaceField< scalar > &gamma, fvcc::VolumeField< ValueType > &phi)
Definition
explicit.hpp:61
NeoN::dsl::exp::ddt
TemporalOperator< ValueType > ddt(fvcc::VolumeField< ValueType > &phi)
Definition
explicit.hpp:28
NeoN::finiteVolume::cellCentred
Definition
fieldCollection.hpp:21
scalar.hpp
sourceTerm.hpp
spatialOperator.hpp
surfaceField.hpp
surfaceIntegrate.hpp
temporalOperator.hpp
vec3.hpp
volumeField.hpp
Generated by
1.15.0