Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Nektar
Nektar
Commits
cfed59c8
Commit
cfed59c8
authored
Oct 07, 2017
by
Chris Cantwell
Browse files
Merge branch 'fix/MovingBodyBC' into 'master'
Fix/moving body bc See merge request
!852
parents
3f12b281
218efb1c
Changes
6
Hide whitespace changes
Inline
Side-by-side
CHANGELOG.md
View file @
cfed59c8
...
@@ -91,6 +91,7 @@ v4.4.1
...
@@ -91,6 +91,7 @@ v4.4.1
**IncNavierStokesSolver**
**IncNavierStokesSolver**
-
Fix an initialisation issue when using an additional advective field (!779)
-
Fix an initialisation issue when using an additional advective field (!779)
-
Fix MovingBody boundary condition (!852)
**Utilities**
**Utilities**
-
Fix vtkToFld missing dependency which prevented compiling with VTK 7.1 (!808)
-
Fix vtkToFld missing dependency which prevented compiling with VTK 7.1 (!808)
...
...
library/GlobalMapping/Mapping.cpp
View file @
cfed59c8
...
@@ -1075,18 +1075,8 @@ void Mapping::v_UpdateBCs( const NekDouble time)
...
@@ -1075,18 +1075,8 @@ void Mapping::v_UpdateBCs( const NekDouble time)
int
nbnds
=
m_fields
[
0
]
->
GetBndConditions
().
num_elements
();
int
nbnds
=
m_fields
[
0
]
->
GetBndConditions
().
num_elements
();
// Declare variables
// Declare variables
Array
<
OneD
,
int
>
BCtoElmtID
;
Array
<
OneD
,
int
>
BCtoTraceID
;
Array
<
OneD
,
const
SpatialDomains
::
BoundaryConditionShPtr
>
BndConds
;
Array
<
OneD
,
const
SpatialDomains
::
BoundaryConditionShPtr
>
BndConds
;
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
BndExp
;
Array
<
OneD
,
MultiRegions
::
ExpListSharedPtr
>
BndExp
;
StdRegions
::
StdExpansionSharedPtr
elmt
;
StdRegions
::
StdExpansionSharedPtr
Bc
;
Array
<
OneD
,
NekDouble
>
ElmtVal
(
physTot
,
0.0
);
Array
<
OneD
,
NekDouble
>
BndVal
(
physTot
,
0.0
);
Array
<
OneD
,
NekDouble
>
coordVelElmt
(
physTot
,
0.0
);
Array
<
OneD
,
NekDouble
>
coordVelBnd
(
physTot
,
0.0
);
Array
<
OneD
,
NekDouble
>
Vals
(
physTot
,
0.0
);
Array
<
OneD
,
bool
>
isDirichlet
(
nfields
);
Array
<
OneD
,
bool
>
isDirichlet
(
nfields
);
...
@@ -1180,66 +1170,26 @@ void Mapping::v_UpdateBCs( const NekDouble time)
...
@@ -1180,66 +1170,26 @@ void Mapping::v_UpdateBCs( const NekDouble time)
{
{
BndConds
=
m_fields
[
i
]
->
GetBndConditions
();
BndConds
=
m_fields
[
i
]
->
GetBndConditions
();
BndExp
=
m_fields
[
i
]
->
GetBndCondExpansions
();
BndExp
=
m_fields
[
i
]
->
GetBndCondExpansions
();
if
(
BndConds
[
n
]
->
GetUserDefined
()
==
""
||
// Loop boundary conditions again to get correct
BndConds
[
n
]
->
GetUserDefined
()
==
"MovingBody"
)
// values for cnt
int
cnt
=
0
;
for
(
int
m
=
0
;
m
<
nbnds
;
++
m
)
{
{
int
exp_size
=
BndExp
[
m
]
->
GetExpSize
();
m_fields
[
i
]
->
ExtractPhysToBnd
(
n
,
if
(
m
==
n
&&
isDirichlet
[
i
])
values
[
i
],
BndExp
[
n
]
->
UpdatePhys
());
{
for
(
int
j
=
0
;
j
<
exp_size
;
++
j
,
cnt
++
)
// Apply MovingBody correction
{
if
(
(
i
<
nvel
)
&&
m_fields
[
i
]
->
GetBoundaryToElmtMap
(
BCtoElmtID
,
BndConds
[
n
]
->
GetUserDefined
()
==
BCtoTraceID
);
"MovingBody"
)
/// Casting the bnd exp to the specific case
Bc
=
std
::
dynamic_pointer_cast
<
StdRegions
::
StdExpansion
>
(
BndExp
[
n
]
->
GetExp
(
j
));
// Get element expansion
elmt
=
m_fields
[
i
]
->
GetExp
(
BCtoElmtID
[
cnt
]);
// Get values on the element
ElmtVal
=
values
[
i
]
+
m_fields
[
i
]
->
GetPhys_Offset
(
BCtoElmtID
[
cnt
]);
// Get values on boundary
elmt
->
GetTracePhysVals
(
BCtoTraceID
[
cnt
],
Bc
,
ElmtVal
,
BndVal
);
// Pointer to value that should be updated
Vals
=
BndExp
[
n
]
->
UpdatePhys
()
+
BndExp
[
n
]
->
GetPhys_Offset
(
j
);
// Copy result
Vmath
::
Vcopy
(
Bc
->
GetTotPoints
(),
BndVal
,
1
,
Vals
,
1
);
// Apply MovingBody correction
if
(
(
i
<
nvel
)
&&
BndConds
[
n
]
->
GetUserDefined
()
==
"MovingBody"
)
{
// get coordVel in the element
coordVelElmt
=
coordVel
[
i
]
+
m_fields
[
i
]
->
GetPhys_Offset
(
BCtoElmtID
[
cnt
]);
// Get values on boundary
elmt
->
GetTracePhysVals
(
BCtoTraceID
[
cnt
],
Bc
,
coordVelElmt
,
coordVelBnd
);
// Apply correction
Vmath
::
Vadd
(
Bc
->
GetTotPoints
(),
coordVelBnd
,
1
,
Vals
,
1
,
Vals
,
1
);
}
}
}
else
// setting if m!=n
{
{
cnt
+=
exp_size
;
// Get coordinate velocity on boundary
Array
<
OneD
,
NekDouble
>
coordVelBnd
(
BndExp
[
n
]
->
GetTotPoints
());
m_fields
[
i
]
->
ExtractPhysToBnd
(
n
,
coordVel
[
i
],
coordVelBnd
);
// Apply correction
Vmath
::
Vadd
(
BndExp
[
n
]
->
GetTotPoints
(),
coordVelBnd
,
1
,
BndExp
[
n
]
->
UpdatePhys
(),
1
,
BndExp
[
n
]
->
UpdatePhys
(),
1
);
}
}
}
}
}
}
...
@@ -1256,12 +1206,16 @@ void Mapping::v_UpdateBCs( const NekDouble time)
...
@@ -1256,12 +1206,16 @@ void Mapping::v_UpdateBCs( const NekDouble time)
if
(
BndConds
[
n
]
->
GetBoundaryConditionType
()
==
if
(
BndConds
[
n
]
->
GetBoundaryConditionType
()
==
SpatialDomains
::
eDirichlet
)
SpatialDomains
::
eDirichlet
)
{
{
BndExp
[
n
]
->
FwdTrans_BndConstrained
(
BndExp
[
n
]
->
GetPhys
(),
if
(
BndConds
[
n
]
->
GetUserDefined
()
==
""
||
BndExp
[
n
]
->
UpdateCoeffs
());
BndConds
[
n
]
->
GetUserDefined
()
==
"MovingBody"
)
if
(
m_fields
[
i
]
->
GetExpType
()
==
MultiRegions
::
e3DH1D
)
{
{
BndExp
[
n
]
->
HomogeneousFwdTrans
(
BndExp
[
n
]
->
GetCoeffs
(),
BndExp
[
n
]
->
FwdTrans_BndConstrained
(
BndExp
[
n
]
->
GetPhys
(),
BndExp
[
n
]
->
UpdateCoeffs
());
BndExp
[
n
]
->
UpdateCoeffs
());
if
(
m_fields
[
i
]
->
GetExpType
()
==
MultiRegions
::
e3DH1D
)
{
BndExp
[
n
]
->
HomogeneousFwdTrans
(
BndExp
[
n
]
->
GetCoeffs
(),
BndExp
[
n
]
->
UpdateCoeffs
());
}
}
}
}
}
}
}
...
...
library/MultiRegions/DisContField2D.cpp
View file @
cfed59c8
...
@@ -2350,22 +2350,6 @@ namespace Nektar
...
@@ -2350,22 +2350,6 @@ namespace Nektar
ASSERTL0
(
false
,
"This type of BC not implemented yet"
);
ASSERTL0
(
false
,
"This type of BC not implemented yet"
);
}
}
}
}
else
if
(
boost
::
iequals
(
m_bndConditions
[
i
]
->
GetUserDefined
(),
"MovingBody"
))
{
locExpList
=
m_bndCondExpansions
[
i
];
if
(
m_bndConditions
[
i
]
->
GetBoundaryConditionType
()
==
SpatialDomains
::
eDirichlet
)
{
locExpList
->
FwdTrans_IterPerExp
(
locExpList
->
GetPhys
(),
locExpList
->
UpdateCoeffs
());
}
else
{
ASSERTL0
(
false
,
"This type of BC not implemented yet"
);
}
}
}
}
}
}
}
// end of namespace
}
// end of namespace
...
...
library/MultiRegions/DisContField3DHomogeneous1D.cpp
View file @
cfed59c8
...
@@ -251,9 +251,7 @@ namespace Nektar
...
@@ -251,9 +251,7 @@ namespace Nektar
for
(
n
=
0
;
n
<
m_bndCondExpansions
.
num_elements
();
++
n
)
for
(
n
=
0
;
n
<
m_bndCondExpansions
.
num_elements
();
++
n
)
{
{
if
(
time
==
0.0
||
if
(
time
==
0.0
||
m_bndConditions
[
n
]
->
IsTimeDependent
()
||
m_bndConditions
[
n
]
->
IsTimeDependent
()
)
boost
::
iequals
(
m_bndConditions
[
n
]
->
GetUserDefined
(),
"MovingBody"
))
{
{
m_bndCondExpansions
[
n
]
->
HomogeneousFwdTrans
(
m_bndCondExpansions
[
n
]
->
HomogeneousFwdTrans
(
m_bndCondExpansions
[
n
]
->
GetCoeffs
(),
m_bndCondExpansions
[
n
]
->
GetCoeffs
(),
...
...
solvers/IncNavierStokesSolver/EquationSystems/Extrapolate.cpp
View file @
cfed59c8
...
@@ -587,6 +587,8 @@ namespace Nektar
...
@@ -587,6 +587,8 @@ namespace Nektar
{
{
velbc
[
i
]
=
Array
<
OneD
,
NekDouble
>
velbc
[
i
]
=
Array
<
OneD
,
NekDouble
>
(
VelBndExp
[
i
][
n
]
->
GetTotPoints
(),
0.0
);
(
VelBndExp
[
i
][
n
]
->
GetTotPoints
(),
0.0
);
VelBndExp
[
i
][
n
]
->
SetWaveSpace
(
m_fields
[
m_velocity
[
i
]]
->
GetWaveSpace
());
VelBndExp
[
i
][
n
]
->
BwdTrans
(
VelBndExp
[
i
][
n
]
->
GetCoeffs
(),
VelBndExp
[
i
][
n
]
->
BwdTrans
(
VelBndExp
[
i
][
n
]
->
GetCoeffs
(),
velbc
[
i
]);
velbc
[
i
]);
}
}
...
...
solvers/IncNavierStokesSolver/Tests/CylFlow_MovBody.tst
View file @
cfed59c8
...
@@ -7,25 +7,17 @@
...
@@ -7,25 +7,17 @@
<file
description=
"Session File"
>
CylFlow_MovBody.xml
</file>
<file
description=
"Session File"
>
CylFlow_MovBody.xml
</file>
</files>
</files>
<metrics>
<metrics>
L 2 error (variable u) : 55.4979
L inf error (variable u) : 1.44442
L 2 error (variable v) : 3.73646
L inf error (variable v) : 0.670941
L 2 error (variable w) : 0.00651794
L inf error (variable w) : 0.00445146
L 2 error (variable p) : 167.909
L inf error (variable p) : 5.6965
<metric
type=
"L2"
id=
"1"
>
<metric
type=
"L2"
id=
"1"
>
<value
variable=
"u"
tolerance=
"1e-12"
>
55.4979
</value>
<value
variable=
"u"
tolerance=
"1e-12"
>
55.4979
</value>
<value
variable=
"v"
tolerance=
"1e-12"
>
3.73646
</value>
<value
variable=
"v"
tolerance=
"1e-12"
>
3.73646
</value>
<value
variable=
"w"
tolerance=
"1e-12"
>
0.00651
794
</value>
<value
variable=
"w"
tolerance=
"1e-12"
>
0.00651
852
</value>
<value
variable=
"p"
tolerance=
"1e-12"
>
167.909
</value>
<value
variable=
"p"
tolerance=
"1e-12"
>
167.909
</value>
</metric>
</metric>
<metric
type=
"Linf"
id=
"2"
>
<metric
type=
"Linf"
id=
"2"
>
<value
variable=
"u"
tolerance=
"1e-12"
>
1.44442
</value>
<value
variable=
"u"
tolerance=
"1e-12"
>
1.44442
</value>
<value
variable=
"v"
tolerance=
"1e-12"
>
0.6709
41
</value>
<value
variable=
"v"
tolerance=
"1e-12"
>
0.6709
29
</value>
<value
variable=
"w"
tolerance=
"1e-12"
>
0.0044
5146
</value>
<value
variable=
"w"
tolerance=
"1e-12"
>
0.0044
4785
</value>
<value
variable=
"p"
tolerance=
"1e-12"
>
5.6965
</value>
<value
variable=
"p"
tolerance=
"1e-12"
>
5.696
4
5
</value>
</metric>
</metric>
</metrics>
</metrics>
</test>
</test>
Andrea Cassinelli
@a_cassinelli
mentioned in issue
#70 (closed)
·
Oct 07, 2017
mentioned in issue
#70 (closed)
mentioned in issue #70
Toggle commit list
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment