Octopus
multisystem_basic.F90
Go to the documentation of this file.
1!! Copyright (C) 2020 Heiko Appel
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
24 use debug_oct_m
25 use global_oct_m
30 implicit none
31
32 private
33 public :: &
35
40 type, extends(multisystem_t) :: multisystem_basic_t
41
42 contains
44 end type multisystem_basic_t
45
46 interface multisystem_basic_t
47 procedure multisystem_basic_constructor
48 end interface multisystem_basic_t
49
50contains
51
52 ! ---------------------------------------------------------------------------------------
53 recursive function multisystem_basic_constructor(namespace, factory) result(system)
54 type(namespace_t), intent(in) :: namespace
55 class(system_factory_abst_t), intent(in) :: factory
56 class(multisystem_basic_t), pointer :: system
57
59
60 allocate(system)
61
62 call multisystem_init(system, namespace, factory)
63
66
67 ! ---------------------------------------------------------
68 recursive subroutine multisystem_basic_finalizer(this)
69 type(multisystem_basic_t), intent(inout) :: this
70
72
73 call multisystem_end(this)
74
76 end subroutine multisystem_basic_finalizer
77
This module implements the basic mulsisystem class, a container system for other systems.
recursive class(multisystem_basic_t) function, pointer multisystem_basic_constructor(namespace, factory)
recursive subroutine multisystem_basic_finalizer(this)
This module implements the abstract multisystem class.
recursive subroutine, public multisystem_end(this)
recursive subroutine, public multisystem_init(this, namespace, factory)
initialize the multisystem class
This module defines the abstract class for the system factory.
Container class for lists of system_oct_m::system_t.
the abstract multisystem class