Processes and outputs single-precision data for visualization.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(cdifs_obj), | intent(inout) | :: | this |
CDIFS solver |
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