MOAB: Mesh Oriented datABase
(version 5.4.1)
|
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