[Paraview] RungeKutta4 implementation issue

Fred Fred stan1313 at hotmail.fr
Tue Aug 18 09:10:55 EDT 2009


Hello,
My main concern is why does the integrator return 0 instead of OUT_OF_DOMAIN?
Regards


Date: Mon, 17 Aug 2009 10:45:31 -0400
Subject: Re: [Paraview] RungeKutta4 implementation issue
From: zhanping.liu at kitware.com
To: biddisco at cscs.ch
CC: stan1313 at hotmail.fr; paraview at paraview.org

Hi Fred:
 
    As JB suggested, please try using RK45, which employs an adaptive step size that is insensitive to the velocity magnitude and hence is capable of capturing accurate shape of the curve (flow line). Using RK4 (still adopting a fixed step size) does not guarantee a sufficient / desired acurracy of numerical integration (though certainly it is better than RK2) since it is stil sensitive to the velocity magnitude.

 
    Recently we improved the flow line integration accuracy issue. For any problems, please feel free to let us know.
 
    Thanks.
 
    -Zhanping

   -- 
Zhanping Liu, PhD
Kitware, Inc.
28 Corporate Drive
Clifton Park, NY 12065-8662
Phone: 518-371-3971 x 138
http://www.zhanpingliu.org


On Mon, Aug 17, 2009 at 5:06 AM, John Biddiscombe <biddisco at cscs.ch> wrote:


I suggest you attach a debugger to the code and step through. Then you'll be able to answer your question. 

Since the velocity field of your data may be high, it is entirely possible that the computed next position is outside of the bounds. Perhaps reducing the step size will help. Try even Rk4.5 with adaptive steps, this may help if the velocity gradient at the edge of the domain is very large..


JB





How is it possible???

  double *bds = reader->GetOutput()->GetBounds();
  printf("%lf %lf %lf %lf\n", bds[0], bds[1], bds[2], bds[3]);

-> 0.000000 69.000000 0.000000 69.000000


  printf("point1[0]=%f point1[1]=%f point1[2]=%f\n", point1[0], point1[1], point1[2]);

-> point1[0]=58.196274 point1[1]=68.862898 point1[2]=0.000000

  if (integrator->ComputeNextStep(point1, point2, 0, delT.Interval, stepTaken, minStep, maxStep, this->MaximumError, error) != 0)

    break;
  printf("point2[0]=%f point2[1]=%f point2[2]=%f\n", point2[0], point2[1], point2[2]);

-> point2[0]=59.002164 point2[1]=69.454414 point2[2]=0.000000

PS: This message should probably be sent to the VTK mailing list but it seems that it is no longer so active...





Découvrez toutes les possibilités de communication avec vos proches 
_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView

Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview
  

-- 
John Biddiscombe,                            email:biddisco @ cscs.ch
http://www.cscs.ch/
CSCS, Swiss National Supercomputing Centre  | Tel:  +41 (91) 610.82.07
Via Cantonale, 6928 Manno, Switzerland      | Fax:  +41 (91) 610.82.82
_______________________________________________
Powered by www.kitware.com


Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Please keep messages on-topic and check the ParaView Wiki at: http://paraview.org/Wiki/ParaView


Follow this link to subscribe/unsubscribe:
http://www.paraview.org/mailman/listinfo/paraview







_________________________________________________________________
Vous voulez savoir ce que vous pouvez faire avec le nouveau Windows Live ? Lancez-vous !
http://www.microsoft.com/windows/windowslive/default.aspx
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.paraview.org/pipermail/paraview/attachments/20090818/be80bc04/attachment.htm>


More information about the ParaView mailing list