cgma
|
#include <CABodies.hpp>
Public Member Functions | |
virtual | ~CABodies () |
CABodies (RefEntity *) | |
CABodies (RefEntity *, CubitSimpleAttrib *) | |
virtual const std::type_info & | entity_type_info () const |
CubitStatus | actuate () |
CubitStatus | update () |
CubitSimpleAttrib | cubit_simple_attrib () |
CubitStatus | reset () |
int | int_attrib_type () |
Private Attributes | |
int | m_interface |
int | m_uniqueID |
DLIList< int > | m_sharedBodies |
DLIList< int > | m_sharedProcs |
DLIList< int > | m_ghostProcs |
Definition at line 18 of file CABodies.hpp.
CABodies::~CABodies | ( | ) | [virtual] |
Definition at line 90 of file CABodies.cpp.
{ }
CABodies::CABodies | ( | RefEntity * | new_attrib_owner | ) |
Definition at line 77 of file CABodies.cpp.
: CubitAttrib(new_attrib_owner) , m_interface(0) , m_uniqueID(0) { if (DEBUG_FLAG(138)) { PRINT_DEBUG_138( "Creating BODIES attribute for %s %d\n", (attribOwnerEntity ? attribOwnerEntity->class_name() : "(none)"), (attribOwnerEntity ? attribOwnerEntity->id() : 0)); } }
CABodies::CABodies | ( | RefEntity * | new_attrib_owner, |
CubitSimpleAttrib * | csa_ptr | ||
) |
Definition at line 25 of file CABodies.cpp.
: CubitAttrib(new_attrib_owner) { assert ( csa_ptr != NULL ); if (DEBUG_FLAG(138)) { PRINT_DEBUG_138( "Creating BODIES attribute from CSA for %s %d\n", (attribOwnerEntity ? attribOwnerEntity->class_name() : "(none)"), (attribOwnerEntity ? attribOwnerEntity->id() : 0)); } std::vector<int> i_list = csa_ptr->int_data_list(); // first, the ints if (i_list.size() > 0) { m_interface = i_list[0]; // is interface if (i_list.size() > 1) { m_uniqueID = i_list[1]; // unique ID if(i_list.size() > 2) { // shared bodies int num_list = i_list[2]; for (int i = 0; i < num_list; i++) m_sharedBodies.append(i_list[3+i]); // shared procs int new_start = 3 + num_list; if((int)i_list.size() > new_start + 1) { num_list = i_list[new_start]; for (int i = 1; i <= num_list; i++) m_sharedProcs.append(i_list[new_start + i]); // ghost procs new_start += num_list+1; if((int)i_list.size() > new_start + 1) { num_list = i_list[new_start]; for (int i = 1; i <= num_list; i++) m_ghostProcs.append(i_list[new_start + i]); } } } } } }
CubitStatus CABodies::actuate | ( | ) | [virtual] |
Implements CubitAttrib.
Definition at line 94 of file CABodies.cpp.
{ CubitStatus status = CUBIT_SUCCESS; if (hasActuated == CUBIT_TRUE) return CUBIT_SUCCESS; if (DEBUG_FLAG(138)) { PRINT_DEBUG_138( "Actuating BODIES attribute for %s %d\n", attribOwnerEntity->class_name(), attribOwnerEntity->id()); } // create a TDParallel for the entity, if it doesn't already exist TDParallel *par = (TDParallel *) attrib_owner()->get_TD(&TDParallel::is_parallel); if (par != NULL) { if (par->is_interface() != m_interface) { PRINT_ERROR("TDParallel interface check is failed for %s %d.\n", attrib_owner()->class_name(), attrib_owner()->id()); return CUBIT_FAILURE; } // check to make sure it's the same body list par->get_shared_body_list()->reset(); m_sharedBodies.reset(); int size = par->get_shared_body_list()->size(); for (int i = 0; i < size; i++) { if (par->get_shared_body_list()->get_and_step() != m_sharedBodies.get_and_step()) { PRINT_ERROR("Different body found for %s %d.\n", attrib_owner()->class_name(), attrib_owner()->id()); return CUBIT_FAILURE; } } par->get_shared_proc_list()->reset(); m_sharedProcs.reset(); size = par->get_shared_proc_list()->size(); for (int i = 0; i < size; i++) { if (par->get_shared_proc_list()->get_and_step() != m_sharedProcs.get_and_step()) { PRINT_ERROR("Different processor found for %s %d.\n", attrib_owner()->class_name(), attrib_owner()->id()); return CUBIT_FAILURE; } } par->get_ghost_proc_list()->reset(); m_ghostProcs.reset(); size = par->get_ghost_proc_list()->size(); for (int i = 0; i < size; i++) { if (par->get_ghost_proc_list()->get_and_step() != m_ghostProcs.get_and_step()) { PRINT_ERROR("Different ghost processor found for %s %d.\n", attrib_owner()->class_name(), attrib_owner()->id()); return CUBIT_FAILURE; } } if ((int)par->get_unique_id() != m_uniqueID) { PRINT_ERROR("Different unique ID found for %s %d.\n", attrib_owner()->class_name(), attrib_owner()->id()); return CUBIT_FAILURE; } } else { // else make a new one par = new TDParallel(attrib_owner(), &m_sharedBodies, &m_sharedProcs, &m_ghostProcs, m_uniqueID, m_interface); } delete_attrib(CUBIT_TRUE); hasActuated = CUBIT_TRUE; return status; }
CubitSimpleAttrib CABodies::cubit_simple_attrib | ( | ) | [virtual] |
Implements CubitAttrib.
Definition at line 223 of file CABodies.cpp.
{ std::vector<CubitString> cs_list; std::vector<int> i_list; // attribute internal name cs_list.push_back(att_internal_name()); // is interface i_list.push_back(m_interface); // unique ID i_list.push_back(m_uniqueID); // shared bodies i_list.push_back(m_sharedBodies.size()); int i; for (i = m_sharedBodies.size(); i > 0; i--) { i_list.push_back(m_sharedBodies.get_and_step()); } // shared procs i_list.push_back(m_sharedProcs.size()); for (i = m_sharedProcs.size(); i > 0; i--) { i_list.push_back(m_sharedProcs.get_and_step()); } // ghost procs i_list.push_back(m_ghostProcs.size()); for (i = m_ghostProcs.size(); i > 0; i--) { i_list.push_back(m_ghostProcs.get_and_step()); } CubitSimpleAttrib csattrib = CubitSimpleAttrib(&cs_list, NULL, &i_list); return csattrib; }
const std::type_info & CABodies::entity_type_info | ( | ) | const [virtual] |
Definition at line 267 of file CABodies.cpp.
{ return typeid(CABodies); }
int CABodies::int_attrib_type | ( | ) | [virtual] |
CubitStatus CABodies::reset | ( | ) | [virtual] |
Implements CubitAttrib.
Definition at line 261 of file CABodies.cpp.
{ m_sharedBodies.clean_out(); return CUBIT_SUCCESS; }
CubitStatus CABodies::update | ( | ) | [virtual] |
Implements CubitAttrib.
Definition at line 171 of file CABodies.cpp.
{ if (hasUpdated) return CUBIT_SUCCESS; if (DEBUG_FLAG(138)) { PRINT_DEBUG_138( "Updating BODIES attribute for %s %d\n", attribOwnerEntity->class_name(), attribOwnerEntity->id()); } // set the updated flag hasUpdated = CUBIT_TRUE; // if the owner has a body list, save it, otherwise delete this one TDParallel *td_par = (TDParallel *) attrib_owner()->get_TD(&TDParallel::is_parallel); if (td_par == NULL) { delete_attrib(CUBIT_TRUE); } else { m_interface = td_par->is_interface(); m_uniqueID = td_par->get_unique_id(); int size = td_par->get_shared_body_list()->size(); td_par->get_shared_body_list()->reset(); m_sharedBodies.clean_out(); for (int i = 0; i < size; i++) { m_sharedBodies.append(td_par->get_shared_body_list()->get_and_step()); } size = td_par->get_shared_proc_list()->size(); td_par->get_shared_proc_list()->reset(); m_sharedProcs.clean_out(); for (int i = 0; i < size; i++) { m_sharedProcs.append(td_par->get_shared_proc_list()->get_and_step()); } size = td_par->get_ghost_proc_list()->size(); td_par->get_ghost_proc_list()->reset(); m_ghostProcs.clean_out(); for (int i = 0; i < size; i++) { m_ghostProcs.append(td_par->get_ghost_proc_list()->get_and_step()); } if (delete_attrib() == CUBIT_TRUE) delete_attrib(CUBIT_FALSE); } return CUBIT_SUCCESS; }
DLIList<int> CABodies::m_ghostProcs [private] |
Definition at line 28 of file CABodies.hpp.
int CABodies::m_interface [private] |
Definition at line 22 of file CABodies.hpp.
DLIList<int> CABodies::m_sharedBodies [private] |
Definition at line 24 of file CABodies.hpp.
DLIList<int> CABodies::m_sharedProcs [private] |
Definition at line 26 of file CABodies.hpp.
int CABodies::m_uniqueID [private] |
Definition at line 22 of file CABodies.hpp.