mod_amr_grid.f90 Source File


This file depends on

sourcefile~~mod_amr_grid.f90~~EfferentGraph sourcefile~mod_amr_grid.f90 mod_amr_grid.f90 sourcefile~mod_amr_fct.f90 mod_amr_fct.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_amr_fct.f90 sourcefile~mod_coarsen_refine.f90 mod_coarsen_refine.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_coarsen_refine.f90 sourcefile~mod_errest.f90 mod_errest.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_errest.f90 sourcefile~mod_fix_conserve.f90 mod_fix_conserve.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_fix_conserve.f90 sourcefile~mod_ghostcells_update.f90 mod_ghostcells_update.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_ghostcells_update.f90 sourcefile~mod_global_parameters.f90 mod_global_parameters.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particles.f90 mod_particles.f90 sourcefile~mod_amr_grid.f90->sourcefile~mod_particles.f90 sourcefile~mod_amr_fct.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_forest.f90 mod_forest.f90 sourcefile~mod_amr_fct.f90->sourcefile~mod_forest.f90 sourcefile~mod_mpi_wrapper.f90 mod_mpi_wrapper.f90 sourcefile~mod_amr_fct.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_amr_fct.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_ghostcells_update.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_amr_neighbors.f90 mod_amr_neighbors.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_amr_neighbors.f90 sourcefile~mod_coarsen.f90 mod_coarsen.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_coarsen.f90 sourcefile~mod_comm_lib.f90 mod_comm_lib.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_forest.f90 sourcefile~mod_functions_connectivity.f90 mod_functions_connectivity.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_functions_connectivity.f90 sourcefile~mod_functions_forest.f90 mod_functions_forest.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_functions_forest.f90 sourcefile~mod_initialize_amr.f90 mod_initialize_amr.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_initialize_amr.f90 sourcefile~mod_load_balance.f90 mod_load_balance.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_load_balance.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_msg_layout.f90 mod_msg_layout.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_msg_layout.f90 sourcefile~mod_multigrid_coupling.f90 mod_multigrid_coupling.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_multigrid_coupling.f90 sourcefile~mod_refine.f90 mod_refine.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_refine.f90 sourcefile~mod_selectgrids.f90 mod_selectgrids.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_selectgrids.f90 sourcefile~mod_space_filling_curve.f90 mod_space_filling_curve.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_space_filling_curve.f90 sourcefile~mod_usr_methods.f90 mod_usr_methods.f90 sourcefile~mod_coarsen_refine.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_errest.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_errest.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_errest.f90->sourcefile~mod_forest.f90 sourcefile~mod_fix_conserve.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_fix_conserve.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_fix_conserve.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_fix_conserve.f90->sourcefile~mod_msg_layout.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_boundary_conditions.f90 mod_boundary_conditions.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_boundary_conditions.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_coarsen.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_nvtx.f90 mod_nvtx.f90 sourcefile~mod_ghostcells_update.f90->sourcefile~mod_nvtx.f90 sourcefile~mod_basic_types.f90 mod_basic_types.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_basic_types.f90 sourcefile~mod_connectivity.f90 mod_connectivity.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_connectivity.f90 sourcefile~mod_constants.f90 mod_constants.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_constants.f90 sourcefile~mod_physicaldata.f90 mod_physicaldata.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_physicaldata.f90 sourcefile~mod_variables.f90 mod_variables.f90 sourcefile~mod_global_parameters.f90->sourcefile~mod_variables.f90 sourcefile~mod_particles.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_advect.f90 mod_particle_advect.f90 sourcefile~mod_particles.f90->sourcefile~mod_particle_advect.f90 sourcefile~mod_particle_base.f90 mod_particle_base.f90 sourcefile~mod_particles.f90->sourcefile~mod_particle_base.f90 sourcefile~mod_particle_gca.f90 mod_particle_gca.f90 sourcefile~mod_particles.f90->sourcefile~mod_particle_gca.f90 sourcefile~mod_particle_lorentz.f90 mod_particle_lorentz.f90 sourcefile~mod_particles.f90->sourcefile~mod_particle_lorentz.f90 sourcefile~mod_particle_sample.f90 mod_particle_sample.f90 sourcefile~mod_particles.f90->sourcefile~mod_particle_sample.f90 sourcefile~mod_amr_neighbors.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_amr_neighbors.f90->sourcefile~mod_forest.f90 sourcefile~mod_geometry.f90 mod_geometry.f90 sourcefile~mod_amr_neighbors.f90->sourcefile~mod_geometry.f90 sourcefile~mod_boundary_conditions.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_boundary_conditions.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_boundary_conditions.f90->sourcefile~mod_geometry.f90 sourcefile~mod_coarsen.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_comm_lib.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_functions_connectivity.f90->sourcefile~mod_ghostcells_update.f90 sourcefile~mod_functions_connectivity.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_functions_connectivity.f90->sourcefile~mod_amr_neighbors.f90 sourcefile~mod_functions_connectivity.f90->sourcefile~mod_forest.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_amr_neighbors.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_forest.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_functions_connectivity.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_functions_forest.f90->sourcefile~mod_space_filling_curve.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_ghostcells_update.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_functions_connectivity.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_functions_forest.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_multigrid_coupling.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_constrained_transport.f90 mod_constrained_transport.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_constrained_transport.f90 sourcefile~mod_initialize_amr.f90->sourcefile~mod_geometry.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_forest.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_functions_forest.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_msg_layout.f90 sourcefile~mod_load_balance.f90->sourcefile~mod_space_filling_curve.f90 sourcefile~mod_msg_layout.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_multigrid_coupling.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_multigrid_coupling.f90->sourcefile~mod_forest.f90 sourcefile~m_octree_mg_3d.f90 m_octree_mg_3d.f90 sourcefile~mod_multigrid_coupling.f90->sourcefile~m_octree_mg_3d.f90 sourcefile~mod_multigrid_coupling.f90->sourcefile~mod_geometry.f90 sourcefile~mod_particle_advect.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_advect.f90->sourcefile~mod_particle_base.f90 sourcefile~mod_particle_advect.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_particle_advect.f90->sourcefile~mod_geometry.f90 sourcefile~mod_odeint.f90 mod_odeint.f90 sourcefile~mod_particle_advect.f90->sourcefile~mod_odeint.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_constants.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_forest.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_geometry.f90 sourcefile~mod_random.f90 mod_random.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_random.f90 sourcefile~mod_slice.f90 mod_slice.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_slice.f90 sourcefile~mod_timing.f90 mod_timing.f90 sourcefile~mod_particle_base.f90->sourcefile~mod_timing.f90 sourcefile~mod_particle_gca.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_gca.f90->sourcefile~mod_particle_base.f90 sourcefile~mod_particle_gca.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_particle_gca.f90->sourcefile~mod_geometry.f90 sourcefile~mod_particle_gca.f90->sourcefile~mod_odeint.f90 sourcefile~mod_particle_lorentz.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_lorentz.f90->sourcefile~mod_particle_base.f90 sourcefile~mod_particle_lorentz.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_particle_lorentz.f90->sourcefile~mod_geometry.f90 sourcefile~mod_particle_sample.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_particle_sample.f90->sourcefile~mod_particle_base.f90 sourcefile~mod_particle_sample.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_particle_sample.f90->sourcefile~mod_geometry.f90 sourcefile~mod_refine.f90->sourcefile~mod_amr_fct.f90 sourcefile~mod_refine.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_refine.f90->sourcefile~mod_initialize_amr.f90 sourcefile~mod_refine.f90->sourcefile~mod_geometry.f90 sourcefile~mod_selectgrids.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_selectgrids.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_selectgrids.f90->sourcefile~mod_forest.f90 sourcefile~mod_selectgrids.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_space_filling_curve.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_space_filling_curve.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_space_filling_curve.f90->sourcefile~mod_forest.f90 sourcefile~mod_usr_methods.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_variables.f90->sourcefile~mod_basic_types.f90 sourcefile~m_octree_mg_3d.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_fix_conserve.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_ghostcells_update.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_limiter.f90 mod_limiter.f90 sourcefile~mod_constrained_transport.f90->sourcefile~mod_limiter.f90 sourcefile~mod_geometry.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_geometry.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_geometry.f90->sourcefile~mod_limiter.f90 sourcefile~mod_odeint.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_slice.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_slice.f90->sourcefile~mod_basic_types.f90 sourcefile~mod_slice.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_slice.f90->sourcefile~mod_forest.f90 sourcefile~mod_slice.f90->sourcefile~mod_mpi_wrapper.f90 sourcefile~mod_slice.f90->sourcefile~mod_geometry.f90 sourcefile~mod_calculate_xw.f90 mod_calculate_xw.f90 sourcefile~mod_slice.f90->sourcefile~mod_calculate_xw.f90 sourcefile~mod_input_output_helper.f90 mod_input_output_helper.f90 sourcefile~mod_slice.f90->sourcefile~mod_input_output_helper.f90 sourcefile~mod_calculate_xw.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_calculate_xw.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_calculate_xw.f90->sourcefile~mod_usr_methods.f90 sourcefile~mod_calculate_xw.f90->sourcefile~mod_geometry.f90 sourcefile~mod_calculate_xw.f90->sourcefile~mod_limiter.f90 sourcefile~mod_input_output_helper.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_input_output_helper.f90->sourcefile~mod_comm_lib.f90 sourcefile~mod_input_output_helper.f90->sourcefile~mod_forest.f90 sourcefile~mod_limiter.f90->sourcefile~mod_global_parameters.f90 sourcefile~mod_limiter.f90->sourcefile~mod_comm_lib.f90

Files dependent on this one

sourcefile~~mod_amr_grid.f90~~AfferentGraph sourcefile~mod_amr_grid.f90 mod_amr_grid.f90 sourcefile~agile.f90 agile.f90 sourcefile~agile.f90->sourcefile~mod_amr_grid.f90

Source Code

module mod_amr_grid

  implicit none
  private

  public :: settree
  public :: resettree
  public :: resettree_convert

contains

  !> Build up AMR
  subroutine settree
    use mod_global_parameters
    use mod_fix_conserve
    use mod_coarsen_refine
    use mod_errest, only: errest 

    ! create and initialize grids on all levels > 1. On entry, all
    ! level=1 grids have been formed and initialized. This subroutine
    ! creates and initializes new level grids

    integer :: igrid, iigrid, levnew

    ! when only one level allowed, there is nothing to do anymore
    if (refine_max_level == 1) return

    do levnew=2,refine_max_level

       call errest

       call amr_coarsen_refine

       if (.not.reset_grid) then
         ! if no finer level grids created: exit
         if (levmax/=levnew) exit
       end if
    end do

  end subroutine settree

  !> reset AMR and (de)allocate boundary flux storage at level changes
  subroutine resettree
    use mod_global_parameters
    use mod_fix_conserve
    use mod_amr_fct
    use mod_coarsen_refine
    use mod_errest, only: errest 
    use mod_particles
    
    ! deallocate old grids for particles
    if(use_particles) then
      call finish_gridvars()
    end if
    
    call errest

    call amr_coarsen_refine

    ! generate new grids for particles
    if(use_particles) then
      call init_gridvars()
    end if

  end subroutine resettree

  !> Force the tree to desired level(s) from level_io(_min/_max)
  !> used for conversion to vtk output
  subroutine resettree_convert
    use mod_global_parameters
    use mod_ghostcells_update
    use mod_coarsen_refine
    use mod_errest, only: forcedrefine_grid_io 

    integer  :: igrid,iigrid, my_levmin, my_levmax

    if(level_io > 0) then
      my_levmin = level_io
      my_levmax = level_io
    else
      my_levmin = max(1,level_io_min)
      my_levmax = min(refine_max_level,level_io_max)
    end if

    do while(levmin<my_levmin.or.levmax>my_levmax)
     call getbc(global_time,0.d0,ps,iwstart,nwgc)
     do iigrid=1,igridstail; igrid=igrids(iigrid);
        call forcedrefine_grid_io(igrid,ps(igrid)%w)
     end do
  
     call amr_coarsen_refine
    end do

  end subroutine resettree_convert
  
end module mod_amr_grid