Faster way of solving PDE

The name of the pictureThe name of the pictureThe name of the pictureClash 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.







share|cite|improve this question

















  • 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















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.







share|cite|improve this question

















  • 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













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.







share|cite|improve this question













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.









share|cite|improve this question












share|cite|improve this question




share|cite|improve this question








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













  • 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
















active

oldest

votes











Your Answer




StackExchange.ifUsing("editor", function ()
return StackExchange.using("mathjaxEditing", function ()
StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
);
);
, "mathjax-editing");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "69"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: false,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);








 

draft saved


draft discarded


















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



































active

oldest

votes













active

oldest

votes









active

oldest

votes






active

oldest

votes










 

draft saved


draft discarded


























 


draft saved


draft discarded














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













































































Comments

Popular posts from this blog

What is the equation of a 3D cone with generalised tilt?

Color the edges and diagonals of a regular polygon

Relationship between determinant of matrix and determinant of adjoint?