Octopus
system_factory_abst.F90
Go to the documentation of this file.
1!! Copyright (C) 2020 M. Oliveira
2!!
3!! This Source Code Form is subject to the terms of the Mozilla Public
4!! License, v. 2.0. If a copy of the MPL was not distributed with this
5!! file, You can obtain one at https://mozilla.org/MPL/2.0/.
6!!
7
10 use mpi_oct_m
12 use system_oct_m
13 implicit none
14
15 private
16 public :: &
18
20 type, abstract :: system_factory_abst_t
21 contains
22 procedure(system_factory_abst_create), deferred :: create
24
25 abstract interface
26 function system_factory_abst_create(this, namespace, type, calc_mode_id, grp) result(system)
27 import :: system_factory_abst_t
28 import system_t
29 import namespace_t
30 import mpi_grp_t
31 class(system_factory_abst_t), intent(in) :: this
32 type(namespace_t), intent(in) :: namespace
33 integer, intent(in) :: type
34 integer, intent(in) :: calc_mode_id
35 type(mpi_grp_t), intent(in) :: grp
36 class(system_t), pointer :: system
38 end interface
39
41
42!! Local Variables:
43!! mode: f90
44!! coding: utf-8
45!! End:
This module defines the abstract class for the system factory.
This module implements the abstract system type.
Definition: system.F90:120
This is defined even when running serial.
Definition: mpi.F90:144
Abstract class for systems.
Definition: system.F90:175