Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Development
openfoam
Commits
4d215d8e
Commit
4d215d8e
authored
Apr 24, 2019
by
Mark Olesen
Committed by
Andrew Heather
Apr 24, 2019
Browse files
ENH: simplify access and caching logic for gradScheme (#1276)
parent
ef0d1554
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/finiteVolume/finiteVolume/gradSchemes/gradScheme/gradScheme.C
View file @
4d215d8e
...
...
@@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd |
\\ / A nd |
Copyright (C) 2019 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
| Copyright (C) 2011-2016 OpenFOAM Foundation
...
...
@@ -91,67 +91,49 @@ Foam::fv::gradScheme<Type>::grad
typedef
typename
outerProduct
<
vector
,
Type
>::
type
GradType
;
typedef
GeometricField
<
GradType
,
fvPatchField
,
volMesh
>
GradFieldType
;
if
(
!
this
->
mesh
().
changing
()
&&
this
->
mesh
().
cache
(
name
))
GradFieldType
*
pgGrad
=
mesh
().
objectRegistry
::
template
getObjectPtr
<
GradFieldType
>
(
name
);
if
(
!
this
->
mesh
().
cache
(
name
)
||
this
->
mesh
().
changing
())
{
if
(
!
mesh
().
objectRegistry
::
template
foundObject
<
GradFieldType
>
(
name
))
// Delete any old occurrences to avoid double registration
if
(
pgGrad
&&
pgGrad
->
ownedByRegistry
())
{
solution
::
cachePrintMessage
(
"
Calculating and cach
ing"
,
name
,
vsf
);
tmp
<
GradFieldType
>
tgGrad
=
calcGrad
(
vsf
,
name
);
regIOobject
::
store
(
tgGrad
.
ptr
())
;
solution
::
cachePrintMessage
(
"
Delet
ing"
,
name
,
vsf
);
pgGrad
->
release
(
);
delete
pgGrad
;
}
solution
::
cachePrintMessage
(
"Retrieving"
,
name
,
vsf
);
GradFieldType
&
gGrad
=
mesh
().
objectRegistry
::
template
lookupObjectRef
<
GradFieldType
>
(
name
);
if
(
gGrad
.
upToDate
(
vsf
))
{
return
gGrad
;
}
else
{
solution
::
cachePrintMessage
(
"Deleting"
,
name
,
vsf
);
gGrad
.
release
();
delete
&
gGrad
;
solution
::
cachePrintMessage
(
"Calculating"
,
name
,
vsf
);
return
calcGrad
(
vsf
,
name
);
}
solution
::
cachePrintMessage
(
"Recalculating"
,
name
,
vsf
);
tmp
<
GradFieldType
>
tgGrad
=
calcGrad
(
vsf
,
name
);
solution
::
cachePrintMessage
(
"Storing"
,
name
,
vsf
);
regIOobject
::
store
(
tgGrad
.
ptr
());
GradFieldType
&
gGrad
=
mesh
().
objectRegistry
::
template
lookupObjectRef
<
GradFieldType
>
(
name
);
if
(
!
pgGrad
)
{
solution
::
cachePrintMessage
(
"Calculating and caching"
,
name
,
vsf
);
return
gGrad
;
}
pgGrad
=
calcGrad
(
vsf
,
name
).
ptr
()
;
regIOobject
::
store
(
pgGrad
);
}
else
{
if
(
mesh
().
objectRegistry
::
template
foundObject
<
GradFieldType
>
(
name
))
if
(
pgGrad
->
upToDate
(
vsf
))
{
GradFieldType
&
gGrad
=
mesh
().
objectRegistry
::
template
lookupObjectRef
<
GradFieldType
>
(
name
);
if
(
gGrad
.
ownedByRegistry
())
{
solution
::
cachePrintMessage
(
"Deleting"
,
name
,
vsf
);
gGrad
.
release
();
delete
&
gGrad
;
}
solution
::
cachePrintMessage
(
"Reusing"
,
name
,
vsf
);
}
else
{
solution
::
cachePrintMessage
(
"Updating"
,
name
,
vsf
);
pgGrad
->
release
();
delete
pgGrad
;
solution
::
cachePrintMessage
(
"Calculating"
,
name
,
vsf
);
return
calcGrad
(
vsf
,
name
);
pgGrad
=
calcGrad
(
vsf
,
name
).
ptr
();
regIOobject
::
store
(
pgGrad
);
}
}
return
*
pgGrad
;
}
...
...
Write
Preview
Markdown
is supported
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