Updates the Normals field.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(marker_set), | intent(inout) | :: | this |
A collection of tessellation elements |
||
| type(eulerian_obj_r), | intent(inout) | :: | ibN(3) |
Normals field |
impure subroutine marker_set_UpdateNormals(this,ibN) !> Updates the Normals field. implicit none class(marker_set), intent(inout) :: this !! A collection of tessellation elements type(eulerian_obj_r), intent(inout) :: ibN(3) !! Normals field ! work variables type(eulerian_obj_r):: tmp(3) integer :: i,j,k ! Initialize temporary fields call tmp(1)%Initialize('ibN1',this%block,this%parallel,0) call tmp(2)%Initialize('ibN2',this%block,this%parallel,0) call tmp(3)%Initialize('ibN3',this%block,this%parallel,0) ! Filter and add to total normals field call this%Filter('N1',tmp(1)) call this%Filter('N2',tmp(2)) call this%Filter('N3',tmp(3)) ! Apply boundary conditions call this%bcs%UpdateBoundary(tmp) ! Interpolate from cell centers to faces 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) ibN(1)%cell(i,j,k) = ibN(1)%cell(i,j,k) + dot_product(this%op%c_intrp1m(:,i),tmp(1)%cell(i-this%op%st:i+this%op%st-1,j,k)) ibN(2)%cell(i,j,k) = ibN(2)%cell(i,j,k) + dot_product(this%op%c_intrp2m(:,j),tmp(2)%cell(i,j-this%op%st:j+this%op%st-1,k)) ibN(3)%cell(i,j,k) = ibN(3)%cell(i,j,k) + dot_product(this%op%c_intrp3m(:,k),tmp(3)%cell(i,j,k-this%op%st:k+this%op%st-1)) end do end do end do call ibN(1)%UpdateGhostCells() call ibN(2)%UpdateGhostCells() call ibN(3)%UpdateGhostCells() ! Clear data call tmp(1)%Finalize() call tmp(2)%Finalize() call tmp(3)%Finalize() return end subroutine marker_set_UpdateNormals