RINGMesh  Version 5.0.0
A programming library for geological model meshes
io_well_group.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012-2017, Association Scientifique pour la Geologie et ses
3  * Applications (ASGA). All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  * * Redistributions of source code must retain the above copyright
8  * notice, this list of conditions and the following disclaimer.
9  * * Redistributions in binary form must reproduce the above copyright
10  * notice, this list of conditions and the following disclaimer in the
11  * documentation and/or other materials provided with the distribution.
12  * * Neither the name of ASGA nor the
13  * names of its contributors may be used to endorse or promote products
14  * derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
18  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ASGA BE LIABLE FOR ANY DIRECT,
20  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  *
27  * http://www.ring-team.org
28  *
29  * RING Project
30  * Ecole Nationale Superieure de Geologie - GeoRessources
31  * 2 Rue du Doyen Marcel Roubault - TSA 70605
32  * 54518 VANDOEUVRE-LES-NANCY
33  * FRANCE
34  */
35 
36 #include <ringmesh/io/io.h>
37 
38 #include <geogram/basic/file_system.h>
39 #include <geogram/basic/line_stream.h>
40 
42 
45 #include <ringmesh/mesh/well.h>
46 
52 namespace
53 {
54  using namespace RINGMesh;
55 
56 #include "well_group/io_smesh.cpp"
57 #include "well_group/io_wl.cpp"
58 }
59 
60 namespace RINGMesh
61 {
62  void well_load( const std::string& filename, WellGroup< 3 >& wells )
63  {
64  Logger::out( "I/O", "Loading file ", filename, "..." );
65 
66  std::unique_ptr< WellGroupIOHandler > handler =
68  handler->load( filename, wells );
69  }
70 
71  std::unique_ptr< WellGroupIOHandler > WellGroupIOHandler::create(
72  const std::string& format )
73  {
74  auto handler = WellGroupIOHandlerFactory::create( format );
75  if( !handler )
76  {
77  Logger::err( "I/O", "Currently supported file formats are: " );
78  for( const std::string& name :
80  {
81  Logger::err( "I/O", " ", name );
82  }
83 
84  throw RINGMeshException(
85  "I/O", "Unsupported file format: ", format );
86  }
87  return handler;
88  }
89 
90  std::unique_ptr< WellGroupIOHandler > WellGroupIOHandler::get_handler(
91  const std::string& filename )
92  {
93  return create( GEO::FileSystem::extension( filename ) );
94  }
95 
96  /*
97  * Initializes the possible handler for IO files
98  */
100  {
101  WellGroupIOHandlerFactory::register_creator< WLIOHandler >( "wl" );
102  WellGroupIOHandlerFactory::register_creator< SmeshIOHandler >(
103  "smesh" );
104  }
105 } // namespace RINGMesh
static std::vector< Key > list_creators()
Definition: factory.h:97
static std::unique_ptr< BaseClass > create(const Key &key, const Args &... args)
Definition: factory.h:85
static std::unique_ptr< WellGroupIOHandler > get_handler(const std::string &filename)
static void err(const std::string &feature, const Args &... args)
Definition: logger.h:68
static void out(const std::string &feature, const Args &... args)
Definition: logger.h:61
void RINGMESH_API well_load(const std::string &filename, WellGroup3D &wells)
static std::unique_ptr< WellGroupIOHandler > create(const std::string &format)
Classes to build GeoModel from various inputs.
Definition: algorithm.h:48