/***********************************************************************
*
* ELMER, A Computational Fluid Dynamics Program.
*
* Copyright 1st April 1995 - , Center for Scientific Computing,
* Finland.
*
* All rights reserved. No part of this program may be used,
* reproduced or transmitted in any form or by any means
* without the written permission of CSC.
*
* Address: Center for Scientific Computing
* Tietotie 6, P.O. BOX 405
* 02101 Espoo, Finland
* Tel. +358 0 457 2001
* Telefax: +358 0 457 2302
* EMail: Jari.Jarvinen@csc.fi
************************************************************************/
/***********************************************************************
Program: ELMER Front
Module: ecif_bodyElementGroup.h
Language: C++
Date: 01.10.98
Version: 1.00
Author(s): Martti Verho
Revisions:
Abstract: A Base class for bodyelemets.
A bodyelement is a separable entity in a body.
They can be edges, surfaces etc. depending on the dimension.
************************************************************************/
#ifndef _ECIF_BODYELEMENT_GROUP_
#define _ECIF_BODYELEMENT_GROUP_
#include "ecif_def.h"
#include "ecif_def_stl.h"
#include "ecif_boundbox.h"
#include "ecif_geometry.h"
#include "ecif_modelObject.h"
// Element group for boundary conditions etc.
//
class BodyElementGroup : public ModelObject
{
friend class Control;
friend class Model;
public:
BodyElementGroup();
BodyElementGroup(ecif_ElementGroup_X& trx_bg, enum objectType bndr_type);
virtual ~BodyElementGroup();
int addElement(int bn_id);
bool check();
const BodyElement* getElement(int index);
int getElementId(int index);
const int* getElementIds() { return elementIds; }
int getElementTag(int index);
const int* getElementTags() { return elementTags; }
int getBoundaryConditionId() { return boundaryConditionId;}
int getBoundaryParameterId() { return boundaryParameterId;}
enum objectType getElementType() const { return elemType;}
enum elementGroupType getGroupType() const { return groupType;}
int getNofElements() { return nofElements; }
int getParentId(short parent) const;
int getParentLayer(short parent) const;
int getParentTag(short parent) const;
bool hasElement(int be_id);
void initName();
static void initClass(Model* model);
bool isExplicit() { return groupType == EXPLICIT_GROUP; }
bool isImplicit() { return groupType == IMPLICIT_GROUP; }
bool isVirtual() { return groupType == VIRTUAL_GROUP; }
virtual ostream& output_emf(ostream& out, short indent_size, short indent_level);
int removeElement(int bn_id);
void setElementIdsAndTags(int nof_ids, int* be_ids, int* be_tgs);
void setBoundaryConditionId(int bc_id);
void setBoundaryParameterId(int pid);
void setElementType(enum objectType et);
void setType(enum elementGroupType gt);
void setParentId(short parent_nbr, int parent_id);
void setParentLayer(short parent_nbr, int layer);
void setParentTag(short parent_nbr, int parent_tag);
protected:
void init();
static int last_tag;
int* elementIds;
int* elementTags;
int boundaryConditionId;
int boundaryParameterId;
int nofElements;
enum elementGroupType groupType; // REAL_GROUP etc.
enum objectType elemType; // OT_EDGE etc.
int parent1Id;
int parent2Id;
int parent1Layer;
int parent2Layer;
int parent1Tag;
int parent2Tag;
} ;
#endif
syntax highlighted by Code2HTML, v. 0.9.1