![]() |
Mesh Oriented datABase
(version 5.4.1)
Array-based unstructured mesh datastructure
|
00001 /*
00002 * CSLAMUtils.hpp
00003 *
00004 */
00005
00006 #ifndef CSLAMUTILS_HPP_
00007 #define CSLAMUTILS_HPP_
00008
00009 #include "moab/CartVect.hpp"
00010 #include "moab/Core.hpp"
00011 #include "moab/IntxMesh/IntxUtils.hpp"
00012
00013 class IntxUtilsCSLAM
00014 {
00015 public:
00016 /* Analytical functions */
00017
00018 // page 4 Nair Lauritzen paper
00019 // param will be: (la1, te1), (la2, te2), b, c; hmax=1, r=1/2
00020 static double quasi_smooth_field( double lam, double tet, double* params );
00021
00022 // page 4
00023 static double smooth_field( double lam, double tet, double* params );
00024
00025 // page 5
00026 static double slotted_cylinder_field( double lam, double tet, double* params );
00027
00028 // More MBCSLAM specific API
00029 static void departure_point_case1( moab::CartVect& arrival_point,
00030 double t,
00031 double delta_t,
00032 moab::CartVect& departure_point );
00033
00034 static void velocity_case1( moab::CartVect& arrival_point, double t, moab::CartVect& velo );
00035
00036 // looking at DP tag, create the spanning quads, write a file (with rank) and
00037 // then delete the new entities (vertices) and the set of quads
00038 static moab::ErrorCode create_span_quads( moab::Interface* mb, moab::EntityHandle euler_set, int rank );
00039
00040 // copy the euler mesh into a new set, lagr_set (or lagr set into a new euler set)
00041 // it will be used in 3rd method, when the positions of nodes are modified, no new nodes are
00042 // created
00043 // it will also be used to
00044 static moab::ErrorCode deep_copy_set( moab::Interface* mb, moab::EntityHandle source, moab::EntityHandle dest );
00045 };
00046
00047 #endif