40 lines
887 B
Fortran
40 lines
887 B
Fortran
MODULE moduleMesh1DBoundary
|
|
USE moduleMesh1D
|
|
|
|
TYPE, PUBLIC, EXTENDS(meshEdge1D):: meshEdge1DRef
|
|
CONTAINS
|
|
PROCEDURE, PASS:: fBoundary => reflection
|
|
|
|
END TYPE meshEdge1DRef
|
|
|
|
TYPE, PUBLIC, EXTENDS(meshEdge1D):: meshEdge1DAbs
|
|
CONTAINS
|
|
PROCEDURE, PASS:: fBoundary => absorption
|
|
|
|
END TYPE meshEdge1DAbs
|
|
|
|
CONTAINS
|
|
SUBROUTINE reflection(self, part)
|
|
USE moduleSpecies
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshEdge1DRef), INTENT(inout):: self
|
|
CLASS(particle), INTENT(inout):: part
|
|
|
|
part%v(1) = -part%v(1)
|
|
part%r(1) = 2.D0*self%x - part%r(1)
|
|
|
|
END SUBROUTINE reflection
|
|
|
|
SUBROUTINE absorption(self, part)
|
|
USE moduleSpecies
|
|
IMPLICIT NONE
|
|
|
|
CLASS(meshEdge1DAbs), INTENT(inout):: self
|
|
CLASS(particle), INTENT(inout):: part
|
|
|
|
part%n_in = .FALSE.
|
|
|
|
END SUBROUTINE absorption
|
|
|
|
END MODULE moduleMesh1DBoundary
|