put_collapse Subroutine

public subroutine put_collapse(dir)

Uses

  • proc~~put_collapse~~UsesGraph proc~put_collapse put_collapse module~mod_forest mod_forest proc~put_collapse->module~mod_forest module~mod_global_parameters mod_global_parameters proc~put_collapse->module~mod_global_parameters module~mod_slice mod_slice proc~put_collapse->module~mod_slice 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_slice->module~mod_basic_types module~mod_comm_lib mod_comm_lib module~mod_slice->module~mod_comm_lib module~mod_mpi_wrapper mod_mpi_wrapper module~mod_slice->module~mod_mpi_wrapper module~mod_mpi_wrapper->mpi module~mod_variables->module~mod_basic_types

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: dir

Calls

proc~~put_collapse~~CallsGraph proc~put_collapse put_collapse mpi_barrier mpi_barrier proc~put_collapse->mpi_barrier mpi_reduce mpi_reduce proc~put_collapse->mpi_reduce proc~alloc_subnode alloc_subnode proc~put_collapse->proc~alloc_subnode proc~allocate_collapsed allocate_collapsed proc~put_collapse->proc~allocate_collapsed proc~collapse_subnode collapse_subnode proc~put_collapse->proc~collapse_subnode proc~dealloc_subnode dealloc_subnode proc~put_collapse->proc~dealloc_subnode proc~integrate_subnode integrate_subnode proc~put_collapse->proc~integrate_subnode proc~mpistop mpistop proc~put_collapse->proc~mpistop proc~output_collapsed_csv output_collapsed_csv proc~put_collapse->proc~output_collapsed_csv proc~output_collapsed_vti output_collapsed_vti proc~put_collapse->proc~output_collapsed_vti proc~alloc_subnode->proc~mpistop proc~allocate_collapsed->proc~mpistop proc~collapse_subnode->proc~mpistop proc~calc_grid calc_grid proc~collapse_subnode->proc~calc_grid proc~calc_x calc_x proc~collapse_subnode->proc~calc_x proc~dealloc_subnode->proc~mpistop proc~integrate_subnode->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort proc~output_collapsed_csv->proc~mpistop proc~getheadernames getheadernames proc~output_collapsed_csv->proc~getheadernames proc~output_collapsed_vti->proc~mpistop proc~output_collapsed_vti->proc~getheadernames proc~calc_grid->proc~mpistop phys_to_primitive phys_to_primitive proc~calc_grid->phys_to_primitive proc~to_cartesian to_cartesian proc~calc_grid->proc~to_cartesian proc~getheadernames->proc~mpistop

Called by

proc~~put_collapse~~CalledByGraph proc~put_collapse put_collapse proc~write_collapsed write_collapsed proc~write_collapsed->proc~put_collapse proc~saveamrfile saveamrfile proc~saveamrfile->proc~write_collapsed proc~timeintegration timeintegration proc~timeintegration->proc~saveamrfile proc~main main proc~main->proc~timeintegration program~agile agile program~agile->proc~main

Source Code

subroutine put_collapse(dir)
use mod_forest, only: Morton_start, Morton_stop, sfc_to_igrid
use mod_slice, only:alloc_subnode, dealloc_subnode
use mod_global_parameters
integer, intent(in)                               :: dir
! .. local ..
integer                                           :: jgrid, igrid, Morton_no
double precision,dimension(0:nw+nwauxio)          :: normconv 
!-----------------------------------------------------------------------------
if(.not.slab) call mpistop("collapse only for slab cartesian cases")

call allocate_collapsed(dir)

jgrid=0
do Morton_no=Morton_start(mype),Morton_stop(mype)
   igrid=sfc_to_igrid(Morton_no)
   jgrid=jgrid+1
   call alloc_subnode(jgrid,dir,nwauxio)
   call collapse_subnode(igrid,jgrid,dir,normconv)
   call integrate_subnode(igrid,jgrid,dir)
end do

! Reduce to head-node:
if (mype==0) then
   call MPI_REDUCE(MPI_IN_PLACE,collapsedData,size(collapsedData),&
      MPI_DOUBLE_PRECISION,MPI_SUM,0,icomm,ierrmpi)
else
   call MPI_REDUCE(collapsedData,collapsedData,size(collapsedData),&
      MPI_DOUBLE_PRECISION,MPI_SUM,0,icomm,ierrmpi)
end if
call MPI_BARRIER(icomm, ierrmpi)


select case(collapse_type)
case('vti')
   call output_collapsed_vti(dir,normconv)
case('csv')
   call output_collapsed_csv(dir,normconv)
case('default')
   call mpistop("Unknown filetype for collapsed views")
end select
  

! If we need the subnodes later, remove deallocation here:
do jgrid=1,Morton_stop(mype)-Morton_start(mype)+1
   call dealloc_subnode(jgrid)
end do
deallocate(collapsedData)

end subroutine put_collapse