MOAB: Mesh Oriented datABase  (version 5.2.1)
IntxUtilsCSLAM.hpp
Go to the documentation of this file.
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, double t, double delta_t,
00030                                        moab::CartVect& departure_point );
00031 
00032     static void velocity_case1( moab::CartVect& arrival_point, double t, moab::CartVect& velo );
00033 
00034     // looking at DP tag, create the spanning quads, write a file (with rank) and
00035     // then delete the new entities (vertices) and the set of quads
00036     static moab::ErrorCode create_span_quads( moab::Interface* mb, moab::EntityHandle euler_set, int rank );
00037 
00038     // copy the euler mesh into a new set, lagr_set (or lagr set into a new euler set)
00039     // it will be used in 3rd method, when the positions of nodes are modified, no new nodes are
00040     //  created
00041     // it will also be used to
00042     static moab::ErrorCode deep_copy_set( moab::Interface* mb, moab::EntityHandle source, moab::EntityHandle dest );
00043 };
00044 
00045 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines