cdifs_obj_WriteOutputData Module Subroutine

module subroutine cdifs_obj_WriteOutputData(this)

Processes and outputs single-precision data for visualization.

Arguments

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

CDIFS solver


Calls

proc~~cdifs_obj_writeoutputdata~~CallsGraph proc~cdifs_obj_writeoutputdata cdifs_obj_WriteOutputData proc~eulerian_obj_updateghostcells eulerian_obj_base%eulerian_obj_UpdateGhostCells proc~cdifs_obj_writeoutputdata->proc~eulerian_obj_updateghostcells proc~op_obj_intrp1 op_obj%op_obj_intrp1 proc~cdifs_obj_writeoutputdata->proc~op_obj_intrp1 proc~op_obj_intrp2 op_obj%op_obj_intrp2 proc~cdifs_obj_writeoutputdata->proc~op_obj_intrp2 proc~op_obj_intrp3 op_obj%op_obj_intrp3 proc~cdifs_obj_writeoutputdata->proc~op_obj_intrp3 proc~respart_set_writesilo ResPart_set%ResPart_set_WriteSILO proc~cdifs_obj_writeoutputdata->proc~respart_set_writesilo proc~timer_obj_updatetiming timer_obj%timer_obj_UpdateTiming proc~cdifs_obj_writeoutputdata->proc~timer_obj_updatetiming 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 proc~eulerian_obj_init eulerian_obj_base%eulerian_obj_Init proc~op_obj_intrp1->proc~eulerian_obj_init proc~op_obj_intrp2->proc~eulerian_obj_init proc~op_obj_intrp3->proc~eulerian_obj_init particles particles proc~respart_set_writesilo->particles proc~silo_obj_final silo_obj%silo_obj_Final proc~respart_set_writesilo->proc~silo_obj_final proc~silo_obj_init silo_obj%silo_obj_Init proc~respart_set_writesilo->proc~silo_obj_init proc~silo_obj_newtimestep silo_obj%silo_obj_NewTimeStep proc~respart_set_writesilo->proc~silo_obj_newtimestep proc~silo_obj_writelagrangianmesh silo_obj%silo_obj_WriteLagrangianMesh proc~respart_set_writesilo->proc~silo_obj_writelagrangianmesh v v proc~respart_set_writesilo->v w w proc~respart_set_writesilo->w none~get~3 hashtbl_obj%Get proc~timer_obj_updatetiming->none~get~3 proc~hashtbl_obj_hashstring hashtbl_obj%hashtbl_obj_HashString proc~timer_obj_updatetiming->proc~hashtbl_obj_hashstring proc~hashtbl_obj_get_int4 hashtbl_obj%hashtbl_obj_Get_int4 none~get~3->proc~hashtbl_obj_get_int4 proc~hashtbl_obj_get_int8 hashtbl_obj%hashtbl_obj_Get_int8 none~get~3->proc~hashtbl_obj_get_int8 proc~hashtbl_obj_get_real_dp hashtbl_obj%hashtbl_obj_Get_real_dp none~get~3->proc~hashtbl_obj_get_real_dp proc~hashtbl_obj_get_real_sp hashtbl_obj%hashtbl_obj_Get_real_sp none~get~3->proc~hashtbl_obj_get_real_sp 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 dbclose dbclose proc~silo_obj_final->dbclose proc~parallel_obj_rankisroot parallel_obj%parallel_obj_RankIsRoot proc~silo_obj_final->proc~parallel_obj_rankisroot dbsetemptyok dbsetemptyok proc~silo_obj_init->dbsetemptyok proc~silo_obj_init->proc~parallel_obj_rankisroot proc~silo_obj_creategroups silo_obj%silo_obj_CreateGroups proc~silo_obj_init->proc~silo_obj_creategroups proc~stringtool_obj_removeextension stringtool_obj%stringtool_obj_RemoveExtension proc~silo_obj_init->proc~stringtool_obj_removeextension proc~sysutils_obj_createdirectory sysutils_obj%sysutils_obj_CreateDirectory proc~silo_obj_init->proc~sysutils_obj_createdirectory dbcreate dbcreate proc~silo_obj_newtimestep->dbcreate dbset2dstrlen dbset2dstrlen proc~silo_obj_newtimestep->dbset2dstrlen mpi_barrier mpi_barrier proc~silo_obj_newtimestep->mpi_barrier proc~silo_obj_newtimestep->proc~parallel_obj_rankisroot proc~silo_obj_setupgroupfiles silo_obj%silo_obj_SetupGroupFiles proc~silo_obj_newtimestep->proc~silo_obj_setupgroupfiles proc~silo_obj_newtimestep->proc~sysutils_obj_createdirectory dbaddiopt dbaddiopt proc~silo_obj_writelagrangianmesh->dbaddiopt proc~silo_obj_writelagrangianmesh->dbclose dbfreeoptlist dbfreeoptlist proc~silo_obj_writelagrangianmesh->dbfreeoptlist dbmkoptlist dbmkoptlist proc~silo_obj_writelagrangianmesh->dbmkoptlist dbopen dbopen proc~silo_obj_writelagrangianmesh->dbopen dbputmmesh dbputmmesh proc~silo_obj_writelagrangianmesh->dbputmmesh dbputpm dbputpm proc~silo_obj_writelagrangianmesh->dbputpm dbsetdir dbsetdir proc~silo_obj_writelagrangianmesh->dbsetdir proc~silo_obj_writelagrangianmesh->mpi_barrier proc~silo_obj_writelagrangianmesh->proc~parallel_obj_rankisroot none~get~2 sllist_obj%Get proc~hashtbl_obj_get_int4->none~get~2 proc~hashtbl_obj_get_int8->none~get~2 proc~hashtbl_obj_get_real_dp->none~get~2 proc~hashtbl_obj_get_real_sp->none~get~2 mpi_comm_rank mpi_comm_rank proc~silo_obj_creategroups->mpi_comm_rank mpi_comm_split mpi_comm_split proc~silo_obj_creategroups->mpi_comm_split proc~silo_obj_setupgroupfiles->dbclose proc~silo_obj_setupgroupfiles->dbcreate proc~silo_obj_setupgroupfiles->mpi_barrier dbmkdir dbmkdir proc~silo_obj_setupgroupfiles->dbmkdir mpi_comm_size mpi_comm_size proc~silo_obj_setupgroupfiles->mpi_comm_size proc~sllist_obj_get_int4 sllist_obj%sllist_obj_Get_int4 none~get~2->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8 sllist_obj%sllist_obj_Get_int8 none~get~2->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp sllist_obj%sllist_obj_Get_real_dp none~get~2->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp sllist_obj%sllist_obj_Get_real_sp none~get~2->proc~sllist_obj_get_real_sp proc~sllist_obj_get_int4->proc~sllist_obj_get_int4 proc~sllist_obj_get_int8->proc~sllist_obj_get_int8 proc~sllist_obj_get_real_dp->proc~sllist_obj_get_real_dp proc~sllist_obj_get_real_sp->proc~sllist_obj_get_real_sp

Called by

proc~~cdifs_obj_writeoutputdata~~CalledByGraph proc~cdifs_obj_writeoutputdata cdifs_obj_WriteOutputData interface~cdifs_obj_writeoutputdata cdifs_obj%cdifs_obj_WriteOutputData interface~cdifs_obj_writeoutputdata->proc~cdifs_obj_writeoutputdata proc~cdifs_obj_preparesolver cdifs_obj_PrepareSolver proc~cdifs_obj_preparesolver->interface~cdifs_obj_writeoutputdata interface~cdifs_obj_preparesolver cdifs_obj%cdifs_obj_PrepareSolver interface~cdifs_obj_preparesolver->proc~cdifs_obj_preparesolver

Source Code

    module subroutine cdifs_obj_WriteOutputData(this)
      !> Processes and outputs single-precision data for visualization.
      implicit none
      class(cdifs_obj), intent(inout) :: this                                  !! CDIFS solver
      ! Work variables
      integer :: n
      integer :: i,j,k

      if (.not.allocated(this%outputs)) return

      do n=1,size(this%outputs)
       select case (this%outputs(n))
       case ('P')
         ! Nothing to do
       case ('Vel')
         ! Compute velocities at cell-centers
         this%Vm(1) = this%op%intrp1(this%V(1))
         this%Vm(2) = this%op%intrp2(this%V(2))
         this%Vm(3) = this%op%intrp3(this%V(3))
       case ('DIV')
         associate (op=>this%op, lo=>this%block%lo,  hi=>this%block%hi,   &
           V=>this%V)
           ! - Compute divergence field
           this%divu%cell = 0.0_wp
           do k=lo(3),hi(3)
             do j=lo(2),hi(2)
               do i=lo(1),hi(1)
                 ! Compute max divergence
                 this%divu%cell(i,j,k) = dot_product(this%DIV(:,i,j,k,1),V(1)%cell(i-op%st+1:i+op%st,j,k)) &
                                       + dot_product(this%DIV(:,i,j,k,2),V(2)%cell(i,j-op%st+1:j+op%st,k)) &
                                       + dot_product(this%DIV(:,i,j,k,3),V(3)%cell(i,j,k-op%st+1:k+op%st))
               end do
             end do
           end do
         end associate
         call this%divu%UpdateGhostCells
       case ('ibS')
         ! Nothing to do
       case ('ibF')
         ! Nothing to do
       case ('ibN')
         ! Nothing to do
       case ('ibVF')
         ! Nothing to do
       case ('ResPart')
         if (this%use_RP) call this%RP%WriteSilo(this%timer%iter,this%timer%time,this%output_var)
       end select
      end do

      ! Write data required for visualization in single precision
      call this%fields%WriteSilo(this%timer%iter,this%timer%time,this%output_var)

      ! Update timing info
      call this%timer%UpdateTiming('Output' )

      return
    end subroutine cdifs_obj_WriteOutputData