Class sf_lattice_class
In: LatticeClass/sf_lattice_class.F90
lattice_class error_class comlib sf_lattice_class dot/f_264.png
==================================================

SF boundary memo

U_4(t=1), U_4(t=2), …, U_4(t=NTT) : physical U_4(t=0) = U_4(t=NTT) : ghost boundary (not used) U_4(t=NTT+1) = U_4(t=1) : ghost boundary (not used)

U_k(t=1) = U0 : SF boundary at t=0 U_k(t=NTT+1) = U1 : SF boundary at t=T U_k(t=2), U_k(t=3), …, U_k(t=NTT) : phsyical

do itb=1-ieoxyz,NTH-ieoxyz it = 2*itb + ieoxyz ieoxyz = 0 => itb = 1..NTH => it = 2,4,6,..,NTT

              itb = 0   => it = 0

ieoxyz = 1 => itb = 0,..NTH-1 => it = 1,3,5,…,NTT-1

              itb = NTH => it = NTT+1
              itb = 0   => it = 1
==================================================

Methods

Included Modules

lattice_class error_class comlib

Public Instance methods

Subroutine :
this :type(sf_lattice_world), intent(in)

[Source]

subroutine delete_sf_lattice_world(this)
  use error_class
  use comlib
  implicit none
  type(sf_lattice_world), intent(in) :: this
  m_is_initialized = .false.
  return
end subroutine
Function :
phase(COL,NDIM-1) :complex(DP)
this :type(sf_lattice_world), intent(in)

[Source]

function get_phase0_sf_lattice_world(this) result(phase)
  use error_class
  use comlib
  implicit none
  type(sf_lattice_world), intent(in) :: this
  complex(DP) :: phase(COL,NDIM-1)
  phase(:,:) = m_phase0(:,:)
  return
end function
Function :
phase(COL,NDIM-1) :complex(DP)
this :type(sf_lattice_world), intent(in)

[Source]

function get_phase1_sf_lattice_world(this) result(phase)
  use error_class
  use comlib
  implicit none
  type(sf_lattice_world), intent(in) :: this
  complex(DP) :: phase(COL,NDIM-1)
  phase(:,:) = m_phase1(:,:)
  return
end function
Function :
status :logical
this :type(sf_lattice_world), intent(in)

[Source]

function is_initialized_sf_lattice_world(this) result(status)
  type(sf_lattice_world), intent(in) :: this
  logical :: status
  status = m_is_initialized
  return
end function
Subroutine :
this :type(sf_lattice_world), intent(in)
bc_type :integer, optional, intent(in)

[Source]

subroutine new_sf_lattice_world(this,bc_type)
  use error_class
  use comlib
  implicit none
  type(sf_lattice_world), intent(in) :: this
  integer, optional, intent(in) :: bc_type
  integer :: ic

  if (m_is_initialized) return

  if (present(bc_type)) then
    m_boundary_type = bc_type
  else
    !============================
    ! set default boundary type
    !============================
    m_boundary_type = DEFAULT_BOUNDARY_TYPE
  endif

  select case(m_boundary_type)
  case(0)
    !
    ! itt = 1 boundary
    !
    m_phi0(1)=-PI/COL
    m_phi0(2)= 0.0_DP
    m_phi0(3)=-(m_phi0(1)+m_phi0(2))
    !
    ! itt = NTT+1 boundary
    !
    m_phi1(1)=-PI
    m_phi1(2)= PI/COL
    m_phi1(3)=-(m_phi1(1)+m_phi1(2))
  case(1)
    !
    ! itt = 1 boundary
    !
    m_phi0(1)=-PI/2.0_DP/COL
    m_phi0(2)= 0.0_DP
    m_phi0(3)=-(m_phi0(1)+m_phi0(2))
    !
    ! itt = NTT+1 boundary
    !
    m_phi1(1)=-5*PI/2.0_DP/COL
    m_phi1(2)= 2*PI/2.0_DP/COL
    m_phi1(3)=-(m_phi1(1)+m_phi1(2))
  case default
    call error_stop("SF boundary type should be 0 or 1.(new_sf_lattice_world)")
  end select

  do ic=1,COL
    m_phase0(ic,1)=cmplx(cos(m_phi0(ic)/NTX),sin(m_phi0(ic)/NTX),kind=DP)
    m_phase1(ic,1)=cmplx(cos(m_phi1(ic)/NTX),sin(m_phi1(ic)/NTX),kind=DP)

    m_phase0(ic,2)=cmplx(cos(m_phi0(ic)/NTY),sin(m_phi0(ic)/NTY),kind=DP)
    m_phase1(ic,2)=cmplx(cos(m_phi1(ic)/NTY),sin(m_phi1(ic)/NTY),kind=DP)

    m_phase0(ic,3)=cmplx(cos(m_phi0(ic)/NTZ),sin(m_phi0(ic)/NTZ),kind=DP)
    m_phase1(ic,3)=cmplx(cos(m_phi1(ic)/NTZ),sin(m_phi1(ic)/NTZ),kind=DP)
  enddo

  if (0==nodeid) then
    write(*,'(80("="))')
    write(*,'(" SF boundary condition is initialized. (SF_LATTICE_CLASS)")')
    write(*,'(" phase(t=0) :",3F14.6)')m_phi0(1),m_phi0(2),m_phi0(3)
    write(*,'(" phase(t=T) :",3F14.6)')m_phi1(1),m_phi1(2),m_phi1(3)
    write(*,'(" U_k(t) = exp(i phase(t)/NS_k) ")')
    write(*,'(80("="))')
  endif
  m_is_initialized = .true.

  return
end subroutine
sf_lattice_world
Derived Type :