Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
cc9c4fd3
Commit
cc9c4fd3
authored
Aug 25, 2009
by
mattijs
Browse files
not register correction vector
parent
91b0fcba
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/linearUpwind/linearUpwindV.C
View file @
cc9c4fd3
...
...
@@ -38,93 +38,96 @@ Foam::linearUpwindV<Type>::correction
const
GeometricField
<
Type
,
fvPatchField
,
volMesh
>&
vf
)
const
{
const
fvMesh
&
mesh
=
this
->
mesh
();
tmp
<
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>
>
tsfCorr
(
new
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>
(
IOobject
(
vf
.
name
(),
mesh
.
time
().
timeName
(),
mesh
),
mesh
,
dimensioned
<
Type
>
(
vf
.
name
(),
vf
.
dimensions
(),
pTraits
<
Type
>::
zero
)
)
);
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
sfCorr
=
tsfCorr
();
const
surfaceScalarField
&
faceFlux
=
this
->
faceFlux_
;
const
surfaceScalarField
&
w
=
mesh
.
weights
();
const
labelList
&
own
=
mesh
.
owner
();
const
labelList
&
nei
=
mesh
.
neighbour
();
const
vectorField
&
C
=
mesh
.
C
();
const
vectorField
&
Cf
=
mesh
.
Cf
();
GeometricField
<
typename
outerProduct
<
vector
,
Type
>::
type
,
fvPatchField
,
volMesh
>
gradVf
=
gradScheme_
().
grad
(
vf
);
forAll
(
faceFlux
,
facei
)
{
vector
maxCorr
;
if
(
faceFlux
[
facei
]
>
0
.
0
)
{
maxCorr
=
(
1
.
0
-
w
[
facei
])
const
fvMesh
&
mesh
=
this
->
mesh
();
tmp
<
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>
>
tsfCorr
(
new
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>
(
IOobject
(
"linearUpwindV::correction("
+
vf
.
name
()
+
')'
,
mesh
.
time
().
timeName
(),
mesh
,
IOobject
::
NO_READ
,
IOobject
::
NO_WRITE
,
false
),
mesh
,
dimensioned
<
Type
>
(
vf
.
name
(),
vf
.
dimensions
(),
pTraits
<
Type
>::
zero
)
)
);
GeometricField
<
Type
,
fvsPatchField
,
surfaceMesh
>&
sfCorr
=
tsfCorr
();
const
surfaceScalarField
&
faceFlux
=
this
->
faceFlux_
;
const
surfaceScalarField
&
w
=
mesh
.
weights
();
const
labelList
&
own
=
mesh
.
owner
();
const
labelList
&
nei
=
mesh
.
neighbour
();
const
vectorField
&
C
=
mesh
.
C
();
const
vectorField
&
Cf
=
mesh
.
Cf
();
GeometricField
<
typename
outerProduct
<
vector
,
Type
>::
type
,
fvPatchField
,
volMesh
>
gradVf
=
gradScheme_
().
grad
(
vf
);
forAll
(
faceFlux
,
facei
)
{
vector
maxCorr
;
if
(
faceFlux
[
facei
]
>
0
.
0
)
{
maxCorr
=
(
1
.
0
-
w
[
facei
])
*
(
vf
[
nei
[
facei
]]
-
vf
[
own
[
facei
]]);
sfCorr
[
facei
]
=
(
Cf
[
facei
]
-
C
[
own
[
facei
]])
&
gradVf
[
own
[
facei
]];
}
else
{
maxCorr
=
w
[
facei
]
*
(
vf
[
own
[
facei
]]
-
vf
[
nei
[
facei
]]);
sfCorr
[
facei
]
=
(
Cf
[
facei
]
-
C
[
own
[
facei
]])
&
gradVf
[
own
[
facei
]];
}
else
{
maxCorr
=
w
[
facei
]
*
(
vf
[
own
[
facei
]]
-
vf
[
nei
[
facei
]]);
sfCorr
[
facei
]
=
sfCorr
[
facei
]
=
(
Cf
[
facei
]
-
C
[
nei
[
facei
]])
&
gradVf
[
nei
[
facei
]];
}
scalar
sfCorrs
=
magSqr
(
sfCorr
[
facei
]);
scalar
maxCorrs
=
sfCorr
[
facei
]
&
maxCorr
;
if
(
sfCorrs
>
0
)
{
if
(
maxCorrs
<
0
)
{
sfCorr
[
facei
]
=
vector
::
zero
;
}
else
if
(
sfCorrs
>
maxCorrs
)
{
sfCorr
[
facei
]
*=
maxCorrs
/
(
sfCorrs
+
VSMALL
);
}
}
else
if
(
sfCorrs
<
0
)
{
if
(
maxCorrs
>
0
)
{
sfCorr
[
facei
]
=
vector
::
zero
;
}
else
if
(
sfCorrs
<
maxCorrs
)
{
sfCorr
[
facei
]
*=
maxCorrs
/
(
sfCorrs
-
VSMALL
);
}
}
}
return
tsfCorr
;
}
scalar
sfCorrs
=
magSqr
(
sfCorr
[
facei
]);
scalar
maxCorrs
=
sfCorr
[
facei
]
&
maxCorr
;
if
(
sfCorrs
>
0
)
{
if
(
maxCorrs
<
0
)
{
sfCorr
[
facei
]
=
vector
::
zero
;
}
else
if
(
sfCorrs
>
maxCorrs
)
{
sfCorr
[
facei
]
*=
maxCorrs
/
(
sfCorrs
+
VSMALL
);
}
}
else
if
(
sfCorrs
<
0
)
{
if
(
maxCorrs
>
0
)
{
sfCorr
[
facei
]
=
vector
::
zero
;
}
else
if
(
sfCorrs
<
maxCorrs
)
{
sfCorr
[
facei
]
*=
maxCorrs
/
(
sfCorrs
-
VSMALL
);
}
}
}
return
tsfCorr
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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