marker_set_ComputeSolidVolFrac Subroutine

private impure subroutine marker_set_ComputeSolidVolFrac(this, VF, solver, MaxTol, MaxIt, RelaxType, Rel, It, intRHS)

Uses

  • proc~~marker_set_computesolidvolfrac~~UsesGraph proc~marker_set_computesolidvolfrac marker_set%marker_set_ComputeSolidVolFrac module~leapdiffop leapDiffOp proc~marker_set_computesolidvolfrac->module~leapdiffop module~leapbc leapBC module~leapdiffop->module~leapbc module~leapblock leapBlock module~leapdiffop->module~leapblock module~leapeulerian leapEulerian module~leapdiffop->module~leapeulerian module~leapkinds leapKinds module~leapdiffop->module~leapkinds module~leapparallel leapParallel module~leapdiffop->module~leapparallel module~leapbc->module~leapblock module~leapbc->module~leapeulerian module~leapbc->module~leapkinds module~leapbc->module~leapparallel iso_fortran_env iso_fortran_env module~leapbc->iso_fortran_env module~leapio leapIO module~leapbc->module~leapio module~leaputils leapUtils module~leapbc->module~leaputils mpi_f08 mpi_f08 module~leapbc->mpi_f08 module~leapblock->module~leapkinds module~leapblock->module~leapparallel module~leapblock->iso_fortran_env module~leapio_hdf5 leapIO_hdf5 module~leapblock->module~leapio_hdf5 module~leapblock->mpi_f08 module~leapeulerian->module~leapblock module~leapeulerian->module~leapkinds module~leapeulerian->module~leapparallel module~leapeulerian->iso_fortran_env module~leapeulerian->module~leapio module~leapeulerian->module~leaputils module~leapeulerian->mpi_f08 module~leapkinds->iso_fortran_env module~leapparallel->module~leapkinds module~leapparallel->iso_fortran_env module~leapparallel->mpi_f08 module~leapio->module~leapio_hdf5 module~leapio_h5hut leapIO_h5hut module~leapio->module~leapio_h5hut module~leapio_silo leapIO_silo module~leapio->module~leapio_silo module~leapio_xdmf leapIO_xdmf module~leapio->module~leapio_xdmf module~leapio_hdf5->module~leapkinds module~leapio_hdf5->module~leapparallel module~leapio_hdf5->module~leaputils hdf5 hdf5 module~leapio_hdf5->hdf5 module~leaputils->module~leapkinds module~leapio_h5hut->module~leapkinds module~leapio_h5hut->module~leapparallel module~leapio_h5hut->module~leapio_hdf5 module~leapio_silo->module~leapkinds module~leapio_silo->module~leapparallel module~leapio_silo->module~leaputils module~leapio_silo->mpi_f08 module~leapio_xdmf->module~leapkinds module~leapio_xdmf->module~leaputils

Computes the solid volume fraction on the mesh.

Type Bound

marker_set

Arguments

Type IntentOptional Attributes Name
class(marker_set), intent(inout) :: this

A collection of tessellation elements

type(eulerian_obj_r), intent(inout) :: VF

Volume fraction

character(len=*), intent(in) :: solver

Name of solver to be used

real(kind=wp), intent(in) :: MaxTol

Maximum relative tolerance

integer, intent(in) :: MaxIt

Maximum number of subiterations

integer, intent(in), optional :: RelaxType

Relaxation type

real(kind=wp), intent(out), optional :: Rel

Relative error at end of solve

integer, intent(out), optional :: It

Number of iterations performed

real(kind=wp), intent(out), optional :: intRHS

Magnitude of RHS


Calls

proc~~marker_set_computesolidvolfrac~~CallsGraph proc~marker_set_computesolidvolfrac marker_set%marker_set_ComputeSolidVolFrac proc~eulerian_obj_final eulerian_obj_base%eulerian_obj_Final proc~marker_set_computesolidvolfrac->proc~eulerian_obj_final proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~marker_set_computesolidvolfrac->proc~eulerian_obj_updateghostcells proc~hypre_obj_init hypre_obj%hypre_obj_Init proc~marker_set_computesolidvolfrac->proc~hypre_obj_init proc~hypre_obj_selectsolver hypre_obj%hypre_obj_SelectSolver proc~marker_set_computesolidvolfrac->proc~hypre_obj_selectsolver proc~hypre_obj_setrhs hypre_obj%hypre_obj_SetRHS proc~marker_set_computesolidvolfrac->proc~hypre_obj_setrhs proc~hypre_obj_setup hypre_obj%hypre_obj_Setup proc~marker_set_computesolidvolfrac->proc~hypre_obj_setup proc~hypre_obj_solve hypre_obj%hypre_obj_Solve proc~marker_set_computesolidvolfrac->proc~hypre_obj_solve proc~marker_set_filter marker_set%marker_set_Filter proc~marker_set_computesolidvolfrac->proc~marker_set_filter proc~op_obj_div op_obj%op_obj_div proc~marker_set_computesolidvolfrac->proc~op_obj_div proc~parallel_obj_rankisroot parallel_obj%parallel_obj_RankIsRoot proc~marker_set_computesolidvolfrac->proc~parallel_obj_rankisroot proc~eulerian_obj_updateghostcells_x eulerian_obj_base%eulerian_obj_UpdateGhostCells_x proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_x proc~eulerian_obj_updateghostcells_y eulerian_obj_base%eulerian_obj_UpdateGhostCells_y proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_y proc~eulerian_obj_updateghostcells_z eulerian_obj_base%eulerian_obj_UpdateGhostCells_z proc~eulerian_obj_updateghostcells->proc~eulerian_obj_updateghostcells_z hypre_init hypre_init proc~hypre_obj_init->hypre_init proc~hypre_obj_setrhsij hypre_obj%hypre_obj_SetRHSIJ proc~hypre_obj_setrhs->proc~hypre_obj_setrhsij proc~hypre_obj_setrhss hypre_obj%hypre_obj_SetRHSS proc~hypre_obj_setrhs->proc~hypre_obj_setrhss proc~hypre_obj_setupgrids hypre_obj%hypre_obj_SetupGridS proc~hypre_obj_setup->proc~hypre_obj_setupgrids proc~hypre_obj_setupmatrixij hypre_obj%hypre_obj_SetupMatrixIJ proc~hypre_obj_setup->proc~hypre_obj_setupmatrixij proc~hypre_obj_setupmatrixs hypre_obj%hypre_obj_SetupMatrixS proc~hypre_obj_setup->proc~hypre_obj_setupmatrixs proc~hypre_obj_setuppointersij hypre_obj%hypre_obj_SetupPointersIJ proc~hypre_obj_setup->proc~hypre_obj_setuppointersij proc~hypre_obj_setuprhsij hypre_obj%hypre_obj_SetupRHSIJ proc~hypre_obj_setup->proc~hypre_obj_setuprhsij proc~hypre_obj_setuprhss hypre_obj%hypre_obj_SetupRHSS proc~hypre_obj_setup->proc~hypre_obj_setuprhss proc~hypre_obj_setuprowsij hypre_obj%hypre_obj_SetupRowsIJ proc~hypre_obj_setup->proc~hypre_obj_setuprowsij proc~hypre_obj_setupsolij hypre_obj%hypre_obj_SetupSolIJ proc~hypre_obj_setup->proc~hypre_obj_setupsolij proc~hypre_obj_setupsolijver hypre_obj%hypre_obj_SetupSolIJver proc~hypre_obj_setup->proc~hypre_obj_setupsolijver proc~hypre_obj_setupsols hypre_obj%hypre_obj_SetupSolS proc~hypre_obj_setup->proc~hypre_obj_setupsols proc~hypre_obj_setupsolvers hypre_obj%hypre_obj_SetupSolverS proc~hypre_obj_setup->proc~hypre_obj_setupsolvers proc~hypre_obj_setupstencils hypre_obj%hypre_obj_SetupStencilS proc~hypre_obj_setup->proc~hypre_obj_setupstencils proc~hypre_obj_solveij hypre_obj%hypre_obj_SolveIJ proc~hypre_obj_solve->proc~hypre_obj_solveij proc~hypre_obj_solves hypre_obj%hypre_obj_SolveS proc~hypre_obj_solve->proc~hypre_obj_solves extrapolate extrapolate proc~marker_set_filter->extrapolate f f proc~marker_set_filter->f markers markers proc~marker_set_filter->markers n n proc~marker_set_filter->n proc~eulerian_obj_addupghostcells eulerian_obj_base%eulerian_obj_AddUpGhostCells proc~marker_set_filter->proc~eulerian_obj_addupghostcells v v proc~marker_set_filter->v proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~op_obj_div->proc~eulerian_obj_init proc~eulerian_obj_addupghostcells->proc~eulerian_obj_updateghostcells proc~eulerian_obj_addupghostcells_x eulerian_obj_base%eulerian_obj_AddUpGhostCells_x proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_x proc~eulerian_obj_addupghostcells_y eulerian_obj_base%eulerian_obj_AddUpGhostCells_y proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_y proc~eulerian_obj_addupghostcells_z eulerian_obj_base%eulerian_obj_AddUpGhostCells_z proc~eulerian_obj_addupghostcells->proc~eulerian_obj_addupghostcells_z cell cell proc~eulerian_obj_updateghostcells_x->cell mpi_irecv mpi_irecv proc~eulerian_obj_updateghostcells_x->mpi_irecv mpi_isend mpi_isend proc~eulerian_obj_updateghostcells_x->mpi_isend mpi_waitall mpi_waitall proc~eulerian_obj_updateghostcells_x->mpi_waitall proc~eulerian_obj_updateghostcells_y->cell proc~eulerian_obj_updateghostcells_y->mpi_irecv proc~eulerian_obj_updateghostcells_y->mpi_isend proc~eulerian_obj_updateghostcells_y->mpi_waitall proc~eulerian_obj_updateghostcells_z->cell proc~eulerian_obj_updateghostcells_z->mpi_irecv proc~eulerian_obj_updateghostcells_z->mpi_isend proc~eulerian_obj_updateghostcells_z->mpi_waitall hypre_ijvectorassemble hypre_ijvectorassemble proc~hypre_obj_setrhsij->hypre_ijvectorassemble hypre_ijvectorsetvalues hypre_ijvectorsetvalues proc~hypre_obj_setrhsij->hypre_ijvectorsetvalues hypre_structvectorassemble hypre_structvectorassemble proc~hypre_obj_setrhss->hypre_structvectorassemble hypre_structvectorsetvalues hypre_structvectorsetvalues proc~hypre_obj_setrhss->hypre_structvectorsetvalues hypre_structgridassemble hypre_structgridassemble proc~hypre_obj_setupgrids->hypre_structgridassemble hypre_structgridcreate hypre_structgridcreate proc~hypre_obj_setupgrids->hypre_structgridcreate hypre_structgridsetextents hypre_structgridsetextents proc~hypre_obj_setupgrids->hypre_structgridsetextents hypre_structgridsetperiodic hypre_structgridsetperiodic proc~hypre_obj_setupgrids->hypre_structgridsetperiodic hypre_ijmatrixassemble hypre_ijmatrixassemble proc~hypre_obj_setupmatrixij->hypre_ijmatrixassemble hypre_ijmatrixcreate hypre_ijmatrixcreate proc~hypre_obj_setupmatrixij->hypre_ijmatrixcreate hypre_ijmatrixgetobject hypre_ijmatrixgetobject proc~hypre_obj_setupmatrixij->hypre_ijmatrixgetobject hypre_ijmatrixinitialize hypre_ijmatrixinitialize proc~hypre_obj_setupmatrixij->hypre_ijmatrixinitialize hypre_ijmatrixsetobjecttype hypre_ijmatrixsetobjecttype proc~hypre_obj_setupmatrixij->hypre_ijmatrixsetobjecttype proc~hypre_obj_buildmatrixij hypre_obj%hypre_obj_BuildMatrixIJ proc~hypre_obj_setupmatrixij->proc~hypre_obj_buildmatrixij hypre_structmatrixassemble hypre_structmatrixassemble proc~hypre_obj_setupmatrixs->hypre_structmatrixassemble hypre_structmatrixcreate hypre_structmatrixcreate proc~hypre_obj_setupmatrixs->hypre_structmatrixcreate hypre_structmatrixinitialize hypre_structmatrixinitialize proc~hypre_obj_setupmatrixs->hypre_structmatrixinitialize proc~hypre_obj_buildmatrixs hypre_obj%hypre_obj_BuildMatrixS proc~hypre_obj_setupmatrixs->proc~hypre_obj_buildmatrixs hypre_setexecutionpolicy hypre_setexecutionpolicy proc~hypre_obj_setuppointersij->hypre_setexecutionpolicy hypre_setmemorylocation hypre_setmemorylocation proc~hypre_obj_setuppointersij->hypre_setmemorylocation hypre_setspgemmusevendor hypre_setspgemmusevendor proc~hypre_obj_setuppointersij->hypre_setspgemmusevendor proc~device_malloc_managed device_malloc_managed proc~hypre_obj_setuppointersij->proc~device_malloc_managed proc~hypre_obj_setuprhsij->hypre_ijvectorassemble hypre_ijvectorcreate hypre_ijvectorcreate proc~hypre_obj_setuprhsij->hypre_ijvectorcreate hypre_ijvectorgetobject hypre_ijvectorgetobject proc~hypre_obj_setuprhsij->hypre_ijvectorgetobject hypre_ijvectorinitialize hypre_ijvectorinitialize proc~hypre_obj_setuprhsij->hypre_ijvectorinitialize hypre_ijvectorsetobjecttype hypre_ijvectorsetobjecttype proc~hypre_obj_setuprhsij->hypre_ijvectorsetobjecttype proc~hypre_obj_setuprhsij->hypre_ijvectorsetvalues proc~hypre_obj_setuprhss->hypre_structvectorassemble hypre_structvectorcreate hypre_structvectorcreate proc~hypre_obj_setuprhss->hypre_structvectorcreate hypre_structvectorinitialize hypre_structvectorinitialize proc~hypre_obj_setuprhss->hypre_structvectorinitialize proc~hypre_obj_setuprowsij->proc~eulerian_obj_updateghostcells proc~hypre_obj_setuprowsij->proc~eulerian_obj_init proc~hypre_obj_setupsolij->hypre_ijvectorassemble proc~hypre_obj_setupsolij->hypre_ijvectorcreate proc~hypre_obj_setupsolij->hypre_ijvectorgetobject proc~hypre_obj_setupsolij->hypre_ijvectorinitialize proc~hypre_obj_setupsolij->hypre_ijvectorsetobjecttype proc~hypre_obj_setupsolij->hypre_ijvectorsetvalues hypre_boomeramgcreate hypre_boomeramgcreate proc~hypre_obj_setupsolijver->hypre_boomeramgcreate hypre_boomeramgsetagginterptype hypre_boomeramgsetagginterptype proc~hypre_obj_setupsolijver->hypre_boomeramgsetagginterptype hypre_boomeramgsetaggnumlevels hypre_boomeramgsetaggnumlevels proc~hypre_obj_setupsolijver->hypre_boomeramgsetaggnumlevels hypre_boomeramgsetcoarsentype hypre_boomeramgsetcoarsentype proc~hypre_obj_setupsolijver->hypre_boomeramgsetcoarsentype hypre_boomeramgsetinterptype hypre_boomeramgsetinterptype proc~hypre_obj_setupsolijver->hypre_boomeramgsetinterptype hypre_boomeramgsetkeeptransp hypre_boomeramgsetkeeptransp proc~hypre_obj_setupsolijver->hypre_boomeramgsetkeeptransp hypre_boomeramgsetmaxiter hypre_boomeramgsetmaxiter proc~hypre_obj_setupsolijver->hypre_boomeramgsetmaxiter hypre_boomeramgsetmaxlevels hypre_boomeramgsetmaxlevels proc~hypre_obj_setupsolijver->hypre_boomeramgsetmaxlevels hypre_boomeramgsetnumsweeps hypre_boomeramgsetnumsweeps proc~hypre_obj_setupsolijver->hypre_boomeramgsetnumsweeps hypre_boomeramgsetpmaxelmts hypre_boomeramgsetpmaxelmts proc~hypre_obj_setupsolijver->hypre_boomeramgsetpmaxelmts hypre_boomeramgsetprintlevel hypre_boomeramgsetprintlevel proc~hypre_obj_setupsolijver->hypre_boomeramgsetprintlevel hypre_boomeramgsetrap2 hypre_boomeramgsetrap2 proc~hypre_obj_setupsolijver->hypre_boomeramgsetrap2 hypre_boomeramgsetrelaxorder hypre_boomeramgsetrelaxorder proc~hypre_obj_setupsolijver->hypre_boomeramgsetrelaxorder hypre_boomeramgsetrelaxtype hypre_boomeramgsetrelaxtype proc~hypre_obj_setupsolijver->hypre_boomeramgsetrelaxtype hypre_boomeramgsettol hypre_boomeramgsettol proc~hypre_obj_setupsolijver->hypre_boomeramgsettol hypre_boomeramgsetup hypre_boomeramgsetup proc~hypre_obj_setupsolijver->hypre_boomeramgsetup hypre_parcsrpcgcreate hypre_parcsrpcgcreate proc~hypre_obj_setupsolijver->hypre_parcsrpcgcreate hypre_parcsrpcgsetlogging hypre_parcsrpcgsetlogging proc~hypre_obj_setupsolijver->hypre_parcsrpcgsetlogging hypre_parcsrpcgsetmaxiter hypre_parcsrpcgsetmaxiter proc~hypre_obj_setupsolijver->hypre_parcsrpcgsetmaxiter hypre_parcsrpcgsetprecond hypre_parcsrpcgsetprecond proc~hypre_obj_setupsolijver->hypre_parcsrpcgsetprecond hypre_parcsrpcgsettol hypre_parcsrpcgsettol proc~hypre_obj_setupsolijver->hypre_parcsrpcgsettol hypre_parcsrpcgsettwonorm hypre_parcsrpcgsettwonorm proc~hypre_obj_setupsolijver->hypre_parcsrpcgsettwonorm hypre_parcsrpcgsetup hypre_parcsrpcgsetup proc~hypre_obj_setupsolijver->hypre_parcsrpcgsetup proc~hypre_obj_setupsols->hypre_structvectorassemble proc~hypre_obj_setupsols->hypre_structvectorcreate proc~hypre_obj_setupsols->hypre_structvectorinitialize hypre_structvectorsetboxvalues hypre_structvectorsetboxvalues proc~hypre_obj_setupsols->hypre_structvectorsetboxvalues hypre_structpcgcreate hypre_structpcgcreate proc~hypre_obj_setupsolvers->hypre_structpcgcreate hypre_structpcgsetlogging hypre_structpcgsetlogging proc~hypre_obj_setupsolvers->hypre_structpcgsetlogging hypre_structpcgsetmaxiter hypre_structpcgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structpcgsetmaxiter hypre_structpcgsetprintlevel hypre_structpcgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structpcgsetprintlevel hypre_structpcgsettol hypre_structpcgsettol proc~hypre_obj_setupsolvers->hypre_structpcgsettol hypre_structpcgsetup hypre_structpcgsetup proc~hypre_obj_setupsolvers->hypre_structpcgsetup hypre_structpfmgcreate hypre_structpfmgcreate proc~hypre_obj_setupsolvers->hypre_structpfmgcreate hypre_structpfmgsetlogging hypre_structpfmgsetlogging proc~hypre_obj_setupsolvers->hypre_structpfmgsetlogging hypre_structpfmgsetmaxiter hypre_structpfmgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structpfmgsetmaxiter hypre_structpfmgsetprintlevel hypre_structpfmgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structpfmgsetprintlevel hypre_structpfmgsetraptype hypre_structpfmgsetraptype proc~hypre_obj_setupsolvers->hypre_structpfmgsetraptype hypre_structpfmgsetrelaxtype hypre_structpfmgsetrelaxtype proc~hypre_obj_setupsolvers->hypre_structpfmgsetrelaxtype hypre_structpfmgsettol hypre_structpfmgsettol proc~hypre_obj_setupsolvers->hypre_structpfmgsettol hypre_structpfmgsetup hypre_structpfmgsetup proc~hypre_obj_setupsolvers->hypre_structpfmgsetup hypre_structsmgcreate hypre_structsmgcreate proc~hypre_obj_setupsolvers->hypre_structsmgcreate hypre_structsmgsetlogging hypre_structsmgsetlogging proc~hypre_obj_setupsolvers->hypre_structsmgsetlogging hypre_structsmgsetmaxiter hypre_structsmgsetmaxiter proc~hypre_obj_setupsolvers->hypre_structsmgsetmaxiter hypre_structsmgsetnumpostrelax hypre_structsmgsetnumpostrelax proc~hypre_obj_setupsolvers->hypre_structsmgsetnumpostrelax hypre_structsmgsetnumprerelax hypre_structsmgsetnumprerelax proc~hypre_obj_setupsolvers->hypre_structsmgsetnumprerelax hypre_structsmgsetprintlevel hypre_structsmgsetprintlevel proc~hypre_obj_setupsolvers->hypre_structsmgsetprintlevel hypre_structsmgsettol hypre_structsmgsettol proc~hypre_obj_setupsolvers->hypre_structsmgsettol hypre_structsmgsetup hypre_structsmgsetup proc~hypre_obj_setupsolvers->hypre_structsmgsetup hypre_structstencilcreate hypre_structstencilcreate proc~hypre_obj_setupstencils->hypre_structstencilcreate hypre_structstencilsetelement hypre_structstencilsetelement proc~hypre_obj_setupstencils->hypre_structstencilsetelement proc~hypre_obj_solveij->proc~eulerian_obj_updateghostcells hypre_boomeramggetfinalreltvres hypre_boomeramggetfinalreltvres proc~hypre_obj_solveij->hypre_boomeramggetfinalreltvres hypre_boomeramggetnumiterations hypre_boomeramggetnumiterations proc~hypre_obj_solveij->hypre_boomeramggetnumiterations hypre_boomeramgsolve hypre_boomeramgsolve proc~hypre_obj_solveij->hypre_boomeramgsolve hypre_ijvectorgetvalues hypre_ijvectorgetvalues proc~hypre_obj_solveij->hypre_ijvectorgetvalues hypre_parcsrpcggetfinalrelative hypre_parcsrpcggetfinalrelative proc~hypre_obj_solveij->hypre_parcsrpcggetfinalrelative hypre_parcsrpcggetnumiterations hypre_parcsrpcggetnumiterations proc~hypre_obj_solveij->hypre_parcsrpcggetnumiterations hypre_parcsrpcgsolve hypre_parcsrpcgsolve proc~hypre_obj_solveij->hypre_parcsrpcgsolve hypre_structpcggetfinalrelative hypre_structpcggetfinalrelative proc~hypre_obj_solves->hypre_structpcggetfinalrelative hypre_structpcggetnumiterations hypre_structpcggetnumiterations proc~hypre_obj_solves->hypre_structpcggetnumiterations hypre_structpcgsolve hypre_structpcgsolve proc~hypre_obj_solves->hypre_structpcgsolve hypre_structpfmggetfinalrelativ hypre_structpfmggetfinalrelativ proc~hypre_obj_solves->hypre_structpfmggetfinalrelativ hypre_structpfmggetnumiteration hypre_structpfmggetnumiteration proc~hypre_obj_solves->hypre_structpfmggetnumiteration hypre_structpfmgsolve hypre_structpfmgsolve proc~hypre_obj_solves->hypre_structpfmgsolve hypre_structsmggetfinalrelative hypre_structsmggetfinalrelative proc~hypre_obj_solves->hypre_structsmggetfinalrelative hypre_structsmggetnumiterations hypre_structsmggetnumiterations proc~hypre_obj_solves->hypre_structsmggetnumiterations hypre_structsmgsolve hypre_structsmgsolve proc~hypre_obj_solves->hypre_structsmgsolve hypre_structvectorgetboxvalues hypre_structvectorgetboxvalues proc~hypre_obj_solves->hypre_structvectorgetboxvalues interface~cudamallocmanaged cudaMallocManaged proc~device_malloc_managed->interface~cudamallocmanaged proc~eulerian_obj_addupghostcells_x->cell proc~eulerian_obj_addupghostcells_x->mpi_irecv proc~eulerian_obj_addupghostcells_x->mpi_isend proc~eulerian_obj_addupghostcells_x->mpi_waitall proc~eulerian_obj_addupghostcells_y->cell proc~eulerian_obj_addupghostcells_y->mpi_irecv proc~eulerian_obj_addupghostcells_y->mpi_isend proc~eulerian_obj_addupghostcells_y->mpi_waitall proc~eulerian_obj_addupghostcells_z->cell proc~eulerian_obj_addupghostcells_z->mpi_irecv proc~eulerian_obj_addupghostcells_z->mpi_isend proc~eulerian_obj_addupghostcells_z->mpi_waitall hypre_ijmatrixaddtovalues hypre_ijmatrixaddtovalues proc~hypre_obj_buildmatrixij->hypre_ijmatrixaddtovalues hypre_structmatrixsetvalues hypre_structmatrixsetvalues proc~hypre_obj_buildmatrixs->hypre_structmatrixsetvalues

Source Code

    impure subroutine marker_set_ComputeSolidVolFrac (this,VF,solver,MaxTol,MaxIt,RelaxType,Rel,It,intRHS)
      !> Computes the solid volume fraction on the mesh.
      use leapDiffOp
      implicit none
      class(marker_set),    intent(inout) :: this                              !! A collection of tessellation elements
      type(eulerian_obj_r), intent(inout) :: VF                                !! Volume fraction
      character(len=*),     intent(in)    :: solver                            !! Name of solver to be used
      real(wp),             intent(in)    :: MaxTol                            !! Maximum relative tolerance
      integer,              intent(in)    :: MaxIt                             !! Maximum number of subiterations
      integer,              intent(in),    &
                                 optional :: RelaxType                         !! Relaxation type
      real(wp),             intent(out),   &
                                 optional :: Rel                               !! Relative error at end of solve
      integer,              intent(out),   &
                                 optional :: It                                !! Number of iterations performed
      real(wp),             intent(out),   &
                                 optional :: intRHS                            !! Magnitude of RHS
      ! Work variables
      type(hypre_obj)      :: hypre
      type(op_obj)         :: op
      type(eulerian_obj_r) :: N1,  N2,  N3
      integer              :: i,j,k
      real(wp)             :: dx,dy,dz,Vol,buffr

      ! Initialize HYPRE
      ! -------------------------- !
      call hypre%Initialize(this%block,this%parallel)

      ! Chose solver to use
      if (present(RelaxType)) then
        call hypre%SelectSolver(solver,MaxTol=MaxTol,MaxIt=MaxIt,RelaxType=RelaxType)
      else
        call hypre%SelectSolver(solver, MaxTol=MaxTol,MaxIt=MaxIt)
      end if

      ! Setup the solver
      call hypre%Setup()

      ! Setting up right hand side
      ! -------------------------- !
      call N1%Initialize('N1',this%block,this%parallel,0)
      call N2%Initialize('N2',this%block,this%parallel,0)
      call N3%Initialize('N3',this%block,this%parallel,0)

      ! Filter normals on mesh
      call this%Filter('N1',N1)
      call this%Filter('N2',N2)
      call this%Filter('N3',N3)

      ! Compute the divergence
      call op%Initialize(this%block,this%parallel)
      VF=op%div(VF%name,N1,N2,N3)
      VF%cell = - VF%cell

      call N1%Finalize()
      call N2%Finalize()
      call N3%Finalize()

      ! Setting up right hand side
      ! -------------------------- !
      if (present(intRHS)) then
        intRHS = 0.0_wp
        Vol    = 0.0_wp
        do k=this%block%lo(3),this%block%hi(3)
          do j=this%block%lo(2),this%block%hi(2)
            do i=this%block%lo(1),this%block%hi(1)
              dx = this%block%x(i+1)-this%block%x(i)
              dy = this%block%y(j+1)-this%block%y(j)
              dz = this%block%z(k+1)-this%block%z(k)
              intRHS = intRHS + VF%cell(i,j,k)* dx*dy*dz
              Vol= Vol + dx*dy*dz
            end do
          end do
        end do
        call this%parallel%Sum(Vol,    buffr); Vol   = buffr
        call this%parallel%Sum(intRHS, buffr); intRHS= buffr/Vol
      end if

      call hypre%SetRHS(VF)

      ! Solve Poisson equation
      ! -------------------------- !
      call hypre%Solve(VF)

      ! Update ghostcells
      call VF%UpdateGhostCells

      if (present(Rel)) Rel=hypre%rel
      if (present(It))  It=hypre%it

      ! Throw warning if appropriate
      if (hypre%rel > MaxTol .and. this%parallel%RankIsRoot()) &
            write(*,fmt='(a,ES12.5)') "Warning: Volume Fraction solver did not converge -- Rel. Res.=",hypre%rel

      ! Finalize
      call hypre%Finalize()
      call op%Finalize()

      return
    end subroutine marker_set_ComputeSolidVolFrac