PDEelliptic Module

Various tools for solving elliptic partial differential equations - uses MUMPS, scalapack, lapack, openmpi, and blas


Uses

  • module~~pdeelliptic~~UsesGraph module~pdeelliptic PDEelliptic module~mumps_interface~2 mumps_interface module~pdeelliptic->module~mumps_interface~2 iso_fortran_env iso_fortran_env module~pdeelliptic->iso_fortran_env module~phys_consts phys_consts module~pdeelliptic->module~phys_consts module~mpimod mpimod module~pdeelliptic->module~mpimod module~mumps_rl mumps_rl module~mumps_interface~2->module~mumps_rl module~phys_consts->iso_fortran_env module~mpimod->iso_fortran_env module~mpimod->module~phys_consts mpi mpi module~mpimod->mpi

Used by

  • module~~pdeelliptic~~UsedByGraph module~pdeelliptic PDEelliptic program~test_potential2d test_potential2d program~test_potential2d->module~pdeelliptic module~elliptic3d elliptic3d module~elliptic3d->module~pdeelliptic module~potential_comm potential_comm module~potential_comm->module~pdeelliptic module~potential_mumps potential_mumps module~potential_comm->module~potential_mumps module~potential2d potential2d module~potential2d->module~pdeelliptic module~potential2d->module~potential_mumps module~potential_mumps->module~pdeelliptic module~elliptic2d elliptic2d module~elliptic2d->module~pdeelliptic module~potential_root potential_root module~potential_root->module~potential_comm program~gemini3d Gemini3D program~gemini3d->module~potential_comm module~potential_worker potential_worker module~potential_worker->module~potential_comm

Contents


Variables

TypeVisibility AttributesNameInitial
integer, protected, dimension(:), pointer, save:: mumps_perm

Interfaces

interface

  • public module function elliptic2D_polarization(srcterm, SigP2, SigP3, SigH, gradSigH2, gradSigH3, Cm, v2, v3, Vminx2, Vmaxx2, Vminx3, Vmaxx3, dt, dx1, dx1i, dx2all, dx2iall, dx3all, dx3iall, Phi0, perflag, it)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:):: srcterm

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: SigP2

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: SigP3

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: SigH

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: gradSigH2

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: gradSigH3

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: Cm

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: v2

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:,:):: v3

    ZZZ - THESE WILL NEED TO BE MODIFIED CONDUCTIVITIES, AND WE'LL NEED THREE OF THEM

    real(kind=wp), intent(in), dimension(:):: Vminx2
    real(kind=wp), intent(in), dimension(:):: Vmaxx2
    real(kind=wp), intent(in), dimension(:):: Vminx3
    real(kind=wp), intent(in), dimension(:):: Vmaxx3
    real(kind=wp), intent(in) :: dt
    real(kind=wp), intent(in), dimension(0:):: dx1
    real(kind=wp), intent(in), dimension(:):: dx1i
    real(kind=wp), intent(in), dimension(0:):: dx2all
    real(kind=wp), intent(in), dimension(:):: dx2iall
    real(kind=wp), intent(in), dimension(0:):: dx3all
    real(kind=wp), intent(in), dimension(:):: dx3iall
    real(kind=wp), intent(in), dimension(:,:):: Phi0
    logical, intent(in) :: perflag
    integer, intent(in) :: it

    Return Value real(kind=wp), dimension(size(SigP2,1),size(SigP2,2))

interface

  • public module function elliptic2D_polarization_periodic(srcterm, SigP, SigH, gradSigH2, gradSigH3, Cm, v2, v3, Vminx2, Vmaxx2, Vminx3, Vmaxx3, dt, dx1, dx1i, dx2all, dx2iall, dx3all, dx3iall, Phi0, perflag, it)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:):: srcterm
    real(kind=wp), intent(in), dimension(:,:):: SigP
    real(kind=wp), intent(in), dimension(:,:):: SigH
    real(kind=wp), intent(in), dimension(:,:):: gradSigH2
    real(kind=wp), intent(in), dimension(:,:):: gradSigH3
    real(kind=wp), intent(in), dimension(:,:):: Cm
    real(kind=wp), intent(in), dimension(:,:):: v2
    real(kind=wp), intent(in), dimension(:,:):: v3
    real(kind=wp), intent(in), dimension(:):: Vminx2
    real(kind=wp), intent(in), dimension(:):: Vmaxx2
    real(kind=wp), intent(in), dimension(:):: Vminx3
    real(kind=wp), intent(in), dimension(:):: Vmaxx3
    real(kind=wp), intent(in) :: dt
    real(kind=wp), intent(in), dimension(0:):: dx1
    real(kind=wp), intent(in), dimension(:):: dx1i
    real(kind=wp), intent(in), dimension(0:):: dx2all
    real(kind=wp), intent(in), dimension(:):: dx2iall
    real(kind=wp), intent(in), dimension(0:):: dx3all
    real(kind=wp), intent(in), dimension(:):: dx3iall
    real(kind=wp), intent(in), dimension(:,:):: Phi0
    logical, intent(in) :: perflag
    integer, intent(in) :: it

    Return Value real(kind=wp), dimension(size(SigP,1),size(SigP,2))

interface

  • public module function elliptic2D_cart(srcterm, sig0, sigP, Vminx1, Vmaxx1, Vminx3, Vmaxx3, dx1, dx1i, dx3all, dx3iall, flagdirich, perflag, gridflag, it)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: srcterm
    real(kind=wp), intent(in), dimension(:,:,:):: sig0
    real(kind=wp), intent(in), dimension(:,:,:):: sigP
    real(kind=wp), intent(in), dimension(:,:):: Vminx1
    real(kind=wp), intent(in), dimension(:,:):: Vmaxx1
    real(kind=wp), intent(in), dimension(:,:):: Vminx3
    real(kind=wp), intent(in), dimension(:,:):: Vmaxx3
    real(kind=wp), intent(in), dimension(0:):: dx1
    real(kind=wp), intent(in), dimension(:):: dx1i
    real(kind=wp), intent(in), dimension(0:):: dx3all
    real(kind=wp), intent(in), dimension(:):: dx3iall
    integer, intent(in) :: flagdirich
    logical, intent(in) :: perflag
    integer, intent(in) :: gridflag
    integer, intent(in) :: it

    Return Value real(kind=wp), dimension(size(sig0,1),1,size(sig0,3))

interface

  • public module function elliptic3D_cart(srcterm, Ac, Bc, Cc, Dc, Ec, Fc, Vminx1, Vmaxx1, Vminx2, Vmaxx2, Vminx3, Vmaxx3, dx1, dx1i, dx2all, dx2iall, dx3all, dx3iall, flagdirich, perflag, it)

    Arguments

    Type IntentOptional AttributesName
    real(kind=wp), intent(in), dimension(:,:,:):: srcterm
    real(kind=wp), intent(in), dimension(:,:,:):: Ac
    real(kind=wp), intent(in), dimension(:,:,:):: Bc
    real(kind=wp), intent(in), dimension(:,:,:):: Cc
    real(kind=wp), intent(in), dimension(:,:,:):: Dc
    real(kind=wp), intent(in), dimension(:,:,:):: Ec
    real(kind=wp), intent(in), dimension(:,:,:):: Fc
    real(kind=wp), intent(in), dimension(:,:):: Vminx1
    real(kind=wp), intent(in), dimension(:,:):: Vmaxx1
    real(kind=wp), intent(in), dimension(:,:):: Vminx2
    real(kind=wp), intent(in), dimension(:,:):: Vmaxx2
    real(kind=wp), intent(in), dimension(:,:):: Vminx3
    real(kind=wp), intent(in), dimension(:,:):: Vmaxx3
    real(kind=wp), intent(in), dimension(0:):: dx1
    real(kind=wp), intent(in), dimension(:):: dx1i
    real(kind=wp), intent(in), dimension(0:):: dx2all
    real(kind=wp), intent(in), dimension(:):: dx2iall
    real(kind=wp), intent(in), dimension(0:):: dx3all
    real(kind=wp), intent(in), dimension(:):: dx3iall
    integer, intent(in) :: flagdirich
    logical, intent(in) :: perflag
    integer, intent(in) :: it

    Return Value real(kind=wp), dimension(size(srcterm,1),size(srcterm,2),size(srcterm,3))


Subroutines

public subroutine quiet_mumps(obj)

this must be called AFTER the first mumps call that had job=-1 Needs Mumps >= 5.2 to actually take effect, does nothing on older MUMPS it stops the 100's of megabytes of logging console text, probably speeding up as well

Arguments

Type IntentOptional AttributesName
type(MUMPS_STRUC), intent(inout) :: obj

public subroutine elliptic_workers()

ALLOWS WORKERS TO ENTER MUMPS SOLVES

Arguments

None

public subroutine check_mumps_status(p, name)

check if Mumps error occurred

Arguments

Type IntentOptional AttributesName
type(MUMPS_STRUC), intent(in) :: p
character(len=*), intent(in) :: name