FIXME : Add documentation
subroutine set_init_fields
use fields_implicit, only: init_allfields_implicit
use fields_test, only: init_phi_test
use mp, only: proc0
use fields_local, only: init_allfields_local
use fields_gf_local, only: init_allfields_gf_local
use dist_fn, only: gf_lo_integrate
use gs2_layouts, only: gf_local_fields
use kt_grids, only: naky, ntheta0
implicit none
logical, parameter :: debug=.false.
if(proc0.and.debug) write(6,*) "Syncing fields with g."
select case (fieldopt_switch)
case (fieldopt_implicit)
if (debug) write(6,*) "init_fields: init_allfields_implicit"
call init_allfields_implicit
case (fieldopt_test)
if (debug) write(6,*) "init_fields: init_phi_test"
call init_phi_test
case (fieldopt_local)
if (debug) write(6,*) "init_fields: init_allfields_local"
call init_allfields_local
case (fieldopt_gf_local)
if (debug) write(6,*) "init_fields: init_allfields_gf_local"
if(.not. gf_lo_integrate .or. .not. gf_local_fields) then
if(proc0) then
write(*,*) 'gf_lo_integrate',gf_lo_integrate,'gf_local_fields',gf_local_fields
write(*,*) 'gf local fields cannot be used by gf_lo_integrate'
write(*,*) 'defaulting to local fields'
write(*,*) 'if you want to use gf local fields then set gf_lo_integrate to true in dist_fn_knobs'
write(*,*) 'and gf_local_fields to true in layouts_knobs and make sure you are running on more MPI'
write(*,*) 'mpi processes than naky*ntheta0. For this simulation that is: ',naky*ntheta0
end if
fieldopt_switch = fieldopt_local
call init_allfields_local
else
call init_allfields_gf_local
end if
end select
end subroutine set_init_fields