/*********************************************************************** * * 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_inputIdeas.h Language: C++ Date: 01.10.98 Version: 1.00 Author(s): Martti Verho Revisions: Abstract: A base class for input of I-deas CAD input files. ************************************************************************/ #ifndef _ECIF_INPUT_IDEAS #define _ECIF_INPUT_IDEAS #include "ecif_input.h" const int NEW_DATASET = -1; const int DS_UNITS = 164; const int DS_COLOR = 436; const int DS_WIRE_FRAME_CURVES = 801; const int DS_BODIES_AND_BOUNDARIES_2430 = 2430; // Obsolate Ideas format! const int DS_BODIES_AND_BOUNDARIES_2432 = 2432; // Obsolate Ideas format! const int DS_BODIES_AND_BOUNDARIES_2435 = 2435; // Current Ideas format! const int DS_ELEMENTS_780 = 780; const int DS_ELEMENTS_2412 = 2412; const int DS_NODES_781 = 781; const int DS_NODES_2411 = 2411; const short MAX_IDEAS_ELEMENT_CODE = 200; const short MAX_IDEAS_NOF_ELEMENT_SETS = 9999; const int MESH_INDEX = -1; const int NO_SUCH_MATERIAL = -1; // A 'reset' value const int NO_SUCH_INDEX = -1; // A 'reset' value struct IdeasElementInfo { IdeasElementInfo(); int elementSetId; }; inline IdeasElementInfo::IdeasElementInfo() { elementSetId = -1; } struct IdeasElementSetInfo { IdeasElementSetInfo(); ~IdeasElementSetInfo(); int internalId; bool isBoundarySet; char* name; int externalBodyId; int externalBoundaryId; int nofElements; int nofMatchedElements; }; inline IdeasElementSetInfo::IdeasElementSetInfo() { name = NULL; internalId = NO_INDEX; isBoundarySet = false; externalBodyId = NO_INDEX; externalBoundaryId = NO_INDEX; nofElements = 0; nofMatchedElements = 0; } inline IdeasElementSetInfo::~IdeasElementSetInfo() { delete[] name; } const int FORMWIDTH = 10; const int DATASETLEN = 7; // lenght of dataset number when read in from file class GcPoint; class Model; //***** class InputIdeas : public Input { public: InputIdeas(enum ecif_modelDimension m_dim, ifstream& infile, char* filename); ~InputIdeas(); bool readMeshGeometry(); protected: int* elementCodeCounters; IdeasElementInfo* elementInfos; IdeasElementSetInfo elementSetInfos[MAX_IDEAS_NOF_ELEMENT_SETS]; int maxExternalBulkElemId; int maxExternalBndrElemId; int maxMaterialId; // void countNofBoundaryAndBulkElements(); bool endofDataset(); bool endofDataset(char* fileline); int findDataset(int new_flag = 1); enum ecif_modelDimension findCadModelDimension(); enum ecif_modelDimension findMeshModelDimension(); virtual bool readCadGeometry(); bool readCadHeader(); int readColor(); int readDatasetNbr(int newflag); virtual ecif_geometryType readGeomType(char* s); //bool processMeshFileData(); bool readMeshHeader(); virtual bool readLine(Body* body, char* buffer); Rc readMeshBodiesAndBoundaries(int data_set); Rc readMeshElements(int data_set); Rc readMeshNodes(int data_set); Rc readNofMeshElements(int data_set, int& nof_elements, int& max_element_id, int& max_material_id); Rc readNofMeshNodes(int data_set, int& nof_elements, int& max_element_id); virtual bool readNurbs(Body* body, char* buffer); virtual GcPoint* readPoint(char* fileline); virtual bool readPoint(char* fileline, Point3& point); virtual BodyElement* readVertex(char* fileline); } ; #endif