Faster way of solving PDE
Clash Royale CLAN TAG#URR8PPP
up vote
1
down vote
favorite
I am building a model which, among other things, needs to solve the following PDE multiple times:
$$fracpartial phipartial t = D_o nabla^2 phi + s_o - k_o$$
Where $s_o$ and $k_o$ are respectively source and sink grids.
Note that because the equation above represents diffusion of oxygen, which is significantly faster than the biological processes that the model simulates, I could also use the adiabatic solution:
$$D_o nabla^2 phi + s_o - k_o = 0$$
The equation is to be solved in three dimensions.
I am currently using FiPy (https://www.ctcms.nist.gov/fipy) that uses the Finite Volume Method, which takes about 10 seconds for a 50x50x50 grid with $dx = dy = dz = 1$.
I am not an expert in calculus, but was wondering if the above equation had a direct/one-step solution or if I was limited to numerical methods?
Boundary conditions are no-flux.
differential-equations pde numerical-methods
 |Â
show 9 more comments
up vote
1
down vote
favorite
I am building a model which, among other things, needs to solve the following PDE multiple times:
$$fracpartial phipartial t = D_o nabla^2 phi + s_o - k_o$$
Where $s_o$ and $k_o$ are respectively source and sink grids.
Note that because the equation above represents diffusion of oxygen, which is significantly faster than the biological processes that the model simulates, I could also use the adiabatic solution:
$$D_o nabla^2 phi + s_o - k_o = 0$$
The equation is to be solved in three dimensions.
I am currently using FiPy (https://www.ctcms.nist.gov/fipy) that uses the Finite Volume Method, which takes about 10 seconds for a 50x50x50 grid with $dx = dy = dz = 1$.
I am not an expert in calculus, but was wondering if the above equation had a direct/one-step solution or if I was limited to numerical methods?
Boundary conditions are no-flux.
differential-equations pde numerical-methods
1
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12
 |Â
show 9 more comments
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I am building a model which, among other things, needs to solve the following PDE multiple times:
$$fracpartial phipartial t = D_o nabla^2 phi + s_o - k_o$$
Where $s_o$ and $k_o$ are respectively source and sink grids.
Note that because the equation above represents diffusion of oxygen, which is significantly faster than the biological processes that the model simulates, I could also use the adiabatic solution:
$$D_o nabla^2 phi + s_o - k_o = 0$$
The equation is to be solved in three dimensions.
I am currently using FiPy (https://www.ctcms.nist.gov/fipy) that uses the Finite Volume Method, which takes about 10 seconds for a 50x50x50 grid with $dx = dy = dz = 1$.
I am not an expert in calculus, but was wondering if the above equation had a direct/one-step solution or if I was limited to numerical methods?
Boundary conditions are no-flux.
differential-equations pde numerical-methods
I am building a model which, among other things, needs to solve the following PDE multiple times:
$$fracpartial phipartial t = D_o nabla^2 phi + s_o - k_o$$
Where $s_o$ and $k_o$ are respectively source and sink grids.
Note that because the equation above represents diffusion of oxygen, which is significantly faster than the biological processes that the model simulates, I could also use the adiabatic solution:
$$D_o nabla^2 phi + s_o - k_o = 0$$
The equation is to be solved in three dimensions.
I am currently using FiPy (https://www.ctcms.nist.gov/fipy) that uses the Finite Volume Method, which takes about 10 seconds for a 50x50x50 grid with $dx = dy = dz = 1$.
I am not an expert in calculus, but was wondering if the above equation had a direct/one-step solution or if I was limited to numerical methods?
Boundary conditions are no-flux.
differential-equations pde numerical-methods
edited Aug 1 at 9:55
asked Jul 31 at 17:36
MrD
273114
273114
1
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12
 |Â
show 9 more comments
1
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12
1
1
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12
 |Â
show 9 more comments
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmath.stackexchange.com%2fquestions%2f2868287%2ffaster-way-of-solving-pde%23new-answer', 'question_page');
);
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
1
What does $nabla^3$ mean? Whereas $nabla^2$, the Laplacian operator, is a scalar operator, $nabla^3 = vecnablanabla^2$ looks like it should be a vector-valued operator. You mention diffusion, so I'm assuming this is a typo?
– John Barber
Jul 31 at 17:57
Yes it's increasingly important to write out what dimensions to multiply and which are contractions or outer products the higher exponent for tensor multiplication.
– mathreadler
Jul 31 at 18:01
You're solving 3D diffusion on a fixed Cartesian grid with sources/sinks. What kind of boundary conditions do you have? On the off chance that periodic boundary conditions are allowed, one can numerically solve this problem very fast via Fast Fourier Transform techniques, especially if the source/sink term is constant in time.
– John Barber
Jul 31 at 18:05
@JohnBarber sorry yes, it should be $nabla^2$. Conditions are no-flux on the boundary. I edited accordingly.
– MrD
Jul 31 at 18:12
I would guess you can get similar speeds in Matlab or octave with sparse matrix solvers. Most of the time is building equation system and you only need to do that once. But for really impressive speed I would consider using some software which can use GPU for this as many numerical algorithms are extremely parallellisable and monster GPUs of today have 5000 cores where monster CPUs have maybe 16 or 32 cores.
– mathreadler
Jul 31 at 18:12