Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
LDD-for-two-phase-flow-systems
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
David Seus
LDD-for-two-phase-flow-systems
Commits
b2a29c0e
Commit
b2a29c0e
authored
Aug 29, 2019
by
David Seus
Browse files
Options
Downloads
Patches
Plain Diff
fix bug in _calc_corresponding_dof_indices(self, debug=True):
parent
423d4517
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
LDDsimulation/domainPatch.py
+24
-6
24 additions, 6 deletions
LDDsimulation/domainPatch.py
with
24 additions
and
6 deletions
LDDsimulation/domainPatch.py
+
24
−
6
View file @
b2a29c0e
...
@@ -851,7 +851,7 @@ class DomainPatch(df.SubDomain):
...
@@ -851,7 +851,7 @@ class DomainPatch(df.SubDomain):
)
)
def
_calc_corresponding_dof_indices
(
self
):
def
_calc_corresponding_dof_indices
(
self
,
debug
=
True
):
"""
calculate dictionary which for each interface and each phase holds
"""
calculate dictionary which for each interface and each phase holds
for each facet index, the dof indices of the pressures and flux components
for each facet index, the dof indices of the pressures and flux components
corresponding to a given dof index of the gli function.
corresponding to a given dof index of the gli function.
...
@@ -868,11 +868,11 @@ class DomainPatch(df.SubDomain):
...
@@ -868,11 +868,11 @@ class DomainPatch(df.SubDomain):
self
.
interface_corresponding_dof_index
[
interf_ind
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
].
update
(
{
phase
:
dict
()}
{
phase
:
dict
()}
)
)
# get dictionaries of
global
dof indices and coordinates along
# get dictionaries of dof indices and coordinates along
# the interface. These dictionaries have the
facet
indices of
# the interface. These dictionaries have the indices of
# facets belonging to the interface as keys (with respect to
# facets belonging to the interface as keys (with respect to
# the submesh numbering) and the dictionary
# the submesh numbering) and the dictionary
# containing pairs {
global_
dof_index: dof_coordinate} for all
# containing pairs {dof_index: dof_coordinate} for all
# dofs along the facet as values.
# dofs along the facet as values.
gli_dof_coordinates
=
self
.
interface_dof_indices_and_coordinates
[
"
gli
"
][
interf_ind
][
phase
]
gli_dof_coordinates
=
self
.
interface_dof_indices_and_coordinates
[
"
gli
"
][
interf_ind
][
phase
]
p_dof_coordinates
=
self
.
interface_dof_indices_and_coordinates
[
"
pressure
"
][
interf_ind
][
phase
]
p_dof_coordinates
=
self
.
interface_dof_indices_and_coordinates
[
"
pressure
"
][
interf_ind
][
phase
]
...
@@ -882,7 +882,6 @@ class DomainPatch(df.SubDomain):
...
@@ -882,7 +882,6 @@ class DomainPatch(df.SubDomain):
# with respect to the numbering of the subdomain submesh.
# with respect to the numbering of the subdomain submesh.
# Global facet index refers to the facet numbering
# Global facet index refers to the facet numbering
# of the mesh of the whole computational domain.
# of the mesh of the whole computational domain.
# local2global_facet = interface.local_to_global_facet_map[subdomain]
for
local_facet_ind
in
interface
.
outer_normals
[
subdomain
].
keys
():
for
local_facet_ind
in
interface
.
outer_normals
[
subdomain
].
keys
():
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
].
update
(
{
local_facet_ind
:
dict
()}
{
local_facet_ind
:
dict
()}
...
@@ -899,9 +898,10 @@ class DomainPatch(df.SubDomain):
...
@@ -899,9 +898,10 @@ class DomainPatch(df.SubDomain):
for
gli_dof_index
,
gli_dof_coord
in
gli_dofs_along_facet
.
items
():
for
gli_dof_index
,
gli_dof_coord
in
gli_dofs_along_facet
.
items
():
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
].
update
(
{
gli_dof_index
:
{
"
flux_x
"
:
None
,
{
gli_dof_index
:
{
"
flux_x
"
:
None
,
"
flux_
x
"
:
None
,
"
flux_
y
"
:
None
,
"
pressure
"
:
None
}}
"
pressure
"
:
None
}}
)
)
# flux_x dofs
for
flux_x_dof_ind
,
dof_coord
in
flux_x_dofs_along_facet
.
items
():
for
flux_x_dof_ind
,
dof_coord
in
flux_x_dofs_along_facet
.
items
():
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
...
@@ -909,10 +909,17 @@ class DomainPatch(df.SubDomain):
...
@@ -909,10 +909,17 @@ class DomainPatch(df.SubDomain):
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
{
"
flux_x
"
:
flux_x_dof_ind
}
{
"
flux_x
"
:
flux_x_dof_ind
}
)
)
else
:
print
(
f
"
in flux_x
"
)
raise
RuntimeError
(
f
"
np.allclose(a,b) != np.allclose(b,a) while comparing (
{
dof_coord
}
) and (
{
gli_dof_coord
}
)
"
,
"
Check on the mesh what is going on.
"
)
# defensive sanity check if the dof has been set.
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
flux_x
"
]
is
None
:
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
flux_x
"
]
is
None
:
raise
RuntimeError
(
f
"
didn
'
t find flux_x_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
raise
RuntimeError
(
f
"
didn
'
t find flux_x_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
"
something is wrong
"
)
"
something is wrong
"
)
# flux_y dofs
for
flux_y_dof_ind
,
dof_coord
in
flux_y_dofs_along_facet
.
items
():
for
flux_y_dof_ind
,
dof_coord
in
flux_y_dofs_along_facet
.
items
():
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
...
@@ -920,10 +927,16 @@ class DomainPatch(df.SubDomain):
...
@@ -920,10 +927,16 @@ class DomainPatch(df.SubDomain):
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
{
"
flux_y
"
:
flux_y_dof_ind
}
{
"
flux_y
"
:
flux_y_dof_ind
}
)
)
else
:
print
(
f
"
in flux_y
"
)
raise
RuntimeError
(
f
"
np.allclose(a,b) != np.allclose(b,a) while comparing (
{
dof_coord
}
) and (
{
gli_dof_coord
}
)
"
,
"
Check on the mesh what is going on.
"
)
# sanity check for flux_y
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
flux_y
"
]
is
None
:
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
flux_y
"
]
is
None
:
raise
RuntimeError
(
f
"
didn
'
t find flux_y_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
raise
RuntimeError
(
f
"
didn
'
t find flux_y_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
"
something is wrong
"
)
"
something is wrong
"
)
# pressure dofs
for
p_dof_ind
,
dof_coord
in
p_dofs_along_facet
.
items
():
for
p_dof_ind
,
dof_coord
in
p_dofs_along_facet
.
items
():
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
a_close_b
=
np
.
allclose
(
gli_dof_coord
,
dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
b_close_a
=
np
.
allclose
(
dof_coord
,
gli_dof_coord
,
rtol
=
1e-10
,
atol
=
1e-14
)
...
@@ -931,6 +944,11 @@ class DomainPatch(df.SubDomain):
...
@@ -931,6 +944,11 @@ class DomainPatch(df.SubDomain):
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
].
update
(
{
"
pressure
"
:
p_dof_ind
}
{
"
pressure
"
:
p_dof_ind
}
)
)
else
:
print
(
f
"
in pressure
"
)
raise
RuntimeError
(
f
"
np.allclose(a,b) != np.allclose(b,a) while comparing (
{
dof_coord
}
) and (
{
gli_dof_coord
}
)
"
,
"
Check on the mesh what is going on.
"
)
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
pressure
"
]
is
None
:
if
self
.
interface_corresponding_dof_index
[
interf_ind
][
phase
][
local_facet_ind
][
gli_dof_index
][
"
pressure
"
]
is
None
:
raise
RuntimeError
(
f
"
didn
'
t find p_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
raise
RuntimeError
(
f
"
didn
'
t find p_dof_ind corresponding to dict key (
{
gli_dof_coord
}
)
"
,
"
something is wrong
"
)
"
something is wrong
"
)
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
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!
Save comment
Cancel
Please
register
or
sign in
to comment