getnode Function

public function getnode(ipe)

Uses

  • proc~~getnode~~UsesGraph proc~getnode getnode module~mod_forest mod_forest proc~getnode->module~mod_forest module~mod_global_parameters mod_global_parameters proc~getnode->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

Get first available igrid on processor ipe

Arguments

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

Return Value integer


Calls

proc~~getnode~~CallsGraph proc~getnode getnode proc~mpistop mpistop proc~getnode->proc~mpistop mpi_abort mpi_abort proc~mpistop->mpi_abort

Source Code

  integer function getnode(ipe)
    use mod_forest, only: igrid_inuse
    use mod_global_parameters

    integer, intent(in) :: ipe
    integer :: igrid, igrid_available
  
    igrid_available=0
  
    do igrid=1,max_blocks
       if (igrid_inuse(igrid,ipe)) cycle
  
       igrid_available=igrid
       exit
    end do
  
    if (igrid_available == 0) then
       getnode = -1
       print *, "Current maximum number of grid blocks:", max_blocks
       call mpistop&
          ("Insufficient grid blocks; increase max_blocks in meshlist")
    else
       getnode=igrid_available
       igrid_inuse(igrid,ipe)=.true.
    end if
  
    if (ipe==mype) then
       ! initialize node on host and device
       node(1:nodehi,getnode) = 0
       
       rnode(1:rnodehi,getnode) = zero
       
    end if
  
  end function getnode