Version 1 (modified by 11 years ago) ( diff ) | ,
---|
So - data structures?
Type ZoneLayout
integer :: ZoneLayout(3,2,nZones) integer :: ZoneMembers(nZones, MaxProcsPerZone)
Type PatchBoundaryDataPerZonePerDirection(nMyZones, nRays)
- integer
- mGlobal !originating patch boundaries - used for sorting
- integer
- Rays(2,2) ! given indexing based on direction and level
- REAL
- Depth (:,
- LOGICAL
- Integrated ! stores whether each ray is an integrated value - or a local value
- REAL
- zvals(:, ! stores exit value for 'z' data. used to determine which rays should be accumulated.
end type
Patch→Zones→RayBoundaries → Communication to Upwind Zones
Each processor orders Patch Boundaries within a zone and integrates the depth. At this point every patch boundary should be integrated and is suitable for updating physical zones. So now - loop over patches and find boundaries and update optical depth to all of the cells.
SUBROUTINE Calculate_Patch_Boundary_Data_For_Local_Zones(Info, direction) ! Calculates optical depth from grid edge to each cell and creates a Patch_Boundary_Data_Per_Zone_Per_Direction object(s)
END
SUBROUTINE Integrate_Patch_Boundary_Data_For_Zone(zone, direction)
END