Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
F
Frap Theory
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
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
hubatsch
Frap Theory
Commits
ba597e58
Commit
ba597e58
authored
4 years ago
by
Lars Hubatsch
Browse files
Options
Downloads
Patches
Plain Diff
Correcting weak form, now all terms. Seems to work.
parent
610d21fd
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
FloryHugg_DiffUnbleached.ipynb
+10
-52
10 additions, 52 deletions
FloryHugg_DiffUnbleached.ipynb
with
10 additions
and
52 deletions
FloryHugg_DiffUnbleached.ipynb
+
10
−
52
View file @
ba597e58
...
...
@@ -2,7 +2,7 @@
"cells": [
{
"cell_type": "code",
"execution_count":
8
,
"execution_count":
null
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -23,7 +23,7 @@
},
{
"cell_type": "code",
"execution_count":
28
,
"execution_count":
null
,
"metadata": {},
"outputs": [],
"source": [
...
...
@@ -32,8 +32,10 @@
" c = df.Function(F)\n",
" # Weak form\n",
" form = ((df.inner((c-c0)/dt, tc) +\n",
" 1/Ga0*(1-c_tot)* df.inner(df.grad(c), df.grad(tc))) -\n",
" 1/Ga0*(1-c_tot)/c_tot* c*df.inner(df.grad(c_tot), df.grad(tc))) * df.dx\n",
" df.inner(df.grad(c), df.grad((1-c_tot)/Ga0*tc))) -\n",
" df.inner(df.grad(c_tot), df.grad((1-c_tot)/Ga0/c_tot*c*tc))-\n",
" tc*df.inner(df.grad(c), df.grad((1-c_tot)/Ga0))+\n",
" tc*df.inner(df.grad(c_tot), df.grad((1-c_tot)/c_tot*c/Ga0))) * df.dx\n",
" t = 0\n",
" # Solve in time\n",
" ti = time.time()\n",
...
...
@@ -48,30 +50,9 @@
},
{
"cell_type": "code",
"execution_count":
29
,
"execution_count":
null
,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"9.5367431640625e-07\n",
"0.2761721611022949\n",
"0.5432901382446289\n",
"0.8246011734008789\n",
"1.096081256866455\n",
"1.3647711277008057\n",
"1.6441941261291504\n",
"1.6689300537109375e-06\n",
"0.272655725479126\n",
"0.5432279109954834\n",
"0.8257148265838623\n",
"1.1101319789886475\n",
"1.3879718780517578\n",
"1.6780588626861572\n"
]
}
],
"outputs": [],
"source": [
"# Interpolate c_tot and initial conditions\n",
"# 3D:\n",
...
...
@@ -106,32 +87,9 @@
},
{
"cell_type": "code",
"execution_count":
30
,
"execution_count":
null
,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.495, 0.505)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"outputs": [],
"source": [
"# 1D:\n",
"plt.plot(np.linspace(0, 1, 10000), [c0_1([x]) for x in np.linspace(0, 1, 10000)])\n",
...
...
%% Cell type:code id: tags:
```
python
import
dolfin
as
df
import
matplotlib.pyplot
as
plt
import
mshr
as
ms
import
numpy
as
np
import
time
df
.
set_log_level
(
40
)
# domain = ms.Sphere(df.Point(0, 0, 0), 1.0)
# mesh = ms.generate_mesh(domain, 50)
mesh
=
df
.
UnitIntervalMesh
(
100000
)
dt
=
0.000001
F
=
df
.
FunctionSpace
(
mesh
,
'
CG
'
,
1
)
```
%% Cell type:code id: tags:
```
python
def
calc_sim
(
c0
,
c_tot
,
Ga0
):
tc
=
df
.
TestFunction
(
F
)
c
=
df
.
Function
(
F
)
# Weak form
form
=
((
df
.
inner
((
c
-
c0
)
/
dt
,
tc
)
+
1
/
Ga0
*
(
1
-
c_tot
)
*
df
.
inner
(
df
.
grad
(
c
),
df
.
grad
(
tc
)))
-
1
/
Ga0
*
(
1
-
c_tot
)
/
c_tot
*
c
*
df
.
inner
(
df
.
grad
(
c_tot
),
df
.
grad
(
tc
)))
*
df
.
dx
df
.
inner
(
df
.
grad
(
c
),
df
.
grad
((
1
-
c_tot
)
/
Ga0
*
tc
)))
-
df
.
inner
(
df
.
grad
(
c_tot
),
df
.
grad
((
1
-
c_tot
)
/
Ga0
/
c_tot
*
c
*
tc
))
-
tc
*
df
.
inner
(
df
.
grad
(
c
),
df
.
grad
((
1
-
c_tot
)
/
Ga0
))
+
tc
*
df
.
inner
(
df
.
grad
(
c_tot
),
df
.
grad
((
1
-
c_tot
)
/
c_tot
*
c
/
Ga0
)))
*
df
.
dx
t
=
0
# Solve in time
ti
=
time
.
time
()
for
i
in
range
(
6
):
print
(
time
.
time
()
-
ti
)
df
.
solve
(
form
==
0
,
c
)
df
.
assign
(
c0
,
c
)
t
+=
dt
print
(
time
.
time
()
-
ti
)
return
c0
```
%% Cell type:code id: tags:
```
python
# Interpolate c_tot and initial conditions
# 3D:
# c_tot.interpolate(df.Expression('0.4*tanh(-350*(sqrt((x[0])*(x[0])+(x[1])*(x[1])+(x[2])*(x[2]))-0.2))+0.5', degree=1))
# c0.interpolate(df.Expression(('(x[0]<0.5) && sqrt((x[0])*(x[0])+(x[1])*(x[1])+(x[2])*(x[2]))<0.2 ? 0 :'
# '0.4*tanh(-350*(sqrt((x[0])*(x[0])+(x[1])*(x[1])+(x[2])*(x[2]))-0.2)) + 0.5'),
# degree=1))
# 1D, high partitioning
c0_1
=
df
.
Function
(
F
)
c_tot_1
=
df
.
Function
(
F
)
Ga0_1
=
df
.
Function
(
F
)
c_tot_1
.
interpolate
(
df
.
Expression
(
'
0.4*tanh(-350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001))+0.5
'
,
degree
=
1
))
c0_1
.
interpolate
(
df
.
Expression
((
'
sqrt((x[0]-0.5)*(x[0]-0.5))<0.001 ? 0 :
'
'
0.4*tanh(-350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001)) +0.5
'
),
degree
=
1
))
Ga0_1
.
interpolate
(
df
.
Expression
(
'
0*(tanh(-350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001))+1)+1
'
,
degree
=
1
))
# 1D, no partitioning
c0_9
=
df
.
Function
(
F
)
c_tot_9
=
df
.
Function
(
F
)
Ga0_9
=
df
.
Function
(
F
)
c_tot_9
.
interpolate
(
df
.
Expression
(
'
0*tanh(-350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001))+0.9
'
,
degree
=
1
))
c0_9
.
interpolate
(
df
.
Expression
((
'
sqrt((x[0]-0.5)*(x[0]-0.5))<0.001 ? 0 :
'
'
0*tanh(-350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001)) +0.9
'
),
degree
=
1
))
Ga0_9
.
interpolate
(
df
.
Expression
(
'
4.*(tanh(350000*(sqrt((x[0]-0.5)*(x[0]-0.5))-0.001))+1)+1
'
,
degree
=
1
))
c0_1
=
calc_sim
(
c0_1
,
c_tot_1
,
Ga0_1
)
c0_9
=
calc_sim
(
c0_9
,
c_tot_9
,
Ga0_9
)
```
%% Output
9.5367431640625e-07
0.2761721611022949
0.5432901382446289
0.8246011734008789
1.096081256866455
1.3647711277008057
1.6441941261291504
1.6689300537109375e-06
0.272655725479126
0.5432279109954834
0.8257148265838623
1.1101319789886475
1.3879718780517578
1.6780588626861572
%% Cell type:code id: tags:
```
python
# 1D:
plt
.
plot
(
np
.
linspace
(
0
,
1
,
10000
),
[
c0_1
([
x
])
for
x
in
np
.
linspace
(
0
,
1
,
10000
)])
plt
.
plot
(
np
.
linspace
(
0
,
1
,
10000
),
[
c0_9
([
x
])
for
x
in
np
.
linspace
(
0
,
1
,
10000
)])
plt
.
xlim
(
0.495
,
0.505
)
# plt.ylim(0, 0.3)
# 3D:
# plt.plot(np.linspace(0, 0.5, 1000), [c0([x, 0, 0]) for x in np.linspace(0, 0.5, 1000)])
```
%% Output
(0.495, 0.505)
%% Cell type:code id: tags:
```
python
# 1D:
plt
.
plot
(
np
.
linspace
(
0
,
1
,
10000
),
[
c0
([
x
])
for
x
in
np
.
linspace
(
0
,
1
,
10000
)])
plt
.
xlim
(
0.495
,
0.505
)
plt
.
ylim
(
0.
,
0.3
)
```
%% Cell type:code id: tags:
```
python
plt
.
plot
(
np
.
linspace
(
0
,
1
,
2000
),
[
Ga0
([
x
])
for
x
in
np
.
linspace
(
0
,
1
,
2000
)])
```
%% Cell type:code id: tags:
```
python
plt
.
plot
(
np
.
linspace
(
0
,
1
,
1000
),
[
c_tot
([
x
])
for
x
in
np
.
linspace
(
0
,
1
,
1000
)])
```
%% Cell type:code id: tags:
```
python
```
...
...
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