|
31 | 31 | * |
32 | 32 | -------------------------------------------------------- |
33 | 33 | * |
34 | | - * Last updated: 19 January, 2019 |
| 34 | + * Last updated: 28 February, 2019 |
35 | 35 | * |
36 | 36 | * Copyright 2013-2019 |
37 | 37 | * Darren Engwirda |
|
154 | 154 | if (this->_kind == |
155 | 155 | jmsh_kind::ellipsoid_mesh) |
156 | 156 | { |
157 | | - //!! do things here... |
| 157 | + typename |
| 158 | + geom_data::ellipsoid_mesh_3d |
| 159 | + ::node_type _ndat ; |
| 160 | + _ndat.pval(0) = _pval[0]; |
| 161 | + _ndat.pval(1) = _pval[1]; |
| 162 | + _ndat.pval(2) = + 0.0 ; |
| 163 | + _ndat.itag () = _itag ; |
| 164 | + |
| 165 | + this->_geom-> |
| 166 | + _ellipsoid_mesh_3d. |
| 167 | + _mesh.push_node(_ndat, false) ; |
158 | 168 | } |
159 | 169 | } |
160 | 170 | /*---------------------------------- parse EDGE2 data */ |
|
201 | 211 | if (this->_kind == |
202 | 212 | jmsh_kind::ellipsoid_mesh) |
203 | 213 | { |
204 | | - //!! do things here... |
| 214 | + typename |
| 215 | + geom_data::ellipsoid_mesh_3d |
| 216 | + ::edge_type _edat ; |
| 217 | + _edat.node(0) = _node[0]; |
| 218 | + _edat.node(1) = _node[1]; |
| 219 | + _edat.itag () = _itag ; |
| 220 | + |
| 221 | + this->_geom-> |
| 222 | + _ellipsoid_mesh_3d. |
| 223 | + _mesh.push_edge(_edat, false) ; |
205 | 224 | } |
206 | 225 | } |
207 | 226 | /*---------------------------------- parse TRIA3 data */ |
|
308 | 327 | _file, geom_reader(&_geom)); |
309 | 328 | } |
310 | 329 | else |
311 | | - { |
| 330 | + { |
| 331 | + _jlog.push( |
| 332 | + "**parse error: file not found!\n" ) ; |
| 333 | + |
312 | 334 | _errv = __file_not_located ; |
313 | 335 | } |
314 | 336 | _file.close (); |
|
531 | 553 | _geom._ellipsoid_mesh_3d. |
532 | 554 | _radC = _gmsh._radii._data[0] ; |
533 | 555 | } |
| 556 | + |
| 557 | + for (auto _ipos = (size_t) +0 ; |
| 558 | + _ipos != _gmsh._vert3._size ; |
| 559 | + ++_ipos ) |
| 560 | + { |
| 561 | + typename |
| 562 | + geom_data::ellipsoid_mesh_3d |
| 563 | + ::node_type _ndat ; |
| 564 | + _ndat.pval(0) = _gmsh. |
| 565 | + _vert3._data[_ipos]._ppos[0]; |
| 566 | + _ndat.pval(1) = _gmsh. |
| 567 | + _vert3._data[_ipos]._ppos[1]; |
| 568 | + _ndat.pval(2) = + 0.0 ; |
| 569 | + _ndat.itag () = _gmsh. |
| 570 | + _vert3._data[_ipos]._itag ; |
| 571 | + |
| 572 | + _geom._ellipsoid_mesh_3d. |
| 573 | + _mesh.push_node(_ndat , false) ; |
| 574 | + } |
| 575 | + |
| 576 | + for (auto _ipos = (size_t) +0 ; |
| 577 | + _ipos != _gmsh._edge2._size ; |
| 578 | + ++_ipos ) |
| 579 | + { |
| 580 | + typename |
| 581 | + geom_data::ellipsoid_mesh_3d |
| 582 | + ::edge_type _edat ; |
| 583 | + _edat.node(0) = _gmsh. |
| 584 | + _edge2._data[_ipos]._node[0]; |
| 585 | + _edat.node(1) = _gmsh. |
| 586 | + _edge2._data[_ipos]._node[1]; |
| 587 | + _edat.itag () = _gmsh. |
| 588 | + _edge2._data[_ipos]._itag ; |
| 589 | + |
| 590 | + _geom._ellipsoid_mesh_3d. |
| 591 | + _mesh.push_edge(_edat , false) ; |
| 592 | + } |
534 | 593 | } |
535 | 594 |
|
536 | 595 | } |
|
557 | 616 | geom_data &_geom |
558 | 617 | ) |
559 | 618 | { |
560 | | - iptr_type _errv = __no_error ; |
561 | | - |
562 | | - std::string _path ; |
563 | | - std::string _name ; |
564 | | - std::string _fext ; |
565 | | - file_part ( |
566 | | - _jcfg._geom_file, |
567 | | - _path, _name, _fext ) ; |
568 | | - |
569 | | - if (_fext.find("msh") == +0 ) |
570 | | - { |
571 | 619 | return geom_from_jmsh ( |
572 | 620 | _jcfg, _jlog, _geom ) ; |
573 | | - } |
574 | | - else |
575 | | - { |
576 | | - _errv =__file_not_located ; |
577 | | - } |
578 | | - |
579 | | - return ( _errv ) ; |
580 | 621 | } |
581 | 622 |
|
582 | 623 | /* |
|
869 | 910 |
|
870 | 911 | _errv = __invalid_argument ; |
871 | 912 | } |
| 913 | + |
| 914 | + iptr_type _imin = |
| 915 | + std::numeric_limits<iptr_type>::max() ; |
| 916 | + iptr_type _imax = |
| 917 | + std::numeric_limits<iptr_type>::min() ; |
| 918 | + |
| 919 | + iptr_type _nnPT = +0 ; |
| 920 | + iptr_type _nnE2 = +0 ; |
| 921 | + |
| 922 | + for (auto _iter = _geom. |
| 923 | + _ellipsoid_mesh_3d._mesh._set1.head() ; |
| 924 | + _iter != _geom. |
| 925 | + _ellipsoid_mesh_3d._mesh._set1.tend() ; |
| 926 | + ++_iter ) |
| 927 | + { |
| 928 | + if (_iter->mark() < 0) continue; |
| 929 | + |
| 930 | + _nnPT += +1 ; |
| 931 | + } |
| 932 | + |
| 933 | + for (auto _iter = _geom. |
| 934 | + _ellipsoid_mesh_3d._mesh._set2.head() ; |
| 935 | + _iter != _geom. |
| 936 | + _ellipsoid_mesh_3d._mesh._set2.tend() ; |
| 937 | + ++_iter ) |
| 938 | + { |
| 939 | + if (_iter->mark() < 0) continue; |
| 940 | + |
| 941 | + _imin = std::min( |
| 942 | + _imin, _iter->node(0)) ; |
| 943 | + _imin = std::min( |
| 944 | + _imin, _iter->node(1)) ; |
| 945 | + _imax = std::max( |
| 946 | + _imax, _iter->node(0)) ; |
| 947 | + _imax = std::max( |
| 948 | + _imax, _iter->node(1)) ; |
| 949 | + |
| 950 | + _nnE2 += +1 ; |
| 951 | + |
| 952 | + if (_imin < +0 || |
| 953 | + _imax >= _nnPT) |
| 954 | + { |
| 955 | + _errv = __invalid_argument ; |
| 956 | + } |
| 957 | + } |
| 958 | + |
| 959 | + if (_errv != __no_error) |
| 960 | + { |
| 961 | + _jlog. push ( |
| 962 | + "**input error: GEOM. EDGE2 indexing is incorrect.\n") ; |
| 963 | + |
| 964 | + return _errv ; |
| 965 | + } |
872 | 966 | } |
873 | 967 |
|
874 | 968 | return ( _errv ) ; |
|
1020 | 1114 | _geom._ellipsoid_mesh_3d._radB) ; |
1021 | 1115 |
|
1022 | 1116 | __dumpREAL("|3-RAD.|", |
1023 | | - _geom._ellipsoid_mesh_3d._radC) ; |
| 1117 | + _geom._ellipsoid_mesh_3d._radC) ; |
| 1118 | + |
| 1119 | + _jlog.push("\n") ; |
| 1120 | + |
| 1121 | + iptr_type _nnPT = +0 ; |
| 1122 | + iptr_type _nnE2 = +0 ; |
| 1123 | + |
| 1124 | + for (auto _iter = _geom. |
| 1125 | + _ellipsoid_mesh_3d._mesh._set1.head() ; |
| 1126 | + _iter != _geom. |
| 1127 | + _ellipsoid_mesh_3d._mesh._set1.tend() ; |
| 1128 | + ++_iter ) |
| 1129 | + { |
| 1130 | + if (_iter->mark()>=+0) _nnPT += +1 ; |
| 1131 | + } |
| 1132 | + |
| 1133 | + __dumpINTS("|COORD.|", _nnPT) |
| 1134 | + |
| 1135 | + for (auto _iter = _geom. |
| 1136 | + _ellipsoid_mesh_3d._mesh._set2.head() ; |
| 1137 | + _iter != _geom. |
| 1138 | + _ellipsoid_mesh_3d._mesh._set2.tend() ; |
| 1139 | + ++_iter ) |
| 1140 | + { |
| 1141 | + if (_iter->mark()>=+0) _nnE2 += +1 ; |
| 1142 | + } |
| 1143 | + |
| 1144 | + __dumpINTS("|EDGE-2|", _nnE2) |
1024 | 1145 | } |
1025 | 1146 |
|
1026 | 1147 | _jlog.push("\n") ; |
|
0 commit comments