/***********************************************************************
*
*       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_boundaryCondition.h
Language:   C++
Date:       01.10.98
Version:    1.00
Author(s):  Martti Verho
Revisions:

Abstract:   A Base class for boundary conditions.

************************************************************************/

#ifndef _ECIF_BOUNDARY_CONDITION_
#define _ECIF_BOUNDARY_CONDITION_

#include "ecif_parameter.h"


// ****** Boundary Condition class ******
class BoundaryCondition : public Parameter{
public:
  BoundaryCondition();
  BoundaryCondition(int p_id);
  BoundaryCondition(int cid, int parent_id, char* data_string, char* param_name);
  ~BoundaryCondition();
  int getLastId() {return last_id;}
  void setLastId(int lid) {last_id = lid;}
  const char* getGuiName() { return "Constraint"; }
  const char* getArrayName() { return "BoundaryCondition"; }
  const char* getEmfName() { return "Boundary Condition"; }
  const char* getSifName() { return SIF_BOUNDARY_CONDITION; }
  ecif_parameterType getParameterType() { return ECIF_BOUNDARY_CONDITION; }
  bool hasZeroVelocity();
  static void initClass(Model* model);
  virtual ostream& output_sif(ostream& out, short indent_size, short indent_level, SifOutputControl& soc);
  void setName(char* param_name);
  void updateParentId();
  void updateParentInfo(int parent_id);
  void updateTargetTags();

protected:
  static int last_id;
  static Model* model;
  int nofTargetBoundaries;
  int* targetBoundaryTags;
  int targetBodyTag;
  const ModelObject* getParentEmfObject();
};


#endif


syntax highlighted by Code2HTML, v. 0.9.1