HJB_Solver_Package
所属分类:matlab编程
开发工具:matlab
文件大小:304KB
下载次数:23
上传日期:2012-02-14 06:38:11
上 传 者:
imas
说明: Hamilton-Jacobi solver on unstructured triangular grids
文件列表:
HJB_Solver_Package (0, 2009-07-30)
HJB_Solver_Package\@SolveEikonal (0, 2009-07-30)
HJB_Solver_Package\@SolveEikonal\Compute_Soln.m (1139, 2009-07-22)
HJB_Solver_Package\@SolveEikonal\Hopf_Lax_Update.m (1097, 2009-07-22)
HJB_Solver_Package\@SolveEikonal\private (0, 2009-07-30)
HJB_Solver_Package\@SolveEikonal\private\Find_Min_On_Tri.m (1056, 2009-07-22)
HJB_Solver_Package\@SolveEikonal\private\Get_Triangle_Neighbors.m (2327, 2009-07-30)
HJB_Solver_Package\@SolveEikonal\private\setdiff_fast.m (484, 2009-07-22)
HJB_Solver_Package\@SolveEikonal\SolveEikonal.m (2631, 2009-07-22)
HJB_Solver_Package\@SolveEikonal\Sweep_Mesh_Once.m (287, 2009-07-20)
HJB_Solver_Package\@SolveEikonalmex (0, 2009-07-30)
HJB_Solver_Package\@SolveEikonalmex\Compute_Soln.m (1689, 2009-07-30)
HJB_Solver_Package\@SolveEikonalmex\private (0, 2009-07-30)
HJB_Solver_Package\@SolveEikonalmex\private\Get_Triangle_Neighbors.m (2327, 2009-07-30)
HJB_Solver_Package\@SolveEikonalmex\private\setdiff_fast.m (484, 2009-07-22)
HJB_Solver_Package\@SolveEikonalmex\SolveEikonalmex.m (3356, 2009-07-22)
HJB_Solver_Package\Compile_HJB_Solve.m (580, 2009-07-30)
HJB_Solver_Package\dist_circle.m (178, 2009-07-22)
HJB_Solver_Package\HJB_Data.mat (18155, 2009-07-22)
HJB_Solver_Package\HJB_Solve (0, 2009-07-30)
HJB_Solver_Package\HJB_Solve\HJB_Solver.cc (11440, 2009-07-30)
HJB_Solver_Package\HJB_Solve\HJB_Solver.h (2088, 2009-07-25)
HJB_Solver_Package\HJB_Solve\mexHJB_Solve.cpp (2741, 2009-07-30)
HJB_Solver_Package\HJB_Solve\Misc_Stuff.h (561, 2009-07-27)
HJB_Solver_Package\HJB_Solve\Setup_2D_Triangle_Mesh_Data.c (3667, 2009-07-27)
HJB_Solver_Package\HJB_Solve\Setup_Matrix_Data.c (3035, 2009-07-30)
HJB_Solver_Package\HJB_Solve\Setup_Node_Data.c (2487, 2009-07-27)
HJB_Solver_Package\HJB_Solve\Setup_Param.c (4273, 2009-07-27)
HJB_Solver_Package\HJB_Solve\Triangle_Neighbor_Data.cc (3961, 2009-07-27)
HJB_Solver_Package\HJB_Solve\Triangle_Neighbor_Data.h (1594, 2009-07-27)
HJB_Solver_Package\screen_shot.jpg (293002, 2009-07-23)
HJB_Solver_Package\Test_HJB_Solve.m (3752, 2009-07-23)
HJB_Solver_Package\VERSION_HISTORY.txt (264, 2009-07-30)
Hamilton-Jacobi solver on unstructured triangular grids
(C) 07/20/2009, Shawn W. Walker
This code is open source under the BSD license (see the LICENSE.txt file).
DESCRIPTION
========================================================================
This code implements a variational solver for static Hamilton-Jacobi-Bellman
type equations on unstructured triangular grids.
The implementation is based on the paper:
"Finite-Element Discretization Of Static Hamilton-Jacobi Equations Based
On A Local Variational Principle" by F. Bornemann and C. Rasch
Comments:
1. There is no restriction on the type of triangulation, i.e. it does not
need to be acute. But the method will require more than one sweep
of the mesh (because of lack of causality). Howver, only a few iterations
should be necessary to achieve convergence.
2. Two versions of the code are implemented. One is pure MATLAB and the
other uses a MEX function. The MEX version is faster by about a factor
of 100 for the example that I include.
3. The MEX version allows for a variable distance metric. See the
test code for a demonstration.
4. The MEX version uses a FIFO buffer to implement a non-linear adaptive
Gauss-Seidel iteration (see the paper). FIFO buffers cannot be easily
implemented in pure MATLAB.
5. The MEX version C++ code uses Object-Oriented methods.
6. I put in a lot of error checking to make the code robust to user-error.
However, I make no claim that this software is completely correct!!! Use
it at your own risk!
USAGE
========================================================================
1. Both versions use the OOP interface of MATLAB. You should put the
following directories:
\@SolveEikonal
\@SolveEikonalmex
in an appropriate location, i.e. in your MATLAB path.
2. If you want to use the MEX version, you need a C++ compiler. I used
MS Visual C++, express edition. I have found that this is better than
the built in C compiler in MATLAB. The code is located in this
sub-directory:
\HJB_Solve
Also, see the file `Compile_HJB_Solve.m' for how to compile.
3. To run a demo, run this m-file: `Test_HJB_Solve.m'. This will load an
example mesh from the MATLAB data file: `HJB_Data.mat'.
4. Warning! Make sure the triangle meshes you use are positively oriented!
This code *might* not work if the triangles are not positively oriented.
5. If you want slightly more efficient initialization, modify the following
files:
\@SolveEikonal\private\Get_Triangle_Neighbors.m
\@SolveEikonalmex\private\Get_Triangle_Neighbors.m
to use `sparse2' instead of `sparse'. <-- this can be found in the
SuiteSparse package by Tim Davis.
6. For ***-bit systems: you may need to change a line in this file:
\@SolveEikonalmex\Compute_Soln.m
The line to look at is:
[u_soln, ERROR] = mexHJB_Solve(obj.TM.Vtx,uint32(obj.TM.DoFmap),obj.TM.TriStarData,uint32(obj.Bdy.Nodes),...
uint32(Adj_Node_List),u_soln,obj.Param,obj.Metric);
You may need to change `uint32' to `uint***'.
COMPATIBILITY NOTES
========================================================================
The tool was developed in its current form with R2007a.
Tested in 2009 on systems:
-- Windows XP, 32-bit
Fully functional with R2007a.
-- LINUX, ***-bit
Fully functional with R2007a.
BUG REPORTS AND FEEDBACK
========================================================================
Please report any problems and/or bugs to: walker@cims.nyu.edu
近期下载者:
相关文件:
收藏者: