Loading examples/hamilton-jacobi/CMakeLists.txt +8 −2 Original line number Diff line number Diff line Loading @@ -4,12 +4,18 @@ set( tnl_hamilton_jacobi_SOURCES hamiltonJacobiProblemSolver.h hamiltonJacobiProblemSolver_impl.h main.cpp hamiltonJacobiProblemConfig.h ) hamiltonJacobiProblemConfig.h tnl-direct-eikonal-solver.h ) ADD_EXECUTABLE(tnl-hamilton-jacobi${debugExt} main.cpp) target_link_libraries (tnl-hamilton-jacobi${debugExt} tnl${debugExt}-${tnlVersion} ) ADD_EXECUTABLE(tnl-direct-eikonal-solver${debugExt} tnl-direct-eikonal-solver.cpp ) target_link_libraries (tnl-direct-eikonal-solver${debugExt} tnl${debugExt}-${tnlVersion} ) INSTALL( TARGETS tnl-hamilton-jacobi${debugExt} tnl-direct-eikonal-solver${debugExt} RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) examples/hamilton-jacobi/tnl-direct-eikonal-solver.cpp 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.cpp * Author: oberhuber * * Created on July 13, 2016, 1:13 PM */ #include "tnl-direct-eikonal-solver.h" No newline at end of file examples/hamilton-jacobi/tnl-direct-eikonal-solver.cu 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.cu * Author: oberhuber * * Created on July 13, 2016, 1:13 PM */ #include "tnl-direct-eikonal-solver.h" examples/hamilton-jacobi/tnl-direct-eikonal-solver.h 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.h * Author: oberhuber * * Created on July 13, 2016, 1:09 PM */ #pragma once #include <solvers/tnlSolver.h> #include <solvers/tnlFastBuildConfigTag.h> #include <solvers/tnlBuildConfigTags.h> #include <functions/tnlConstantFunction.h> #include <functions/tnlMeshFunction.h> //#include <problems/tnlHeatEquationProblem.h> #include <mesh/tnlGrid.h> #include "tnlDirectEikonalProblem.h" //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef tnlFastBuildConfig BuildConfig; template< typename MeshConfig > class tnlDirectEikonalSolverConfig { public: static void configSetup( tnlConfigDescription& config ) { config.addDelimiter( "Direct eikonal equation solver settings:" ); }; }; template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class tnlDirectEikonalSolverSetter { public: typedef Real RealType; typedef Device DeviceType; typedef Index IndexType; typedef tnlStaticVector< MeshType::meshDimensions, Real > Vertex; static bool run( const tnlParameterContainer& parameters ) { enum { Dimensions = MeshType::meshDimensions }; typedef tnlConstantFunction< Dimensions, Real > Anisotropy; typedef tnlDirectEikonalProblem< MeshType, Anisotropy > Problem; SolverStarter solverStarter; return solverStarter.template run< Problem >( parameters ); }; }; int main( int argc, char* argv[] ) { if( ! tnlSolver< tnlDirectEikonalSolverSetter, tnlDirectEikonalSolverConfig, BuildConfig >::run( argc, argv ) ) return EXIT_FAILURE; return EXIT_SUCCESS; } examples/hamilton-jacobi/tnlDirectEikonalProblem.h 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnlFastSweepingMethod.h * Author: oberhuber * * Created on July 13, 2016, 1:19 PM */ #pragma once #include <problems/tnlPDEProblem.h> #include <functions/tnlMeshFunction.h> template< typename Mesh, typename Anisotropy, typename Real = typename Mesh::RealType, typename Index = typename Mesh::IndexType > class tnlDirectEikonalProblem : public tnlPDEProblem< Mesh, TimeIndependentProblem, Real, typename Mesh::DeviceType, Index > { public: typedef Real RealType; typedef typename Mesh::DeviceType DeviceType; typedef Index IndexType; typedef tnlMeshFunction< Mesh > MeshFunctionType; typedef tnlPDEProblem< Mesh, TimeIndependentProblem, RealType, DeviceType, IndexType > BaseType; using typename BaseType::MeshType; using typename BaseType::DofVectorType; using typename BaseType::MeshDependentDataType; static tnlString getTypeStatic(); tnlString getPrologHeader() const; void writeProlog( tnlLogger& logger, const tnlParameterContainer& parameters ) const; bool writeEpilog( tnlLogger& logger ); bool setup( const tnlParameterContainer& parameters ); IndexType getDofs( const MeshType& mesh ) const; void bindDofs( const MeshType& mesh, const DofVectorType& dofs ); bool solve(); protected: MeshFunctionType u; }; #include "tnlDirectEikonalProblem_impl.h" No newline at end of file Loading
examples/hamilton-jacobi/CMakeLists.txt +8 −2 Original line number Diff line number Diff line Loading @@ -4,12 +4,18 @@ set( tnl_hamilton_jacobi_SOURCES hamiltonJacobiProblemSolver.h hamiltonJacobiProblemSolver_impl.h main.cpp hamiltonJacobiProblemConfig.h ) hamiltonJacobiProblemConfig.h tnl-direct-eikonal-solver.h ) ADD_EXECUTABLE(tnl-hamilton-jacobi${debugExt} main.cpp) target_link_libraries (tnl-hamilton-jacobi${debugExt} tnl${debugExt}-${tnlVersion} ) ADD_EXECUTABLE(tnl-direct-eikonal-solver${debugExt} tnl-direct-eikonal-solver.cpp ) target_link_libraries (tnl-direct-eikonal-solver${debugExt} tnl${debugExt}-${tnlVersion} ) INSTALL( TARGETS tnl-hamilton-jacobi${debugExt} tnl-direct-eikonal-solver${debugExt} RUNTIME DESTINATION bin PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE )
examples/hamilton-jacobi/tnl-direct-eikonal-solver.cpp 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.cpp * Author: oberhuber * * Created on July 13, 2016, 1:13 PM */ #include "tnl-direct-eikonal-solver.h" No newline at end of file
examples/hamilton-jacobi/tnl-direct-eikonal-solver.cu 0 → 100644 +14 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.cu * Author: oberhuber * * Created on July 13, 2016, 1:13 PM */ #include "tnl-direct-eikonal-solver.h"
examples/hamilton-jacobi/tnl-direct-eikonal-solver.h 0 → 100644 +71 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnl-direct-eikonal-solver.h * Author: oberhuber * * Created on July 13, 2016, 1:09 PM */ #pragma once #include <solvers/tnlSolver.h> #include <solvers/tnlFastBuildConfigTag.h> #include <solvers/tnlBuildConfigTags.h> #include <functions/tnlConstantFunction.h> #include <functions/tnlMeshFunction.h> //#include <problems/tnlHeatEquationProblem.h> #include <mesh/tnlGrid.h> #include "tnlDirectEikonalProblem.h" //typedef tnlDefaultBuildMeshConfig BuildConfig; typedef tnlFastBuildConfig BuildConfig; template< typename MeshConfig > class tnlDirectEikonalSolverConfig { public: static void configSetup( tnlConfigDescription& config ) { config.addDelimiter( "Direct eikonal equation solver settings:" ); }; }; template< typename Real, typename Device, typename Index, typename MeshType, typename MeshConfig, typename SolverStarter > class tnlDirectEikonalSolverSetter { public: typedef Real RealType; typedef Device DeviceType; typedef Index IndexType; typedef tnlStaticVector< MeshType::meshDimensions, Real > Vertex; static bool run( const tnlParameterContainer& parameters ) { enum { Dimensions = MeshType::meshDimensions }; typedef tnlConstantFunction< Dimensions, Real > Anisotropy; typedef tnlDirectEikonalProblem< MeshType, Anisotropy > Problem; SolverStarter solverStarter; return solverStarter.template run< Problem >( parameters ); }; }; int main( int argc, char* argv[] ) { if( ! tnlSolver< tnlDirectEikonalSolverSetter, tnlDirectEikonalSolverConfig, BuildConfig >::run( argc, argv ) ) return EXIT_FAILURE; return EXIT_SUCCESS; }
examples/hamilton-jacobi/tnlDirectEikonalProblem.h 0 → 100644 +68 −0 Original line number Diff line number Diff line /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: tnlFastSweepingMethod.h * Author: oberhuber * * Created on July 13, 2016, 1:19 PM */ #pragma once #include <problems/tnlPDEProblem.h> #include <functions/tnlMeshFunction.h> template< typename Mesh, typename Anisotropy, typename Real = typename Mesh::RealType, typename Index = typename Mesh::IndexType > class tnlDirectEikonalProblem : public tnlPDEProblem< Mesh, TimeIndependentProblem, Real, typename Mesh::DeviceType, Index > { public: typedef Real RealType; typedef typename Mesh::DeviceType DeviceType; typedef Index IndexType; typedef tnlMeshFunction< Mesh > MeshFunctionType; typedef tnlPDEProblem< Mesh, TimeIndependentProblem, RealType, DeviceType, IndexType > BaseType; using typename BaseType::MeshType; using typename BaseType::DofVectorType; using typename BaseType::MeshDependentDataType; static tnlString getTypeStatic(); tnlString getPrologHeader() const; void writeProlog( tnlLogger& logger, const tnlParameterContainer& parameters ) const; bool writeEpilog( tnlLogger& logger ); bool setup( const tnlParameterContainer& parameters ); IndexType getDofs( const MeshType& mesh ) const; void bindDofs( const MeshType& mesh, const DofVectorType& dofs ); bool solve(); protected: MeshFunctionType u; }; #include "tnlDirectEikonalProblem_impl.h" No newline at end of file