Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
What's new
7
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Open sidebar
Nektar
Nektar
Commits
5e8237b7
Commit
5e8237b7
authored
Nov 29, 2012
by
Chris Cantwell
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'fix/tet-normals' of localhost:nektar
parents
9556cb2a
b0d1703c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
87 additions
and
63 deletions
+87
-63
library/LocalRegions/TetExp.cpp
library/LocalRegions/TetExp.cpp
+87
-63
No files found.
library/LocalRegions/TetExp.cpp
View file @
5e8237b7
...
...
@@ -875,103 +875,127 @@ namespace Nektar
// Set up deformed normals
int
j
,
k
;
int
nq
uad
0
=
geomFactors
->
GetPointsKey
(
0
).
GetNumPoints
();
int
nq
uad
1
=
geomFactors
->
GetPointsKey
(
1
).
GetNumPoints
();
int
nq
uad
2
=
geomFactors
->
GetPointsKey
(
2
).
GetNumPoints
();
int
nq0
=
geomFactors
->
GetPointsKey
(
0
).
GetNumPoints
();
int
nq1
=
geomFactors
->
GetPointsKey
(
1
).
GetNumPoints
();
int
nq2
=
geomFactors
->
GetPointsKey
(
2
).
GetNumPoints
();
int
nqtot
;
int
nq01
=
nq0
*
nq1
;
if
(
face
==
0
)
{
nqtot
=
nq
uad0
*
nquad
1
;
nqtot
=
nq
0
1
;
}
else
if
(
face
==
1
)
{
nqtot
=
nq
uad
0
*
nq
uad
2
;
nqtot
=
nq0
*
nq2
;
}
else
{
nqtot
=
nq
uad
1
*
nq
uad
2
;
nqtot
=
nq1
*
nq2
;
}
LibUtilities
::
PointsKey
points0
;
LibUtilities
::
PointsKey
points1
;
Array
<
OneD
,
NekDouble
>
work
(
nq
tot
,
0.0
);
Array
<
OneD
,
NekDouble
>
work
(
nq
,
0.0
);
Array
<
OneD
,
NekDouble
>
normals
(
vCoordDim
*
nqtot
,
0.0
);
// Extract Jacobian along face and recover local derivates
// (dx/dr) for polynomial interpolation by multiplying m_gmat by
// jacobian
switch
(
face
)
{
case
0
:
case
0
:
{
for
(
j
=
0
;
j
<
nq01
;
++
j
)
{
for
(
j
=
0
;
j
<
nquad0
*
nquad1
;
++
j
)
{
normals
[
j
]
=
-
gmat
[
2
][
j
]
*
jac
[
j
];
normals
[
nqtot
+
j
]
=
-
gmat
[
5
][
j
]
*
jac
[
j
];
normals
[
2
*
nqtot
+
j
]
=
-
gmat
[
8
][
j
]
*
jac
[
j
];
}
normals
[
j
]
=
-
gmat
[
2
][
j
]
*
jac
[
j
];
normals
[
nqtot
+
j
]
=
-
gmat
[
5
][
j
]
*
jac
[
j
];
normals
[
2
*
nqtot
+
j
]
=
-
gmat
[
8
][
j
]
*
jac
[
j
];
}
points0
=
geomFactors
->
GetPointsKey
(
0
);
points1
=
geomFactors
->
GetPointsKey
(
1
);
break
;
}
case
1
:
}
case
1
:
{
for
(
j
=
0
;
j
<
nq0
;
++
j
)
{
for
(
j
=
0
;
j
<
nq
uad0
;
++
j
)
for
(
k
=
0
;
k
<
nq
2
;
++
k
)
{
for
(
k
=
0
;
k
<
nquad2
;
++
k
)
{
normals
[
j
+
k
*
nquad0
]
=
-
gmat
[
1
][
j
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
+
nquad0
*
nquad1
*
k
];
normals
[
nqtot
+
j
+
k
*
nquad0
]
=
-
gmat
[
4
][
j
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
+
nquad0
*
nquad1
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nquad0
]
=
-
gmat
[
7
][
j
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
+
nquad0
*
nquad1
*
k
];
}
}
points0
=
geomFactors
->
GetPointsKey
(
0
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
normals
[
j
+
k
*
nq0
]
=
-
gmat
[
1
][
j
+
nq01
*
k
]
*
jac
[
j
+
nq01
*
k
];
normals
[
nqtot
+
j
+
k
*
nq0
]
=
-
gmat
[
4
][
j
+
nq01
*
k
]
*
jac
[
j
+
nq01
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nq0
]
=
-
gmat
[
7
][
j
+
nq01
*
k
]
*
jac
[
j
+
nq01
*
k
];
}
}
case
2
:
points0
=
geomFactors
->
GetPointsKey
(
0
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
}
case
2
:
{
for
(
j
=
0
;
j
<
nq1
;
++
j
)
{
for
(
j
=
0
;
j
<
nq
uad1
;
++
j
)
for
(
k
=
0
;
k
<
nq
2
;
++
k
)
{
for
(
k
=
0
;
k
<
nquad2
;
++
k
)
{
normals
[
j
+
k
*
nquad0
]
=
(
gmat
[
0
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
1
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
2
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
])
*
jac
[
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
];
normals
[
nqtot
+
j
+
k
*
nquad0
]
=
(
gmat
[
3
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
4
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
5
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
])
*
jac
[
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nquad0
]
=
(
gmat
[
6
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
7
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
]
+
gmat
[
8
][
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
])
*
jac
[
nquad0
-
1
+
nquad0
*
j
+
nquad0
*
nquad1
*
k
];
}
}
points0
=
geomFactors
->
GetPointsKey
(
1
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
normals
[
j
+
k
*
nq1
]
=
(
gmat
[
0
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
1
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
2
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
])
*
jac
[
nq0
-
1
+
nq0
*
j
+
nq01
*
k
];
normals
[
nqtot
+
j
+
k
*
nq1
]
=
(
gmat
[
3
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
4
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
5
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
])
*
jac
[
nq0
-
1
+
nq0
*
j
+
nq01
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nq1
]
=
(
gmat
[
6
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
7
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
]
+
gmat
[
8
][
nq0
-
1
+
nq0
*
j
+
nq01
*
k
])
*
jac
[
nq0
-
1
+
nq0
*
j
+
nq01
*
k
];
}
}
case
3
:
points0
=
geomFactors
->
GetPointsKey
(
1
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
}
case
3
:
{
for
(
j
=
0
;
j
<
nq1
;
++
j
)
{
for
(
j
=
0
;
j
<
nq
uad0
;
++
j
)
for
(
k
=
0
;
k
<
nq
2
;
++
k
)
{
for
(
k
=
0
;
k
<
nquad2
;
++
k
)
{
normals
[
j
+
k
*
nquad0
]
=
-
gmat
[
0
][
j
*
nquad0
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
*
nquad0
+
nquad0
*
nquad1
*
k
];
normals
[
nqtot
+
j
+
k
*
nquad0
]
=
-
gmat
[
3
][
j
*
nquad0
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
*
nquad0
+
nquad0
*
nquad1
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nquad0
]
=
-
gmat
[
6
][
j
*
nquad0
+
nquad0
*
nquad1
*
k
]
*
jac
[
j
*
nquad0
+
nquad0
*
nquad1
*
k
];
}
}
points0
=
geomFactors
->
GetPointsKey
(
1
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
normals
[
j
+
k
*
nq1
]
=
-
gmat
[
0
][
j
*
nq0
+
nq01
*
k
]
*
jac
[
j
*
nq0
+
nq01
*
k
];
normals
[
nqtot
+
j
+
k
*
nq1
]
=
-
gmat
[
3
][
j
*
nq0
+
nq01
*
k
]
*
jac
[
j
*
nq0
+
nq01
*
k
];
normals
[
2
*
nqtot
+
j
+
k
*
nq1
]
=
-
gmat
[
6
][
j
*
nq0
+
nq01
*
k
]
*
jac
[
j
*
nq0
+
nq01
*
k
];
}
}
points0
=
geomFactors
->
GetPointsKey
(
1
);
points1
=
geomFactors
->
GetPointsKey
(
2
);
break
;
}
default:
ASSERTL0
(
false
,
"face is out of range (face < 3)"
);
}
...
...
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