Octopus
mxll_field_to_matter.F90
Go to the documentation of this file.
1!! Copyright (C) 2022 F. Bonafé
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#include "global.h"
19
28 use debug_oct_m
30 use global_oct_m
32
33 implicit none
34
35 private
36 public :: &
40
43 private
44 integer, public :: type
45 contains
48
51 contains
54
57 contains
60
61
64 end interface mxll_e_field_to_matter_t
65
68 end interface mxll_b_field_to_matter_t
69
72 end interface mxll_vec_pot_to_matter_t
73
74 integer, public, parameter :: &
75 MXLL_FIELD_NONE = -1, &
76 mxll_field_total = 0, &
77 mxll_field_trans = 1, &
78 mxll_field_long = 2, &
80
81contains
82
83 function mxll_e_field_to_matter_constructor(partner) result(this)
84 class(interaction_partner_t), target, intent(inout) :: partner
85 class(mxll_e_field_to_matter_t), pointer :: this
86
88
89 allocate(this)
90
91 this%label = "mxll_e_field_to_matter"
92 this%partner => partner
93
94 this%couplings_from_partner = ["E field"]
95 this%type = mxll_field_none
96
97 this%intra_interaction = .false.
98
101
102! ---------------------------------------------------------
103 subroutine mxll_e_field_to_matter_finalize(this)
104 type(mxll_e_field_to_matter_t), intent(inout) :: this
105
107
108 call this%end()
109
112
113! ---------------------------------------------------------
114 function mxll_b_field_to_matter_constructor(partner) result(this)
115 class(interaction_partner_t), target, intent(inout) :: partner
116 class(mxll_b_field_to_matter_t), pointer :: this
117
119
120 allocate(this)
121
122 this%label = "mxll_b_field_to_matter"
123 this%partner => partner
124
125 this%couplings_from_partner = ["B field"]
126
127 this%intra_interaction = .false.
128
131
132! ---------------------------------------------------------
133 subroutine mxll_b_field_to_matter_finalize(this)
134 type(mxll_b_field_to_matter_t), intent(inout) :: this
135
138 call this%end()
142
143! ---------------------------------------------------------
144 function mxll_vec_pot_to_matter_constructor(partner) result(this)
145 class(interaction_partner_t), target, intent(inout) :: partner
146 class(mxll_vec_pot_to_matter_t), pointer :: this
149
150 allocate(this)
152 this%label = "mxll_vec_pot_to_matter"
153 this%partner => partner
154
155 this%couplings_from_partner = ["vector potential"]
156
157 this%intra_interaction = .false.
158
161
162! ---------------------------------------------------------
163 subroutine mxll_vec_pot_to_matter_finalize(this)
164 type(mxll_vec_pot_to_matter_t), intent(inout) :: this
165
167
168 call this%end()
172
174
175!! Local Variables:
176!! mode: f90
177!! coding: utf-8
178!! End:
This module implements the field transfer.
This module defines classes and functions for interaction partners.
Maxwell-field-to-matter interactions.
integer, parameter, public mxll_field_trans
class(mxll_b_field_to_matter_t) function, pointer mxll_b_field_to_matter_constructor(partner)
integer, parameter, public mxll_field_long
integer, parameter, public mxll_vec_pot_trans
subroutine mxll_b_field_to_matter_finalize(this)
subroutine mxll_e_field_to_matter_finalize(this)
class(mxll_vec_pot_to_matter_t) function, pointer mxll_vec_pot_to_matter_constructor(partner)
subroutine mxll_vec_pot_to_matter_finalize(this)
class(mxll_e_field_to_matter_t) function, pointer mxll_e_field_to_matter_constructor(partner)
integer, parameter, public mxll_field_total
class defining the field_transfer interaction
class to transfer a Maxwell B field to a matter system
class to transfer a Maxwell electric field to a medium
class to transfer a Maxwell vector potential to a medium