NimbleSM
NimbleSM is a solid mechanics simulation code for dynamic systems
Loading...
Searching...
No Matches
nimble_kokkos_material_factory.h
Go to the documentation of this file.
1/*
2//@HEADER
3// ************************************************************************
4//
5// NimbleSM
6// Copyright 2018
7// National Technology & Engineering Solutions of Sandia, LLC (NTESS)
8//
9// Under the terms of Contract DE-NA0003525 with NTESS, the U.S. Government
10// retains certain rights in this software.
11//
12// Redistribution and use in source and binary forms, with or without
13// modification, are permitted provided that the following conditions are
14// met:
15//
16// 1. Redistributions of source code must retain the above copyright
17// notice, this list of conditions and the following disclaimer.
18//
19// 2. Redistributions in binary form must reproduce the above copyright
20// notice, this list of conditions and the following disclaimer in the
21// documentation and/or other materials provided with the distribution.
22//
23// 3. Neither the name of the Corporation nor the names of the
24// contributors may be used to endorse or promote products derived from
25// this software without specific prior written permission.
26//
27// THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY EXPRESS OR IMPLIED
28// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
29// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
30// NO EVENT SHALL NTESS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
32// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37//
38// Questions? Contact David Littlewood (djlittl@sandia.gov)
39//
40// ************************************************************************
41//@HEADER
42*/
43
44#ifndef SRC_NIMBLE_KOKKOS_MATERIAL_FACTORY_H_
45#define SRC_NIMBLE_KOKKOS_MATERIAL_FACTORY_H_
46
47#include <memory>
48#include <string>
49
51
52namespace nimble {
53struct NGPLAMEData;
54}
55
56namespace nimble_kokkos {
57
59{
60 public:
61 explicit MaterialFactory();
62 ~MaterialFactory() override = default;
63
64 //--- Specific routines to Kokkos-based environment
65
66 inline std::shared_ptr<nimble::Material>
68 {
69 return material;
70 }
71
72 inline nimble::Material*
74 {
75 return material_device;
76 }
77
78 inline std::shared_ptr<nimble::NGPLAMEData>
80 {
81 return ngp_lame_data;
82 }
83
84 protected:
85 void
86 create() override;
87
88 protected:
89 ///
90 /// \note The variable material is used as 'material_host'
91 /// (i.e. a variable defined on the host memory space).
92 ///
93
95 std::shared_ptr<nimble::NGPLAMEData> ngp_lame_data;
96};
97
98} // namespace nimble_kokkos
99
100#endif /* SRC_NIMBLE_KOKKOS_MATERIAL_FACTORY_H_ */
Definition nimble_material_factory_base.h:61
std::shared_ptr< nimble::Material > material
Definition nimble_material_factory_base.h:125
Definition nimble_material.h:197
nimble::Material * get_material_device() const
Definition nimble_kokkos_material_factory.h:73
MaterialFactory()
Definition nimble_kokkos_material_factory.cc:56
void create() override
Definition nimble_kokkos_material_factory.cc:72
std::shared_ptr< nimble::Material > get_material_host() const
Definition nimble_kokkos_material_factory.h:67
~MaterialFactory() override=default
nimble::Material * material_device
Definition nimble_kokkos_material_factory.h:94
std::shared_ptr< nimble::NGPLAMEData > ngp_lame_data
Definition nimble_kokkos_material_factory.h:95
std::shared_ptr< nimble::NGPLAMEData > get_ngp_lame_data() const
Definition nimble_kokkos_material_factory.h:79
Definition nimble_contact_manager.h:68
Definition kokkos_contact_manager.h:49