+++ /dev/null
-// Copyright (C) 2003 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
-// This library is free software; you can redistribute it and/or
-// modify it under the terms of the GNU Lesser General Public
-// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
-//
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// Lesser General Public License for more details.
-//
-// You should have received a copy of the GNU Lesser General Public
-// License along with this library; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-
-#include <fstream>
-#include <iomanip>
-
-#include "UNV2412_Structure.hxx"
-#include "UNV_Utilities.hxx"
-
-using namespace std;
-using namespace UNV;
-using namespace UNV2412;
-
-#ifdef _DEBUG_
-static int MYDEBUG = 1;
-#else
-static int MYDEBUG = 0;
-#endif
-
-static string _label_dataset = "2412";
-
-UNV2412::TRecord::TRecord():
- phys_prop_tab_num(2),
- mat_prop_tab_num(1),
- color(7),
- beam_orientation(0),
- beam_fore_end(0),
- beam_aft_end(0)
-{}
-
-void UNV2412::Read(std::ifstream& in_stream, TDataSet& theDataSet)
-{
- if(!in_stream.good())
- EXCEPTION(runtime_error,"ERROR: Input file not good.");
-
- /*
- * adjust the \p istream to our
- * position
- */
- if(!beginning_of_dataset(in_stream,_label_dataset))
- EXCEPTION(runtime_error,"ERROR: Could not find "<<_label_dataset<<" dataset!");
-
- TElementLab aLabel;
- for(; !in_stream.eof();){
- in_stream >> aLabel ;
- if(aLabel == -1){
- // end of dataset is reached
- break;
- }
-
- int n_nodes;
- TRecord aRec;
- in_stream>>aRec.fe_descriptor_id;
- in_stream>>aRec.phys_prop_tab_num;
- in_stream>>aRec.mat_prop_tab_num;
- in_stream>>aRec.color;
- in_stream>>n_nodes;
-
- if(IsBeam(aRec.fe_descriptor_id)){
- in_stream>>aRec.beam_orientation;
- in_stream>>aRec.beam_fore_end;
- in_stream>>aRec.beam_aft_end;
- }
-
- aRec.node_labels.resize(n_nodes);
- for(int j=0; j < n_nodes; j++){
- // read node labels
- in_stream>>aRec.node_labels[j];
- }
-
- theDataSet.insert(TDataSet::value_type(aLabel,aRec));
- }
-
-}
-
-
-void UNV2412::Write(std::ofstream& out_stream, const TDataSet& theDataSet)
-{
- if(!out_stream.good())
- EXCEPTION(runtime_error,"ERROR: Output file not good.");
-
- /*
- * Write beginning of dataset
- */
- out_stream<<" -1\n";
- out_stream<<" "<<_label_dataset<<"\n";
-
- TDataSet::const_iterator anIter = theDataSet.begin();
- for(; anIter != theDataSet.end(); anIter++){
- const TElementLab& aLabel = anIter->first;
- const TRecord& aRec = anIter->second;
- out_stream<<std::setw(10)<<aLabel; /* element ID */
- out_stream<<std::setw(10)<<aRec.fe_descriptor_id; /* type of element */
- out_stream<<std::setw(10)<<aRec.phys_prop_tab_num;
- out_stream<<std::setw(10)<<aRec.mat_prop_tab_num;
- out_stream<<std::setw(10)<<aRec.color;
- out_stream<<std::setw(10)<<aRec.node_labels.size()<<std::endl; /* No. of nodes per element */
-
- if(IsBeam(aRec.fe_descriptor_id)){
- out_stream<<std::setw(10)<<aRec.beam_orientation;
- out_stream<<std::setw(10)<<aRec.beam_fore_end;
- out_stream<<std::setw(10)<<aRec.beam_aft_end<<std::endl;
- }
-
- int n_nodes = aRec.node_labels.size();
- int iEnd = (n_nodes-1)/8 + 1;
- for(int i = 0, k = 0; i < iEnd; i++){
- int jEnd = n_nodes - 8*(i+1);
- if(jEnd < 0)
- jEnd = 8 + jEnd;
- else
- jEnd = 8;
- for(int j = 0; j < jEnd ; k++, j++){
- out_stream<<std::setw(10)<<aRec.node_labels[k];
- }
- out_stream<<std::endl;
- }
- }
-
- /*
- * Write end of dataset
- */
- out_stream<<" -1\n";
-}
-
-
-bool UNV2412::IsBeam(int theFeDescriptorId){
- switch (theFeDescriptorId){
- case 11:
- case 21:
- case 22:
- case 24:
- case 25:
- return true;
- }
- return false;
-}
-
-
-bool UNV2412::IsFace(int theFeDescriptorId){
- switch (theFeDescriptorId){
-
- case 71: // TRI3
- case 72:
- case 74:
-
- case 41: // Plane Stress Linear Triangle - TRI3
- case 91: // Thin Shell Linear Triangle - TRI3
-
- case 42: // Plane Stress Quadratic Triangle - TRI6
- case 92: // Thin Shell Quadratic Triangle - TRI6
-
- case 43: // Plane Stress Cubic Triangle
-
- case 44: // Plane Stress Linear Quadrilateral - QUAD4
- case 94: // Thin Shell Linear Quadrilateral - QUAD4
-
- case 45: // Plane Stress Quadratic Quadrilateral - QUAD8
- case 95: // Thin Shell Quadratic Quadrilateral - QUAD8
-
- case 46: // Plane Stress Cubic Quadrilateral
-
- return true;
- }
- return false;
-}
-
-
-bool UNV2412::IsVolume(int theFeDescriptorId){
- //if(!IsBeam(theFeDescriptorId) && !IsFace(theFeDescriptorId))
- // return true;
- switch (theFeDescriptorId){
-
- case 111: // Solid Linear Tetrahedron - TET4
- case 118: // Solid Quadratic Tetrahedron - TET10
-
- case 112: // Solid Linear Prism - PRISM6
-
- case 115: // Solid Linear Brick - HEX8
- case 116: // Solid Quadratic Brick - HEX20
-
- case 117: // Solid Cubic Brick
- return true;
- }
- return false;
-}