File: fracframe.h

package info (click to toggle)
esys-particle 2.3.5%2Bdfsg2-1
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 13,132 kB
  • sloc: cpp: 81,480; python: 5,872; makefile: 1,259; sh: 313; perl: 225
file content (82 lines) | stat: -rw-r--r-- 1,774 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
/////////////////////////////////////////////////////////////
//                                                         //
// Copyright (c) 2003-2017 by The University of Queensland //
// Centre for Geoscience Computing                         //
// http://earth.uq.edu.au/centre-geoscience-computing      //
//                                                         //
// Primary Business: Brisbane, Queensland, Australia       //
// Licensed under the Open Software License version 3.0    //
// http://www.apache.org/licenses/LICENSE-2.0              //
//                                                         //
/////////////////////////////////////////////////////////////

#ifndef __FRACFRAME_H
#define __FRACFRAME_H

//--- system includes ---
#include <string>
#include <vector>
#include <set>
#include <utility>
#include <map>

using std::string;
using std::vector;
using std::set;
using std::pair;
using std::map;

//--- project includes ---
#include "Foundation/vec3.h"



class FracFrame
{
 private:
  // bond data

  struct bdata
  {
    int id1,id2,tag;
  };
  
  class cmp
  {
  public:
    bool operator ()(const bdata&, const bdata&);
  };

  set<bdata,FracFrame::cmp> m_bonds;
  map<int,Vec3> posmap;
  map<int,float> radmap;
  map<int,int> tagmap;

  // private helper functions
  int get_version(const string&);
  vector<string> get_filenames(const string&, int);

 public:
  
  // types
  struct fdata
  {
    Vec3 pos;
    Vec3 normal;
    double size;
    double dist;
    int id1, id2;
    int tag;
  };

 
  FracFrame();

  void readFile(const string&);
  void readFileRot(const string&,bool);
  void readFileTagged(const string&,int);
  void readFileRotTagged(const string&,int);
  vector<fdata> getFrac(FracFrame&);
};

#endif // __FRACFRAME_H