potential_comm Module

THIS MODULE IS MEANT TO WORK WITH THE MUMPS 2D INTEGRATED SOLVER IF THE GRID IS 3D, OR A FIELD-RESOLVED SOLVER IF THE GRID IS 2D (MUMPS CAN'T HANDLE 3D VERY WELL).

NOTE THAT ONLY THE CURVILINEAR FUNCTION ARE UP TO DATE.

OVERLOAD THE SOLVERS FOR DEALING WITH THE CURVILINEAR MESHES NOTE WORKER SUBROUTINE DOES NOT NEED TO BE CHANGED/OVERLOADED


Uses

  • module~~potential_comm~~UsesGraph module~potential_comm potential_comm module~potentialbcs_mumps potentialBCs_mumps module~potential_comm->module~potentialbcs_mumps module~phys_consts phys_consts module~potential_comm->module~phys_consts module~pdeelliptic PDEelliptic module~potential_comm->module~pdeelliptic module~mesh mesh module~potential_comm->module~mesh module~mpimod mpimod module~potential_comm->module~mpimod module~calculus calculus module~potential_comm->module~calculus module~grid grid module~potential_comm->module~grid module~potential_mumps potential_mumps module~potential_comm->module~potential_mumps module~collisions collisions module~potential_comm->module~collisions module~potentialbcs_mumps->module~phys_consts module~potentialbcs_mumps->module~mesh module~potentialbcs_mumps->module~mpimod module~potentialbcs_mumps->module~grid ieee_arithmetic ieee_arithmetic module~potentialbcs_mumps->ieee_arithmetic module~reader reader module~potentialbcs_mumps->module~reader iso_fortran_env iso_fortran_env module~potentialbcs_mumps->iso_fortran_env module~interpolation interpolation module~potentialbcs_mumps->module~interpolation module~timeutils timeutils module~potentialbcs_mumps->module~timeutils module~phys_consts->iso_fortran_env module~pdeelliptic->module~phys_consts module~pdeelliptic->module~mpimod module~pdeelliptic->iso_fortran_env module~mumps_interface~2 mumps_interface module~pdeelliptic->module~mumps_interface~2 module~mesh->module~phys_consts module~mpimod->module~phys_consts module~mpimod->iso_fortran_env mpi mpi module~mpimod->mpi module~calculus->module~phys_consts module~calculus->module~mesh module~grid->module~phys_consts module~grid->module~mesh module~grid->module~mpimod module~grid->module~reader module~grid->iso_fortran_env module~potential_mumps->module~phys_consts module~potential_mumps->module~pdeelliptic module~potential_mumps->module~mesh module~potential_mumps->module~mpimod module~potential_mumps->module~calculus module~potential_mumps->iso_fortran_env module~potential_mumps->module~interpolation module~collisions->module~phys_consts module~collisions->iso_fortran_env module~reader->module~phys_consts module~reader->iso_fortran_env module~mumps_rl mumps_rl module~mumps_interface~2->module~mumps_rl module~interpolation->module~phys_consts module~timeutils->module~phys_consts module~timeutils->iso_fortran_env

Used by

  • module~~potential_comm~~UsedByGraph module~potential_comm potential_comm 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


Interfaces

public interface electrodynamics

  • private subroutine electrodynamics_curv(it, t, dt, nn, vn2, vn3, Tn, sourcemlat, ns, Ts, vs1, B1, vs2, vs3, x, potsolve, flagcap, E1, E2, E3, J1, J2, J3, Phiall, flagE0file, dtE0, E0dir, ymd, UTsec)

    THIS IS A WRAPPER FUNCTION FOR THE ELECTRODYANMICS PART OF THE MODEL. BOTH THE ROOT AND WORKER PROCESSES CALL THIS SAME SUBROUTINE, WHEN THEN BRANCHES INTO DIFFERENT TASKS FOR EACH AFTER ALL COMPUTE CONDUCTIVITIES AND INERTIAL CAPACITANCE.

    Read more…

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: it
    real(kind=wp), intent(in) :: t
    real(kind=wp), intent(in) :: dt
    real(kind=wp), intent(in), dimension(:,:,:,:):: nn
    real(kind=wp), intent(in), dimension(:,:,:):: vn2
    real(kind=wp), intent(in), dimension(:,:,:):: vn3
    real(kind=wp), intent(in), dimension(:,:,:):: Tn
    real(kind=wp), intent(in) :: sourcemlat
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: ns
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: Ts
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs1
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:):: B1
    real(kind=wp), intent(inout), dimension(-1:,-1:,-1:,:):: vs2
    real(kind=wp), intent(inout), dimension(-1:,-1:,-1:,:):: vs3
    type(curvmesh), intent(in) :: x
    integer, intent(in) :: potsolve
    integer, intent(in) :: flagcap
    real(kind=wp), intent(out), dimension(:,:,:):: E1
    real(kind=wp), intent(out), dimension(:,:,:):: E2
    real(kind=wp), intent(out), dimension(:,:,:):: E3
    real(kind=wp), intent(out), dimension(:,:,:):: J1
    real(kind=wp), intent(out), dimension(:,:,:):: J2
    real(kind=wp), intent(out), dimension(:,:,:):: J3
    real(kind=wp), intent(inout), dimension(:,:,:), allocatable:: Phiall

    inout since it may not be allocated or deallocated in this procedure

    integer, intent(in) :: flagE0file
    real(kind=wp), intent(in) :: dtE0
    character(len=*), intent(in) :: E0dir
    integer, intent(in), dimension(3):: ymd
    real(kind=wp), intent(in) :: UTsec

private interface potential_root_mpi

interface

  • private module subroutine potential_workers_mpi(it, t, dt, sig0, sigP, sigH, incap, vs2, vs3, vn2, vn3, sourcemlat, B1, x, potsolve, flagcap, E1, E2, E3, J1, J2, J3)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: it
    real(kind=wp), intent(in) :: t
    real(kind=wp), intent(in) :: dt
    real(kind=wp), intent(in), dimension(:,:,:):: sig0
    real(kind=wp), intent(in), dimension(:,:,:):: sigP
    real(kind=wp), intent(in), dimension(:,:,:):: sigH
    real(kind=wp), intent(in), dimension(:,:,:):: incap
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs2
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs3
    real(kind=wp), intent(in), dimension(:,:,:):: vn2
    real(kind=wp), intent(in), dimension(:,:,:):: vn3
    real(kind=wp), intent(in) :: sourcemlat
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:):: B1
    type(curvmesh), intent(in) :: x
    integer, intent(in) :: potsolve
    integer, intent(in) :: flagcap
    real(kind=wp), intent(out), dimension(:,:,:):: E1
    real(kind=wp), intent(out), dimension(:,:,:):: E2
    real(kind=wp), intent(out), dimension(:,:,:):: E3
    real(kind=wp), intent(out), dimension(:,:,:):: J1
    real(kind=wp), intent(out), dimension(:,:,:):: J2
    real(kind=wp), intent(out), dimension(:,:,:):: J3

interface

  • private module subroutine potential_root_mpi_curv(it, t, dt, sig0, sigP, sigH, incap, vs2, vs3, vn2, vn3, sourcemlat, B1, x, potsolve, flagcap, E1, E2, E3, J1, J2, J3, Phiall, flagE0file, dtE0, E0dir, ymd, UTsec)

    Arguments

    Type IntentOptional AttributesName
    integer, intent(in) :: it
    real(kind=wp), intent(in) :: t
    real(kind=wp), intent(in) :: dt
    real(kind=wp), intent(in), dimension(:,:,:):: sig0
    real(kind=wp), intent(in), dimension(:,:,:):: sigP
    real(kind=wp), intent(in), dimension(:,:,:):: sigH
    real(kind=wp), intent(in), dimension(:,:,:):: incap
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs2
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs3
    real(kind=wp), intent(in), dimension(:,:,:):: vn2
    real(kind=wp), intent(in), dimension(:,:,:):: vn3
    real(kind=wp), intent(in) :: sourcemlat
    real(kind=wp), intent(in), dimension(-1:,-1:,-1:):: B1
    type(curvmesh), intent(in) :: x
    integer, intent(in) :: potsolve
    integer, intent(in) :: flagcap
    real(kind=wp), intent(out), dimension(:,:,:):: E1
    real(kind=wp), intent(out), dimension(:,:,:):: E2
    real(kind=wp), intent(out), dimension(:,:,:):: E3
    real(kind=wp), intent(out), dimension(:,:,:):: J1
    real(kind=wp), intent(out), dimension(:,:,:):: J2
    real(kind=wp), intent(out), dimension(:,:,:):: J3
    real(kind=wp), intent(inout), dimension(:,:,:):: Phiall
    integer, intent(in) :: flagE0file
    real(kind=wp), intent(in) :: dtE0
    character(len=*), intent(in) :: E0dir
    integer, intent(in), dimension(3):: ymd
    real(kind=wp), intent(in) :: UTsec

Subroutines

private subroutine electrodynamics_curv(it, t, dt, nn, vn2, vn3, Tn, sourcemlat, ns, Ts, vs1, B1, vs2, vs3, x, potsolve, flagcap, E1, E2, E3, J1, J2, J3, Phiall, flagE0file, dtE0, E0dir, ymd, UTsec)

THIS IS A WRAPPER FUNCTION FOR THE ELECTRODYANMICS PART OF THE MODEL. BOTH THE ROOT AND WORKER PROCESSES CALL THIS SAME SUBROUTINE, WHEN THEN BRANCHES INTO DIFFERENT TASKS FOR EACH AFTER ALL COMPUTE CONDUCTIVITIES AND INERTIAL CAPACITANCE.

Read more…

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: it
real(kind=wp), intent(in) :: t
real(kind=wp), intent(in) :: dt
real(kind=wp), intent(in), dimension(:,:,:,:):: nn
real(kind=wp), intent(in), dimension(:,:,:):: vn2
real(kind=wp), intent(in), dimension(:,:,:):: vn3
real(kind=wp), intent(in), dimension(:,:,:):: Tn
real(kind=wp), intent(in) :: sourcemlat
real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: ns
real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: Ts
real(kind=wp), intent(in), dimension(-1:,-1:,-1:,:):: vs1
real(kind=wp), intent(in), dimension(-1:,-1:,-1:):: B1
real(kind=wp), intent(inout), dimension(-1:,-1:,-1:,:):: vs2
real(kind=wp), intent(inout), dimension(-1:,-1:,-1:,:):: vs3
type(curvmesh), intent(in) :: x
integer, intent(in) :: potsolve
integer, intent(in) :: flagcap
real(kind=wp), intent(out), dimension(:,:,:):: E1
real(kind=wp), intent(out), dimension(:,:,:):: E2
real(kind=wp), intent(out), dimension(:,:,:):: E3
real(kind=wp), intent(out), dimension(:,:,:):: J1
real(kind=wp), intent(out), dimension(:,:,:):: J2
real(kind=wp), intent(out), dimension(:,:,:):: J3
real(kind=wp), intent(inout), dimension(:,:,:), allocatable:: Phiall

inout since it may not be allocated or deallocated in this procedure

integer, intent(in) :: flagE0file
real(kind=wp), intent(in) :: dtE0
character(len=*), intent(in) :: E0dir
integer, intent(in), dimension(3):: ymd
real(kind=wp), intent(in) :: UTsec

public subroutine halo_pot(parmhalo, tagcurrent, flagper, flagdegrade)

Arguments

Type IntentOptional AttributesName
real(kind=wp), intent(inout), dimension(-1:,-1:,-1:):: parmhalo
integer, intent(in) :: tagcurrent
logical, intent(in) :: flagper
logical, intent(in) :: flagdegrade