fake_update Subroutine

public subroutine fake_update(ixImin1, ixImin2, ixImin3, ixImax1, ixImax2, ixImax3, s, fC, fE, dx1, dx2, dx3)

Uses

  • proc~~fake_update~~UsesGraph proc~fake_update fake_update module~mod_global_parameters mod_global_parameters proc~fake_update->module~mod_global_parameters module~mod_basic_types mod_basic_types module~mod_global_parameters->module~mod_basic_types module~mod_connectivity mod_connectivity module~mod_global_parameters->module~mod_connectivity module~mod_constants mod_constants module~mod_global_parameters->module~mod_constants module~mod_physicaldata mod_physicaldata module~mod_global_parameters->module~mod_physicaldata module~mod_variables mod_variables module~mod_global_parameters->module~mod_variables mpi mpi module~mod_global_parameters->mpi module~mod_variables->module~mod_basic_types

fake update magnetic field from vector potential

Arguments

Type IntentOptional Attributes Name
integer :: ixImin1
integer :: ixImin2
integer :: ixImin3
integer :: ixImax1
integer :: ixImax2
integer :: ixImax3
type(state) :: s
double precision :: fC(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,1:nwflux,1:ndim)
double precision :: fE(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,sdim:3)
double precision :: dx1
double precision :: dx2
double precision :: dx3

Calls

proc~~fake_update~~CallsGraph proc~fake_update fake_update proc~b_from_vector_potentiala b_from_vector_potentialA proc~fake_update->proc~b_from_vector_potentiala proc~mpistop mpistop proc~b_from_vector_potentiala->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Called by

proc~~fake_update~~CalledByGraph proc~fake_update fake_update proc~fake_advance fake_advance proc~fake_advance->proc~fake_update proc~recalculateb recalculateB proc~recalculateb->proc~fake_advance proc~improve_initial_condition improve_initial_condition proc~improve_initial_condition->proc~recalculateb proc~main main proc~main->proc~improve_initial_condition program~agile agile program~agile->proc~main

Source Code

  subroutine fake_update(ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3,s,fC,&
     fE,dx1,dx2,dx3)
    use mod_global_parameters

    integer       :: ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3
    type(state)   :: s
    double precision             :: fC(ixImin1:ixImax1,ixImin2:ixImax2,&
       ixImin3:ixImax3,1:nwflux,1:ndim)
    double precision             :: fE(ixImin1:ixImax1,ixImin2:ixImax2,&
       ixImin3:ixImax3,sdim:3)
    double precision             :: dx1,dx2,dx3

    integer                            :: ixIsmin1,ixIsmin2,ixIsmin3,ixIsmax1,&
       ixIsmax2,ixIsmax3,ixOmin1,ixOmin2,ixOmin3,ixOmax1,ixOmax2,ixOmax3,idir
    double precision                   :: A(s%ixGsmin1:s%ixGsmax1,&
       s%ixGsmin2:s%ixGsmax2,s%ixGsmin3:s%ixGsmax3,1:3)

    associate(ws=>s%ws,x=>s%x)

    A=zero
    ws=zero

    ixIsmin1=s%ixGsmin1;ixIsmin2=s%ixGsmin2;ixIsmin3=s%ixGsmin3
    ixIsmax1=s%ixGsmax1;ixIsmax2=s%ixGsmax2;ixIsmax3=s%ixGsmax3;
    ixOmin1=ixImin1+nghostcells;ixOmin2=ixImin2+nghostcells
    ixOmin3=ixImin3+nghostcells;ixOmax1=ixImax1-nghostcells
    ixOmax2=ixImax2-nghostcells;ixOmax3=ixImax3-nghostcells;

    fC=0.d0
    call b_from_vector_potentialA(ixIsmin1,ixIsmin2,ixIsmin3,ixIsmax1,ixIsmax2,&
       ixIsmax3, ixImin1,ixImin2,ixImin3,ixImax1,ixImax2,ixImax3, ixOmin1,&
       ixOmin2,ixOmin3,ixOmax1,ixOmax2,ixOmax3, ws, x, A)

    ! This is important only in 3D
    do idir=sdim,3
       fE(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,&
          idir) =-A(ixImin1:ixImax1,ixImin2:ixImax2,ixImin3:ixImax3,idir)
    end do

    end associate
  end subroutine fake_update