From 5f41f66d8e60db482d62bf2c70055b4b9fd52b20 Mon Sep 17 00:00:00 2001 From: Jim Wittig Date: Mon, 11 Mar 2024 14:04:38 -0600 Subject: [PATCH 001/115] Merge mpas_dmpar_exch_halo_adj_field2d_real() from the JCSDA-internal/MPAS-Model repository. Note the number of halo layers impacts the number of cells which will be updated by this routine: The first halo layer will update the owned 'edge' cells, where 'edge' cells are adjacent to ghost cells. The second halo layer will update owned cells which are adjacent to the 'edge' cells. The third halo layer will update owned cells which are adjacent to the cells updated by the seconds halo layer, etc. --- src/framework/mpas_dmpar.F | 196 +++++++++++++++++++++++++++++++++++++ 1 file changed, 196 insertions(+) diff --git a/src/framework/mpas_dmpar.F b/src/framework/mpas_dmpar.F index cd901817c5..10eb386cd0 100644 --- a/src/framework/mpas_dmpar.F +++ b/src/framework/mpas_dmpar.F @@ -151,6 +151,14 @@ module mpas_dmpar module procedure mpas_dmpar_exch_halo_field5d_real end interface + interface mpas_dmpar_exch_halo_adj_field + module procedure mpas_dmpar_exch_halo_adj_field2d_real + end interface + + public :: mpas_dmpar_exch_halo_adj_field + + private :: mpas_dmpar_exch_halo_adj_field2d_real + public :: mpas_dmpar_exch_halo_field private :: mpas_dmpar_exch_halo_field1d_integer @@ -5458,6 +5466,7 @@ subroutine mpas_dmpar_exch_halo_field2d_real(field, haloLayersIn)!{{{ end do else nHaloLayers = size(field % sendList % halos) + DMPAR_DEBUG_WRITE('exch_halo nHaloLayers:$i destList halos:$i' COMMA intArgs=(/nHaloLayers COMMA size(field%recvList%halos)/)) allocate(haloLayers(nHaloLayers)) do iHalo = 1, nHaloLayers haloLayers(iHalo) = iHalo @@ -6167,6 +6176,193 @@ subroutine mpas_dmpar_exch_halo_field5d_real(field, haloLayersIn)!{{{ end subroutine mpas_dmpar_exch_halo_field5d_real!}}} + !----------------------------------------------------------------------- + ! routine mpas_dmpar_exch_halo_adj_field2d_real + ! + !> \brief MPAS dmpar halo exchange adjoint 2D real field + !> \author BJ Jung + !> \date 09/2020 + !> \details + !> This routine handles the adjoint of halo exchange communication of an input field across all processors. + !> It accumulates the values of owned point with the values of halos. It is based on mpas_dmpar_exch_halo_field2d_real. + ! + !> Note the number of halo layers impacts the number of cells which will be updated by this routine: + !> The first halo layer will update the owned 'edge' cells, where 'edge' cells are adjacent to ghost cells. + !> The second halo layer will update owned cells which are adjacent to the 'edge' cells. + !> The third halo layer will update owned cells which are adjacent to the cells updated by the seconds halo layer, etc. + !----------------------------------------------------------------------- + subroutine mpas_dmpar_exch_halo_adj_field2d_real(field, haloLayersIn)!{{{ + + implicit none + + type (field2dReal), pointer, intent(inout) :: field !< Input: Field to communicate + integer, dimension(:), intent(in), optional :: haloLayersIn !< Input: List of halo layers to communicate. Defaults to all + type (dm_info), pointer :: dminfo + type (field2dReal), pointer :: fieldCursor, fieldCursor2 + type (mpas_exchange_list), pointer :: exchListPtr + type (mpas_communication_list), pointer :: sendList, recvList, commListPtr + integer :: mpi_ierr, threadNum + integer :: nHaloLayers, iHalo, i, j + integer :: bufferOffset, nAdded + integer, dimension(:), pointer :: haloLayers + + if ( .not. field % isActive ) then + DMPAR_DEBUG_WRITE(' -- Skipping halo exchange for deactivated field: ' // trim(field % fieldName)) + return + end if + + do i = 1, 2 + if(field % dimSizes(i) <= 0) then + return + end if + end do + + dminfo => field % block % domain % dminfo + threadNum = mpas_threading_get_thread_num() + + if ( threadNum == 0 ) then + if(present(haloLayersIn)) then + nHaloLayers = size(haloLayersIn) + allocate(haloLayers(nHaloLayers)) + do iHalo = 1, nHaloLayers + haloLayers(iHalo) = haloLayersIn(iHalo) + end do + else + nHaloLayers = size(field % sendList % halos) + DMPAR_DEBUG_WRITE('exch_halo_adjoint nHaloLayers:$i destList halos:$i' COMMA intArgs=(/nHaloLayers COMMA size(field%recvList%halos)/)) + allocate(haloLayers(nHaloLayers)) + do iHalo = 1, nHaloLayers + haloLayers(iHalo) = iHalo + end do + end if + +#ifdef _MPI + ! Setup Communication Lists + call mpas_dmpar_build_comm_lists(field % sendList, field % recvList, haloLayers, field % dimsizes, sendList, recvList) + + ! Allocate space in recv lists, and initiate mpi_irecv calls + commListPtr => sendList + do while(associated(commListPtr)) + allocate(commListPtr % rbuffer(commListPtr % nList)) + nullify(commListPtr % ibuffer) + call MPI_Irecv(commListPtr % rbuffer, commListPtr % nList, MPI_REALKIND, commListPtr % procID, commListPtr % procID, dminfo % comm, commListPtr % reqID, mpi_ierr) + + commListPtr => commListPtr % next + end do + + ! Allocate space in send lists, copy data into buffer, and initiate mpi_isend calls + commListPtr => recvList + do while(associated(commListPtr)) + allocate(commListPtr % rbuffer(commListPtr % nList)) + nullify(commListPtr % ibuffer) + bufferOffset = 0 + do iHalo = 1, nHaloLayers + nAdded = 0 + fieldCursor => field + do while(associated(fieldCursor)) + exchListPtr => fieldCursor % recvList % halos(haloLayers(iHalo)) % exchList + do while(associated(exchListPtr)) + if(exchListPtr % endPointID == commListPtr % procID) then + do i = 1, exchListPtr % nList + do j = 1, fieldCursor % dimSizes(1) + commListPtr % rbuffer((exchListPtr % srcList(i)-1) * fieldCursor % dimSizes(1) + j + bufferOffset) = fieldCursor % array(j, exchListPtr % destList(i)) + ! update halo cell + fieldCursor % array(j, exchListPtr % destList(i)) = 0.0_RKIND + nAdded = nAdded + 1 + end do + end do + end if + + exchListPtr => exchListPtr % next + end do + + fieldCursor => fieldCursor % next + end do + bufferOffset = bufferOffset + nAdded + end do + + call MPI_Isend(commListPtr % rbuffer, commListPtr % nList, MPI_REALKIND, commListPtr % procID, dminfo % my_proc_id, dminfo % comm, commListPtr % reqID, mpi_ierr) + commListPtr => commListPtr % next + end do +#endif + + ! Handle local copy. If MPI is off, then only local copies are performed. + fieldCursor => field + do while(associated(fieldCursor)) + do iHalo = 1, nHaloLayers + exchListPtr => fieldCursor % copyList % halos(haloLayers(iHalo)) % exchList + + do while(associated(exchListPtr)) + fieldCursor2 => field + do while(associated(fieldCursor2)) + if(exchListPtr % endPointID == fieldCursor2 % block % localBlockID) then + do i = 1, exchListPtr % nList + !fieldCursor2 % array(:, exchListPtr % destList(i)) = fieldCursor % array(:, exchListPtr % srcList(i)) + fieldCursor % array(:, exchListPtr % srcList(i)) = fieldCursor % array(:, exchListPtr % srcList(i)) + fieldCursor2 % array(:, exchListPtr % destList(i)) + fieldCursor2 % array(:, exchListPtr % destList(i)) = 0.0_RKIND + end do + end if + + fieldCursor2 => fieldCursor2 % next + end do + + exchListPtr => exchListPtr % next + end do + end do + + fieldCursor => fieldCursor % next + end do + +#ifdef _MPI + + ! Wait for mpi_irecv to finish, and unpack data from buffer + commListPtr => sendList + do while(associated(commListPtr)) + call MPI_Wait(commListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr) + bufferOffset = 0 + do iHalo = 1, nHaloLayers + nAdded = 0 + fieldCursor => field + do while(associated(fieldCursor)) + exchListPtr => fieldCursor % sendList % halos(haloLayers(iHalo)) % exchList + do while(associated(exchListPtr)) + if(exchListPtr % endPointID == commListPtr % procID) then + do i = 1, exchListPtr % nList + do j = 1, fieldCursor % dimSizes(1) + ! update cell in our block + fieldCursor % array(j, exchListPtr % srcList(i)) = fieldCursor % array(j, exchListPtr % srcList(i)) + commListPtr % rbuffer((exchListPtr % destList(i)-1) * fieldCursor % dimSizes(1) + j + bufferOffset) + commListPtr % rbuffer((exchListPtr % destList(i)-1) * fieldCursor % dimSizes(1) + j + bufferOffset) = 0.0_RKIND + end do + end do + nAdded = max(nAdded, maxval(exchListPtr % destList) * fieldCursor % dimSizes(1)) + end if + exchListPtr => exchListPtr % next + end do + + fieldCursor => fieldCursor % next + end do + bufferOffset = bufferOffset + nAdded + end do + commListPtr => commListPtr % next + end do + + ! wait for mpi_isend to finish. + commListPtr => recvList + do while(associated(commListPtr)) + call MPI_Wait(commListPtr % reqID, MPI_STATUS_IGNORE, mpi_ierr) + commListPtr => commListPtr % next + end do + + ! Destroy commLists. + call mpas_dmpar_destroy_communication_list(sendList) + call mpas_dmpar_destroy_communication_list(recvList) +#endif + + deallocate(haloLayers) + end if + + end subroutine mpas_dmpar_exch_halo_adj_field2d_real!}}} + !----------------------------------------------------------------------- ! routine mpas_dmpar_init_multihalo_exchange_list ! From aa507fdd6d798ea38731aff236d8dce9c18c6790 Mon Sep 17 00:00:00 2001 From: Jim Wittig Date: Mon, 11 Mar 2024 14:05:44 -0600 Subject: [PATCH 002/115] Add unit tests to verify the halo adjoint exchange. --- src/core_test/mpas_test_core_halo_exch.F | 229 ++++++++++++++++++++++- 1 file changed, 227 insertions(+), 2 deletions(-) diff --git a/src/core_test/mpas_test_core_halo_exch.F b/src/core_test/mpas_test_core_halo_exch.F index f3979f74ac..1349b8981f 100644 --- a/src/core_test/mpas_test_core_halo_exch.F +++ b/src/core_test/mpas_test_core_halo_exch.F @@ -7,6 +7,7 @@ ! !#define HALO_EXCH_DEBUG +!#define HALO_EXCH_DEBUG_VERBOSE module test_core_halo_exch @@ -51,7 +52,7 @@ subroutine test_core_halo_exch_test(domain, threadErrs, err)!{{{ call mpas_timer_start('halo exch tests') if ( threadNum == 0 ) then - call mpas_log_write(' - Performing exchange group tests') + call mpas_log_write(' - Performing group halo exchange tests') end if call test_core_halo_exch_group_test(domain, threadErrs, iErr) call mpas_threading_barrier() @@ -115,6 +116,7 @@ subroutine test_core_halo_exch_full_test(domain, threadErrs, err)!{{{ type (field2DInteger), pointer :: int2DField type (field1DInteger), pointer :: int1DField + integer :: iErr integer :: threadNum threadNum = mpas_threading_get_thread_num() + 1 @@ -247,8 +249,11 @@ subroutine test_core_halo_exch_full_test(domain, threadErrs, err)!{{{ call mpas_threading_barrier() - call test_core_halo_exch_validate_fields(domain, threadErrs, err) + call test_core_halo_exch_validate_fields(domain, threadErrs, iErr) + err = ior(err, iErr) + call test_halo_adj_exch_fields(domain, threadErrs, iErr) + err = ior(err, iErr) end subroutine test_core_halo_exch_full_test!}}} @@ -983,6 +988,7 @@ end subroutine test_core_halo_exch_setup_fields!}}} !----------------------------------------------------------------------- function computeErrors(nColumns, expectedValues, real5D, real4D, real3D, real2D, real1D, & int3d, int2d, int1d) result(errorCode) + integer, intent(in) :: nColumns !< the outermost dimension size to be checked integer, dimension(:), pointer, intent(in) :: expectedValues !< an array of expected values !< the following are multi-dimension arrays whose elements are checked @@ -1370,5 +1376,224 @@ subroutine test_core_halo_exch_validate_fields(domain, threadErrs, err)!{{{ end subroutine test_core_halo_exch_validate_fields!}}} + !*********************************************************************** + !> \brief Identify cells which are adjacent to the cells with the provided cellMask/ + !> \Author Michael Duda + !> \details + !> This function identifies cells which are adjacent to cells with the provided mask. + !> Such cells will be marked with with cellMask+1. + !> Only cells which have no mask are considered. + !----------------------------------------------------------------------- + function mark_interior_cells(cellMask, sentinelValue, cellsOnCell, nEdgesOnCell) result(nCellsMarked) + + !< array of masks, where a value of zero means the cell won't be updated by the halo adjoint exchange + integer, dimension(:), intent(inout) :: cellMask + integer, intent(in) :: sentinelValue !< the value to look for being adjacent to + integer, dimension(:,:), intent(in) :: cellsOnCell !< array containing adjacent cells for each cell + integer, dimension(:), intent(in) :: nEdgesOnCell !< array containing edges for each cell + + integer :: iCell, j, nCellsMarked + + nCellsMarked = 0 + do iCell = 1, size(cellMask) + if (cellMask(iCell) == 0) then + do j = 1, nEdgesOnCell(iCell) + if (cellMask(cellsOnCell(j, iCell)) == sentinelValue) then + cellMask(iCell) = sentinelValue + 1 + nCellsMarked = nCellsMarked + 1 +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' mark_interior iCell:$i abuts:$i', & + intArgs = (/iCell, cellsOnCell(j,iCell)/)) +#endif + exit + end if + end do + end if + end do +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' mark_interior nCellsMarked:$i sentinel:$i', & + intArgs=(/nCellsMarked, sentinelValue/)) +#endif + + end function mark_interior_cells + + !*********************************************************************** + !> \brief Identify interior and edge cells + !> \Author Michael Duda, Jim Wittig + !> \details + !> This function identifies cells which are on the interior, vs cells on the edge + !> (cells with neighbors which aren't in this block). + !> Returns a vector of flags corresponding to the array of cells, where a value of zero indicates + !> the cell is interior, and a value of non-zero indicates + !> 1. the cell is a halo cell (not owned by this block) + !> 2. the cell is on an edge of this block (adjacent to a halo cell), or + !> 3. the cell is adjacent to an edge cell, or + !> 4. the cell is adjacent to a cell which is adjacent to an edge + !> This identifies cells which should be updated via the halo adjoint exchange. + !> Cells marked with a 2 should get updated via halo layer 1. + !> Cells marked with a 3 should get updated via halo layer 2, etc. + !> + !----------------------------------------------------------------------- + function findExteriorCells(nCellsSolve, nCells, cellsOnCell, edgesOnCell, nHaloLayers) & + result(exteriorCells) + + integer, intent(in) :: nCellsSolve !< the number of cells in this block + integer, intent(in) :: nCells !< total number of cells (cells in this block plus halo cells) + integer, dimension(:,:), intent(in) :: cellsOnCell !< array with adjacent cells for each cell + integer, dimension(:), intent(in) :: edgesOnCell !< array with edges for each cell + integer, intent(in) :: nHaloLayers !< the number of halo layers + + integer, dimension(:), allocatable :: exteriorCells + integer nInterior, nEdge, nLayers + + allocate(exteriorCells(nCells)) + exteriorCells(1:nCellsSolve) = 0 !< mark all owned cells as interior + exteriorCells(nCellsSolve+1:nCells) = 1 !< mark all halo cells as edge + nInterior = 0 + nEdge = 0 +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' halo cellsOnCell($i x $i)', & + intArgs=(/size(cellsOnCell, dim=1), size(cellsOnCell, dim=2)/)) +#endif + + ! At this point, only halo cells are marked 1, and all owned cells are marked 0 + ! for each halo layer, mark cells adjacent to already marked cells with next highest marker + do nLayers = 1, nHaloLayers + nEdge = nEdge + mark_interior_cells(exteriorCells(1:nCells), nLayers, cellsOnCell, edgesOnCell) + end do + + nInterior = nCellsSolve - nEdge + +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' halo nInterior:$i nEdge:$i', intArgs=(/nInterior, nEdge/)) +#endif + end function findExteriorCells + + !*********************************************************************** + !> \brief MPAS Test Core halo adjoint exchange + !> \details + !> This routine applies the halo adjoint function to a 2D array and verifies + !> interior cell's values don't change, and border cell's values are modified. + !> It assumes a halo exchange has already been applied. + !> Returns 0 on success, non-0 on failure. + !----------------------------------------------------------------------- + subroutine test_halo_adj_exch_fields(domain, threadErrs, err) + + type (domain_type), intent(inout) :: domain + integer, dimension(:), intent(out) :: threadErrs + integer, intent(out) :: err + + type (block_type), pointer :: block + type (mpas_pool_type), pointer :: meshPool, haloExchTestPool + type (field2DReal), pointer :: real2DField + real (kind=RKIND), dimension(:, :), pointer :: real2D + real (kind=RKIND), dimension(:, :), allocatable :: real2Dorig + integer, dimension(:,:), pointer :: cellsOnCell + integer, dimension(:), pointer :: nEdgesOnCell + integer, dimension(:), allocatable :: exteriorCells + integer, pointer :: nCells, nCellsSolve + integer :: iCell, iEdgeOnCell, nInterior, nEdge, nHaloLayers + + err = 0 + ! get a variable to call the adjoint halo on + block => domain % blocklist + + call mpas_pool_get_subpool(block % structs, 'haloExchTest', haloExchTestPool) + call mpas_pool_get_subpool(block % structs, 'mesh', meshPool) + call mpas_pool_get_field(haloExchTestPool, 'cellPersistReal2D', real2DField) + call mpas_pool_get_dimension(haloExchTestPool, 'nCells', nCells) + call mpas_pool_get_dimension(haloExchTestPool, 'nCellsSolve', nCellsSolve) +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' test_halo_adj_exch_fields nCellsSolve:$i nCells:$i', & + intArgs=(/nCellsSolve, nCells/)) +#endif + + ! make a copy of the data before applying the adjoint halo + call mpas_pool_get_array(haloExchTestPool, 'cellPersistReal2D', real2D) + allocate(real2Dorig(size(real2D, 2), size(real2D, 1))) + real2Dorig = real2D + + ! find cells with adjoining ghost cells + call MPAS_pool_get_array(meshPool, 'cellsOnCell', cellsOnCell) + call MPAS_pool_get_array(meshPool, 'nEdgesOnCell', nEdgesOnCell) +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' halo_adj_ cellsOnCell size:$ix$i', & + intArgs=(/size(cellsOnCell,2), size(cellsOnCell, 1)/)) +#endif + + nHaloLayers = size(real2DField % sendList % halos) + exteriorCells = findExteriorCells(nCellsSolve, nCells, cellsOnCell, nEdgesOnCell, nHaloLayers) + + ! run the adjoint halo, this will update owned cells + call mpas_dmpar_exch_halo_adj_field(real2DField) + + do while ( associated(block) ) + + ! get the real2D array after calling mpas_dmpar_exch_halo_adj_field + call mpas_pool_get_array(haloExchTestPool, 'cellPersistReal2D', real2D) + + ! check the adjoint halo operation populated fields correctly + err = check_adjoint_values(nCellsSolve, real2Dorig, real2D, exteriorCells) + block => block % next + end do + end subroutine test_halo_adj_exch_fields + + !*********************************************************************** + !> \brief MPAS Test check pre & post adjoint exchange values + !> \details + !> This routine checks the pre-adjoint halo exchange values aganst + !> post-adjoint halo exhange values. + !> Interior cell's values aren't expected to change, and border cell's values are + !> expected to change. + !> Returns 0 on success, non-0 on failure. + !----------------------------------------------------------------------- + integer function check_adjoint_values(nCellsSolve, orig, adjoint, exteriorCells) + + integer, pointer, intent(in) :: nCellsSolve !< the number of local owned cells + real (kind=RKIND), dimension(:,:), intent(in) :: orig !< values of the cells before applying the adjoint exchange + real (kind=RKIND), dimension(:,:), intent(in) :: adjoint !< values of cells after applying the adjoint exchange + integer, dimension(:), intent(in) :: exteriorCells !< array indicating a cell is interior or on the edge + + integer :: i, j, nError, nInterior, nEdge + integer :: iDim1, iDim2 + + nError = 0 + iDim1 = nCellsSolve + iDim2 = size(orig, dim=1) + nInterior = 0 + nEdge = 0 + + do i = 1, iDim1 + do j = 1, iDim2 + if (exteriorCells(i) == 0) then + if (j == 1) then + nInterior = nInterior + 1 + ! interior cells shouldn't have changed + if (orig(j, i) /= adjoint(j, i)) then + call mpas_log_write(' halo changed value for interior cell at:$i:$i orig:$r new:$r', & + intArgs=(/j,i/), realArgs=(/orig(j,i), adjoint(j,i)/)) + nError = nError + 1 + end if + end if + else + if (j == 1) then + nEdge = nEdge + 1 + ! edge cells should change + if (orig(j, i) == adjoint(j, i)) then + call mpas_log_write(' halo unchanged value for edge cell at:$i:$i $r vs $r', & + intArgs=(/i,j/), realArgs=(/orig(j, i), adjoint(j, i)/)) + nError = nError + 1 + end if + end if + end if + end do + end do +#ifdef HALO_EXCH_DEBUG_VERBOSE + call mpas_log_write(' halo nInterior:$i nEdge:$i, nError:$i', & + intArgs=(/nInterior, nEdge, nError/)) +#endif + + check_adjoint_values = nError + end function check_adjoint_values end module test_core_halo_exch From d5ec94474112dc2ef163d75cc92c7a02d86c5c47 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Tue, 2 Apr 2024 20:28:20 +0000 Subject: [PATCH 003/115] Move call to halo exchange adjoint tests in test core This commit moves the call to the routine test_halo_adj_exch_fields, which tests the halo exchange adjoint code, up to the test_core_halo_exch_test routine; additionally, the log file now contains lines to identify the testing of the halo exchange adjoint code as well as the result of that testing, e.g., - Performing halo exchange adjoint tests -- Return code: 0 --- src/core_test/mpas_test_core_halo_exch.F | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/core_test/mpas_test_core_halo_exch.F b/src/core_test/mpas_test_core_halo_exch.F index 1349b8981f..1c4e2767bf 100644 --- a/src/core_test/mpas_test_core_halo_exch.F +++ b/src/core_test/mpas_test_core_halo_exch.F @@ -81,6 +81,16 @@ subroutine test_core_halo_exch_test(domain, threadErrs, err)!{{{ err = ior(err, iErr) end if + if ( threadNum == 0 ) then + call mpas_log_write(' - Performing halo exchange adjoint tests') + end if + call test_halo_adj_exch_fields(domain, threadErrs, iErr) + call mpas_threading_barrier() + if ( threadNum == 0 ) then + call mpas_log_write(' -- Return code: $i', intArgs=(/iErr/)) + err = ior(err, iErr) + end if + call mpas_timer_stop('halo exch tests') end subroutine test_core_halo_exch_test!}}} @@ -252,8 +262,6 @@ subroutine test_core_halo_exch_full_test(domain, threadErrs, err)!{{{ call test_core_halo_exch_validate_fields(domain, threadErrs, iErr) err = ior(err, iErr) - call test_halo_adj_exch_fields(domain, threadErrs, iErr) - err = ior(err, iErr) end subroutine test_core_halo_exch_full_test!}}} From d9331c61ed17c46bf3fb15e23da8adc7817e1a24 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Tue, 2 Apr 2024 20:36:54 +0000 Subject: [PATCH 004/115] Adjust whitespace in comment block for mpas_dmpar_exch_halo_adj_field2d_real --- src/framework/mpas_dmpar.F | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/framework/mpas_dmpar.F b/src/framework/mpas_dmpar.F index 10eb386cd0..c337d84685 100644 --- a/src/framework/mpas_dmpar.F +++ b/src/framework/mpas_dmpar.F @@ -6185,11 +6185,11 @@ end subroutine mpas_dmpar_exch_halo_field5d_real!}}} !> \details !> This routine handles the adjoint of halo exchange communication of an input field across all processors. !> It accumulates the values of owned point with the values of halos. It is based on mpas_dmpar_exch_halo_field2d_real. - ! - !> Note the number of halo layers impacts the number of cells which will be updated by this routine: - !> The first halo layer will update the owned 'edge' cells, where 'edge' cells are adjacent to ghost cells. - !> The second halo layer will update owned cells which are adjacent to the 'edge' cells. - !> The third halo layer will update owned cells which are adjacent to the cells updated by the seconds halo layer, etc. + !> + !> Note the number of halo layers impacts the number of cells which will be updated by this routine: + !> The first halo layer will update the owned 'edge' cells, where 'edge' cells are adjacent to ghost cells. + !> The second halo layer will update owned cells which are adjacent to the 'edge' cells. + !> The third halo layer will update owned cells which are adjacent to the cells updated by the seconds halo layer, etc. !----------------------------------------------------------------------- subroutine mpas_dmpar_exch_halo_adj_field2d_real(field, haloLayersIn)!{{{ From 65acbd5218391bd963efdff521980bcdb249f71b Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Tue, 2 Apr 2024 21:16:53 +0000 Subject: [PATCH 005/115] Update comments for halo exch adjoint tests in test_core_halo_exch module This commit updates some of the comments in code related to halo exchange adjoint testing in the test_core_halo_exch module to better align with conventional MPAS terminology. --- src/core_test/mpas_test_core_halo_exch.F | 98 ++++++++++++++++-------- 1 file changed, 68 insertions(+), 30 deletions(-) diff --git a/src/core_test/mpas_test_core_halo_exch.F b/src/core_test/mpas_test_core_halo_exch.F index 1c4e2767bf..b098fcfc6a 100644 --- a/src/core_test/mpas_test_core_halo_exch.F +++ b/src/core_test/mpas_test_core_halo_exch.F @@ -1385,24 +1385,37 @@ subroutine test_core_halo_exch_validate_fields(domain, threadErrs, err)!{{{ end subroutine test_core_halo_exch_validate_fields!}}} !*********************************************************************** - !> \brief Identify cells which are adjacent to the cells with the provided cellMask/ - !> \Author Michael Duda + !> \brief Identify cells that are adjacent to other marked cells + !> \author Michael Duda + !> \date 24 January 2024 !> \details - !> This function identifies cells which are adjacent to cells with the provided mask. - !> Such cells will be marked with with cellMask+1. - !> Only cells which have no mask are considered. + !> Given a cell mask field, cellMask, and a specified (positive) non-zero mask + !> value, sentinelValue, this routine sets the cell mask field to (sentinelValue+1) + !> for all cells that are (1) adjacent to cells with the sentinelValue mask value + !> and (2) that have an initial cellMask value of zero. + !> + !> Cell adjacency is determined by the cellsOnCell and nEdgesOnCell fields. + !> + !> This routine returns the total number of cells that were marked as being + !> adjacent to cells with the sentinelValue mask value. !----------------------------------------------------------------------- function mark_interior_cells(cellMask, sentinelValue, cellsOnCell, nEdgesOnCell) result(nCellsMarked) - !< array of masks, where a value of zero means the cell won't be updated by the halo adjoint exchange - integer, dimension(:), intent(inout) :: cellMask - integer, intent(in) :: sentinelValue !< the value to look for being adjacent to - integer, dimension(:,:), intent(in) :: cellsOnCell !< array containing adjacent cells for each cell - integer, dimension(:), intent(in) :: nEdgesOnCell !< array containing edges for each cell + ! Arguments + integer, dimension(:), intent(inout) :: cellMask !< mask field + integer, intent(in) :: sentinelValue !< value in mask field for which adjacent cells are marked + integer, dimension(:,:), intent(in) :: cellsOnCell !< indices of cell neighbors for each cell + integer, dimension(:), intent(in) :: nEdgesOnCell !< number of cell neighbors for each cell + + ! Return value + integer :: nCellsMarked + + ! Local variables + integer :: iCell, j - integer :: iCell, j, nCellsMarked nCellsMarked = 0 + do iCell = 1, size(cellMask) if (cellMask(iCell) == 0) then do j = 1, nEdgesOnCell(iCell) @@ -1418,6 +1431,7 @@ function mark_interior_cells(cellMask, sentinelValue, cellsOnCell, nEdgesOnCell) end do end if end do + #ifdef HALO_EXCH_DEBUG_VERBOSE call mpas_log_write(' mark_interior nCellsMarked:$i sentinel:$i', & intArgs=(/nCellsMarked, sentinelValue/)) @@ -1426,32 +1440,40 @@ function mark_interior_cells(cellMask, sentinelValue, cellsOnCell, nEdgesOnCell) end function mark_interior_cells !*********************************************************************** - !> \brief Identify interior and edge cells - !> \Author Michael Duda, Jim Wittig + !> \brief Identify cells in the outermost N layers of owned cells in a block + !> \author Jim Wittig, Michael Duda + !> \date 29 January 2024 !> \details - !> This function identifies cells which are on the interior, vs cells on the edge - !> (cells with neighbors which aren't in this block). - !> Returns a vector of flags corresponding to the array of cells, where a value of zero indicates - !> the cell is interior, and a value of non-zero indicates + !> This function identifies cells that are in the outermost N layers of owned + !> cells in a block, where N is the number of halo layers (nHaloLayers). The + !> function returns an array of values indicating the location of a cell. + !> In the returned array, a value of zero indicates that the cell is not in + !> the outermost N layers of owned cells, and non-zero values indicate: !> 1. the cell is a halo cell (not owned by this block) - !> 2. the cell is on an edge of this block (adjacent to a halo cell), or - !> 3. the cell is adjacent to an edge cell, or - !> 4. the cell is adjacent to a cell which is adjacent to an edge - !> This identifies cells which should be updated via the halo adjoint exchange. - !> Cells marked with a 2 should get updated via halo layer 1. - !> Cells marked with a 3 should get updated via halo layer 2, etc. + !> 2. the cell is a distance of 1 away from a halo cell (i.e., adjacent to a halo cell) + !> 3. the cell is a distance of 2 away from a halo cell (i.e., adjacent to a cell marked '2') + !> 4. the cell is a distance of 3 away from a halo cell (i.e., adjacent to a cell marked '3') + !> + !> The result of this routine may be used to determine which cells will be modified + !> by the adjoint of a halo exchange; for example: + !> - cells marked with a 2 will be updated from halo layer 1, + !> - cells marked with a 3 will be updated from halo layer 2, etc. !> !----------------------------------------------------------------------- function findExteriorCells(nCellsSolve, nCells, cellsOnCell, edgesOnCell, nHaloLayers) & result(exteriorCells) + ! Arguments integer, intent(in) :: nCellsSolve !< the number of cells in this block integer, intent(in) :: nCells !< total number of cells (cells in this block plus halo cells) integer, dimension(:,:), intent(in) :: cellsOnCell !< array with adjacent cells for each cell integer, dimension(:), intent(in) :: edgesOnCell !< array with edges for each cell integer, intent(in) :: nHaloLayers !< the number of halo layers + ! Return value integer, dimension(:), allocatable :: exteriorCells + + ! Local variables integer nInterior, nEdge, nLayers allocate(exteriorCells(nCells)) @@ -1475,22 +1497,33 @@ function findExteriorCells(nCellsSolve, nCells, cellsOnCell, edgesOnCell, nHaloL #ifdef HALO_EXCH_DEBUG_VERBOSE call mpas_log_write(' halo nInterior:$i nEdge:$i', intArgs=(/nInterior, nEdge/)) #endif + end function findExteriorCells !*********************************************************************** - !> \brief MPAS Test Core halo adjoint exchange + !> \brief MPAS Test Core halo adjoint exchange + !> \author Jim Wittig + !> \date 29 January 2024 !> \details - !> This routine applies the halo adjoint function to a 2D array and verifies - !> interior cell's values don't change, and border cell's values are modified. - !> It assumes a halo exchange has already been applied. - !> Returns 0 on success, non-0 on failure. + !> This routine applies the adjoint of a halo exchangeto a 2-d array and + !> verifies that (1) the values for cells more than a distance N away from + !> a halo cell do not change (where N is the number of halo layers), and + !> (2) cells within a distance of N from a halo cell are updated. + !> + !> This routine assumes that a halo exchange has already been applied to + !> the cellPersistReal2D field before this routine has been called. + !> + !> Upon success, a value of 0 is returned; otherwise, a non-zero status + !> code is returned. !----------------------------------------------------------------------- subroutine test_halo_adj_exch_fields(domain, threadErrs, err) + ! Arguments type (domain_type), intent(inout) :: domain integer, dimension(:), intent(out) :: threadErrs integer, intent(out) :: err + ! Local variables type (block_type), pointer :: block type (mpas_pool_type), pointer :: meshPool, haloExchTestPool type (field2DReal), pointer :: real2DField @@ -1503,6 +1536,7 @@ subroutine test_halo_adj_exch_fields(domain, threadErrs, err) integer :: iCell, iEdgeOnCell, nInterior, nEdge, nHaloLayers err = 0 + ! get a variable to call the adjoint halo on block => domain % blocklist @@ -1544,15 +1578,18 @@ subroutine test_halo_adj_exch_fields(domain, threadErrs, err) err = check_adjoint_values(nCellsSolve, real2Dorig, real2D, exteriorCells) block => block % next end do + end subroutine test_halo_adj_exch_fields !*********************************************************************** - !> \brief MPAS Test check pre & post adjoint exchange values + !> \brief MPAS Test check pre and post adjoint exchange values + !> \author Jim Wittig + !> \date 29 January 2024 !> \details !> This routine checks the pre-adjoint halo exchange values aganst !> post-adjoint halo exhange values. !> Interior cell's values aren't expected to change, and border cell's values are - !> expected to change. + !> expected to change. !> Returns 0 on success, non-0 on failure. !----------------------------------------------------------------------- integer function check_adjoint_values(nCellsSolve, orig, adjoint, exteriorCells) @@ -1602,6 +1639,7 @@ integer function check_adjoint_values(nCellsSolve, orig, adjoint, exteriorCells) #endif check_adjoint_values = nError + end function check_adjoint_values end module test_core_halo_exch From d885ef159c4e4e837ca0fa0815263bb63e853db4 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Tue, 30 Apr 2024 09:04:55 -0600 Subject: [PATCH 006/115] * Made a couple of corrections in subroutines advance_scalars and atm_advance_scalars_mono_work so that they can be called with state arrays different than "scalars": -> in subroutine advance_scalars, modified the line: call mpas_pool_get_dimension(state, 'num_scalars', num_scalars) to call mpas_pool_get_dimension(state, 'num_'//trim(field_name), num_scalars) to expand the definition of num_scalars to state arrays different than "scalars". -> in subroutine atm_advance_scalars_mono_work, modified the line: call exchange_halo_group(block % domain, 'dynamics:scalars_old') to call exchange_halo_group(block % domain, 'dynamics:'//trim(field_name)//'_old') so that halo exchange can be applied to state arrays different than "scalars". --- src/core_atmosphere/dynamics/mpas_atm_time_integration.F | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index a68b3e5a19..9098f4e658 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -1352,7 +1352,7 @@ subroutine advance_scalars(field_name, domain, rk_step, rk_timestep, config_mono call mpas_pool_get_dimension(mesh, 'nCells', nCells) call mpas_pool_get_dimension(mesh, 'nEdges', nEdges) call mpas_pool_get_dimension(mesh, 'nVertLevels', nVertLevels) - call mpas_pool_get_dimension(state, 'num_scalars', num_scalars) + call mpas_pool_get_dimension(state, 'num_'//trim(field_name), num_scalars) call mpas_pool_get_dimension(block % dimensions, 'nThreads', nThreads) @@ -3234,7 +3234,7 @@ subroutine atm_advance_scalars_mono(field_name, block, tend, state, diag, mesh, call mpas_allocate_scratch_field(scale) call mpas_pool_get_array(halo_scratch, 'scale', scale_arr) - call atm_advance_scalars_mono_work(block, state, nCells, nEdges, num_scalars, dt, & + call atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdges, num_scalars, dt, & cellStart, cellEnd, edgeStart, edgeEnd, & cellSolveStart, cellSolveEnd, & coef_3rd_order, nCellsSolve, uhAvg, wwAvg, scalar_tend, rho_zz_old, & @@ -3282,7 +3282,7 @@ end subroutine atm_advance_scalars_mono !> as used in the RK3 scheme as described in Wang et al MWR 2009 ! !----------------------------------------------------------------------- - subroutine atm_advance_scalars_mono_work(block, state, nCells, nEdges, num_scalars, dt, & + subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdges, num_scalars, dt, & cellStart, cellEnd, edgeStart, edgeEnd, & cellSolveStart, cellSolveEnd, & coef_3rd_order, nCellsSolve, uhAvg, wwAvg, scalar_tend, rho_zz_old, & @@ -3297,6 +3297,7 @@ subroutine atm_advance_scalars_mono_work(block, state, nCells, nEdges, num_scala implicit none + character(len=*), intent(in) :: field_name type (block_type), intent(inout), target :: block type (mpas_pool_type), intent(inout) :: state integer, intent(in) :: nCells ! for allocating stack variables @@ -3401,7 +3402,7 @@ subroutine atm_advance_scalars_mono_work(block, state, nCells, nEdges, num_scala !$OMP BARRIER !$OMP MASTER - call exchange_halo_group(block % domain, 'dynamics:scalars_old') + call exchange_halo_group(block % domain, 'dynamics:'//trim(field_name)//'_old') !$OMP END MASTER !$OMP BARRIER From 60facc5d8b79a6e00e3e4c0bbb05f6fe339b4cf2 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 1 May 2024 18:59:52 -0600 Subject: [PATCH 007/115] Add routine for reporting compile- and run-time settings to the log file The new mpas_framework_report_settings routine writes information about compile- time options and run-time settings to the log file. A call to mpas_framework_report_settings has been added to the test core's test_setup_log routine, so that information like the following is written to the log file for the test core: Output from 'git describe --dirty': v8.1.0-dirty Compile-time options: Build target: intel OpenMP support: no OpenACC support: no Default real precision: single Compiler flags: optimize I/O layer: SMIOL Run-time settings: MPI task count: 32 --- src/core_test/mpas_test_core_interface.F | 3 + src/framework/mpas_framework.F | 74 ++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/src/core_test/mpas_test_core_interface.F b/src/core_test/mpas_test_core_interface.F index 3988f7288e..e600824bc4 100644 --- a/src/core_test/mpas_test_core_interface.F +++ b/src/core_test/mpas_test_core_interface.F @@ -227,6 +227,7 @@ function test_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ use mpas_derived_types use mpas_log + use mpas_framework, only : mpas_framework_report_settings implicit none @@ -252,6 +253,8 @@ function test_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ call mpas_log_open(err=local_err) iErr = ior(iErr, local_err) + call mpas_framework_report_settings(domain) + end function test_setup_log!}}} diff --git a/src/framework/mpas_framework.F b/src/framework/mpas_framework.F index 68445d186c..74d94c3d50 100644 --- a/src/framework/mpas_framework.F +++ b/src/framework/mpas_framework.F @@ -184,4 +184,78 @@ subroutine mpas_framework_finalize(dminfo, domain, io_system)!{{{ end subroutine mpas_framework_finalize!}}} + +!----------------------------------------------------------------------- +! routine mpas_framework_report_settings +! +!> \brief Report information about compile- and run-time settings to the log file +!> \author Michael Duda +!> \date 1 May 2024 +!> \details +!> This routine writes information about compile-time and run-time settings for +!> an MPAS core to the log file. +! +!----------------------------------------------------------------------- + subroutine mpas_framework_report_settings(domain) + +#ifdef MPAS_OPENMP + use mpas_threading, only : mpas_threading_get_num_threads +#endif + + implicit none + + type (domain_type), pointer :: domain + + + call mpas_log_write('') + call mpas_log_write('Output from ''git describe --dirty'': '//trim(domain % core % git_version)) + + call mpas_log_write('') + call mpas_log_write('Compile-time options:') + call mpas_log_write(' Build target: '//trim(domain % core % build_target)) + call mpas_log_write(' OpenMP support: ' // & +#ifdef MPAS_OPENMP + 'yes') +#else + 'no') +#endif + call mpas_log_write(' OpenACC support: ' // & +#ifdef MPAS_OPENACC + 'yes') +#else + 'no') +#endif + call mpas_log_write(' Default real precision: ' // & +#ifdef SINGLE_PRECISION + 'single') +#else + 'double') +#endif + call mpas_log_write(' Compiler flags: ' // & +#ifdef MPAS_DEBUG + 'debug') +#else + 'optimize') +#endif + call mpas_log_write(' I/O layer: ' // & +#ifdef MPAS_PIO_SUPPORT +#ifdef USE_PIO2 + 'PIO 2.x') +#else + 'PIO 1.x') +#endif +#else + 'SMIOL') +#endif + call mpas_log_write('') + + call mpas_log_write('Run-time settings:') + call mpas_log_write(' MPI task count: $i', intArgs=[domain % dminfo % nprocs]) +#ifdef MPAS_OPENMP + call mpas_log_write(' OpenMP max threads: $i', intArgs=[mpas_threading_get_max_threads()]) +#endif + call mpas_log_write('') + + end subroutine mpas_framework_report_settings + end module mpas_framework From 4606b1856d99115d9d29a6c2d4a724c827821cd6 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 1 May 2024 19:04:27 -0600 Subject: [PATCH 008/115] Use mpas_framework_report_settings in atm_setup_log for atmosphere core This commit replaces code in the atmosphere core's atm_setup_log routine for writing compile-time options and run-time settings with a single call to the framework routine mpas_framework_report_settings. --- src/core_atmosphere/mpas_atm_core_interface.F | 51 +------------------ 1 file changed, 2 insertions(+), 49 deletions(-) diff --git a/src/core_atmosphere/mpas_atm_core_interface.F b/src/core_atmosphere/mpas_atm_core_interface.F index af7a9d7ee3..c8db24ceac 100644 --- a/src/core_atmosphere/mpas_atm_core_interface.F +++ b/src/core_atmosphere/mpas_atm_core_interface.F @@ -262,9 +262,7 @@ function atm_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ use mpas_derived_types, only : mpas_log_type, domain_type use mpas_log, only : mpas_log_init, mpas_log_open -#ifdef MPAS_OPENMP - use mpas_threading, only : mpas_threading_get_num_threads -#endif + use mpas_framework, only : mpas_framework_report_settings implicit none @@ -293,53 +291,8 @@ function atm_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ call mpas_log_write('') call mpas_log_write('MPAS-Atmosphere Version '//trim(domain % core % modelVersion)) call mpas_log_write('') - call mpas_log_write('') - call mpas_log_write('Output from ''git describe --dirty'': '//trim(domain % core % git_version)) - call mpas_log_write('') - call mpas_log_write('Compile-time options:') - call mpas_log_write(' Build target: '//trim(domain % core % build_target)) - call mpas_log_write(' OpenMP support: ' // & -#ifdef MPAS_OPENMP - 'yes') -#else - 'no') -#endif - call mpas_log_write(' OpenACC support: ' // & -#ifdef MPAS_OPENACC - 'yes') -#else - 'no') -#endif - call mpas_log_write(' Default real precision: ' // & -#ifdef SINGLE_PRECISION - 'single') -#else - 'double') -#endif - call mpas_log_write(' Compiler flags: ' // & -#ifdef MPAS_DEBUG - 'debug') -#else - 'optimize') -#endif - call mpas_log_write(' I/O layer: ' // & -#ifdef MPAS_PIO_SUPPORT -#ifdef USE_PIO2 - 'PIO 2.x') -#else - 'PIO 1.x') -#endif -#else - 'SMIOL') -#endif - call mpas_log_write('') - call mpas_log_write('Run-time settings:') - call mpas_log_write(' MPI task count: $i', intArgs=[domain % dminfo % nprocs]) -#ifdef MPAS_OPENMP - call mpas_log_write(' OpenMP max threads: $i', intArgs=[mpas_threading_get_max_threads()]) -#endif - call mpas_log_write('') + call mpas_framework_report_settings(domain) end function atm_setup_log!}}} From 3a4becef0694b94af31ff285c27b4ca18feabaf9 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 1 May 2024 19:05:59 -0600 Subject: [PATCH 009/115] Use mpas_framework_report_settings in init_atm_setup_log for init_atmosphere core This commit replaces code in the init_atmosphere core's init_atm_setup_log routine for writing compile-time options and run-time settings with a single call to the framework routine mpas_framework_report_settings. --- .../mpas_init_atm_core_interface.F | 51 +------------------ 1 file changed, 2 insertions(+), 49 deletions(-) diff --git a/src/core_init_atmosphere/mpas_init_atm_core_interface.F b/src/core_init_atmosphere/mpas_init_atm_core_interface.F index 6fca9a737b..07b436d9b9 100644 --- a/src/core_init_atmosphere/mpas_init_atm_core_interface.F +++ b/src/core_init_atmosphere/mpas_init_atm_core_interface.F @@ -325,9 +325,7 @@ function init_atm_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ use mpas_derived_types, only : mpas_log_type, domain_type use mpas_log, only : mpas_log_init, mpas_log_open -#ifdef MPAS_OPENMP - use mpas_threading, only : mpas_threading_get_num_threads -#endif + use mpas_framework, only : mpas_framework_report_settings implicit none @@ -356,53 +354,8 @@ function init_atm_setup_log(logInfo, domain, unitNumbers) result(iErr)!{{{ call mpas_log_write('') call mpas_log_write('MPAS Init-Atmosphere Version '//trim(domain % core % modelVersion)) call mpas_log_write('') - call mpas_log_write('') - call mpas_log_write('Output from ''git describe --dirty'': '//trim(domain % core % git_version)) - call mpas_log_write('') - call mpas_log_write('Compile-time options:') - call mpas_log_write(' Build target: '//trim(domain % core % build_target)) - call mpas_log_write(' OpenMP support: ' // & -#ifdef MPAS_OPENMP - 'yes') -#else - 'no') -#endif - call mpas_log_write(' OpenACC support: ' // & -#ifdef MPAS_OPENACC - 'yes') -#else - 'no') -#endif - call mpas_log_write(' Default real precision: ' // & -#ifdef SINGLE_PRECISION - 'single') -#else - 'double') -#endif - call mpas_log_write(' Compiler flags: ' // & -#ifdef MPAS_DEBUG - 'debug') -#else - 'optimize') -#endif - call mpas_log_write(' I/O layer: ' // & -#ifdef MPAS_PIO_SUPPORT -#ifdef USE_PIO2 - 'PIO 2.x') -#else - 'PIO 1.x') -#endif -#else - 'SMIOL') -#endif - call mpas_log_write('') - call mpas_log_write('Run-time settings:') - call mpas_log_write(' MPI task count: $i', intArgs=[domain % dminfo % nprocs]) -#ifdef MPAS_OPENMP - call mpas_log_write(' OpenMP max threads: $i', intArgs=[mpas_threading_get_max_threads()]) -#endif - call mpas_log_write('') + call mpas_framework_report_settings(domain) end function init_atm_setup_log!}}} From 2acc92a5cfe9d2465918ae0465d6980e6e67ac10 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Fri, 3 May 2024 15:56:54 -0600 Subject: [PATCH 010/115] Include OpenACC device info in mpas_framework_report_settings output If MPAS is compiled with OPENACC=true, the mpas_framework_report_settings routine now calls a new private routine, report_acc_devices, in mpas_framework to report information about OpenACC devices to the log. The report_acc_devices routine uses the OpenACC runtime library to inquire about the number of available devices, the device number for the calling MPI task, and info about the device type and driver. As an example from Derecho with the NVHPC 24.3 compilers, the following information is reported in the log file: OpenACC configuration: Number of visible devices: 1 Device # for this MPI task: 0 Device vendor: NVIDIA Device name: NVIDIA A100-SXM4-40GB Device driver version: 12020 If MPAS is not compiled with OPENACC=true, then the report_acc_devices routine, and the call to it from mpas_framework_report_settings, are pre-processed out. --- src/framework/mpas_framework.F | 59 ++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/src/framework/mpas_framework.F b/src/framework/mpas_framework.F index 74d94c3d50..7986383656 100644 --- a/src/framework/mpas_framework.F +++ b/src/framework/mpas_framework.F @@ -27,6 +27,8 @@ module mpas_framework use mpas_io_units use mpas_block_decomp + private :: report_acc_devices + contains @@ -256,6 +258,63 @@ subroutine mpas_framework_report_settings(domain) #endif call mpas_log_write('') +#ifdef MPAS_OPENACC + call report_acc_devices() +#endif + end subroutine mpas_framework_report_settings + +#ifdef MPAS_OPENACC + !*********************************************************************** + ! + ! function report_acc_devices + ! + !> \brief Queries OpenACC devices and reports device info to log file + !> \author Michael G. Duda + !> \date 28 March 2024 + !> \details + !> This routine makes use of the OpenACC runtime library to obtain + !> information about how many and which kind of OpenACC devices are + !> available to the current MPI rank. + !> + !> NB: This routine is only compiled and only called if OPENACC=true. + ! + !----------------------------------------------------------------------- + subroutine report_acc_devices() + + use mpas_c_interfacing, only : mpas_sanitize_string + use openacc, only : acc_get_property_string, acc_get_property, acc_get_num_devices, acc_get_device_num, & + acc_get_device_type, acc_device_kind, acc_device_property, acc_property_vendor, & + acc_property_name, acc_property_driver + + implicit none + + integer(kind=acc_device_kind) :: device + character(len=StrKIND) :: device_vendor, device_name, driver_vers + integer :: ndevices, device_num + + + device = acc_get_device_type() + ndevices = acc_get_num_devices(device) + device_num = acc_get_device_num(device_num) + call acc_get_property_string(device_num, device, acc_property_vendor, device_vendor) + call acc_get_property_string(device_num, device, acc_property_name, device_name) + call acc_get_property_string(device_num, device, acc_property_driver, driver_vers) + + call mpas_sanitize_string(device_vendor) + call mpas_sanitize_string(device_name) + call mpas_sanitize_string(driver_vers) + + call mpas_log_write('OpenACC configuration:') + call mpas_log_write(' Number of visible devices: $i', intArgs=[ndevices]) + call mpas_log_write(' Device # for this MPI task: $i', intArgs=[device_num]) + call mpas_log_write(' Device vendor: '//trim(device_vendor)) + call mpas_log_write(' Device name: '//trim(device_name)) + call mpas_log_write(' Device driver version: '//trim(driver_vers)) + call mpas_log_write('') + + end subroutine report_acc_devices +#endif + end module mpas_framework From df25b940cc6cf814e822db0ca004826c300cfa52 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Fri, 3 May 2024 16:36:10 -0600 Subject: [PATCH 011/115] Add "-check all" to LDFLAGS_DEBUG for 'intel' build target Regarding the '-check all' option, the Intel 2024.1 manual states: Caution Files compiled with option check all should also be linked with this same option, or the link step may fail. --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 10e5d30beb..3c5ed0e1fc 100644 --- a/Makefile +++ b/Makefile @@ -670,7 +670,7 @@ intel: # BUILDTARGET Intel oneAPI Fortran, C, and C++ compiler suite "FFLAGS_DEBUG = -g -convert big_endian -free -check all -fpe0 -traceback" \ "CFLAGS_DEBUG = -g -traceback" \ "CXXFLAGS_DEBUG = -g -traceback" \ - "LDFLAGS_DEBUG = -g -fpe0 -traceback" \ + "LDFLAGS_DEBUG = -g -check all -fpe0 -traceback" \ "FFLAGS_OMP = -qopenmp" \ "CFLAGS_OMP = -qopenmp" \ "PICFLAG = -fpic" \ From e4a4c0a5015b6118ce52e128a94af422161f7696 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Thu, 16 May 2024 14:36:08 -0600 Subject: [PATCH 012/115] Move 21 additional fields into the "invariant" stream in the atmosphere core This commit moves 21 additional time-invariant fields from the "input" and "restart" streams into the "invariant" stream for the atmosphere core. These additional fields are time-invariant terrestrial fields that are used by various physics parameterization schemes, and as they were in the "input" and "restart" streams, they are conditionally included in the "invariant" stream with the DO_PHYSICS preprocessing macro. Specifically, the 21 fields now included in the "invariant" stream are: isltyp ivgtyp mminlu isice_lu iswater_lu landmask shdmin shdmax snoalb albedo12m greenfrac var2d con oa1 oa2 oa3 oa4 ol1 ol2 ol3 ol4 --- src/core_atmosphere/Registry.xml | 67 ++++++++++++-------------------- 1 file changed, 24 insertions(+), 43 deletions(-) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 4dbab8d9dc..a412b7bc79 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -485,11 +485,34 @@ + #ifdef MPAS_CAM_DYCORE #endif - +#ifdef DO_PHYSICS + + + + + + + + + + + + + + + + + + + + + +#endif @@ -517,17 +540,6 @@ #ifdef DO_PHYSICS - - - - - - - - - - - @@ -548,16 +560,6 @@ - - - - - - - - - - #endif @@ -793,17 +795,6 @@ - - - - - - - - - - - @@ -820,16 +811,6 @@ - - - - - - - - - - From f9e2c6aea1cf0f9de836f019acc5324d09e74474 Mon Sep 17 00:00:00 2001 From: Jim Wittig Date: Thu, 16 May 2024 15:32:53 -0600 Subject: [PATCH 013/115] Add stream_function and velocity_potential fields to the diag struct. --- src/core_atmosphere/Registry.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 4dbab8d9dc..f075bcdb87 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -1605,6 +1605,14 @@ + + + + From 308b146f21ba18d07d07b5c8b9b4a7e54c5cf878 Mon Sep 17 00:00:00 2001 From: Jim Wittig Date: Tue, 21 May 2024 17:11:07 -0600 Subject: [PATCH 014/115] Add da_state input/output stream. This stream is only used by MPAS-JEDI. This stream is associated with the "jedi_da" package, and so it will only be active if config_jedi_da = true. --- src/core_atmosphere/Registry.xml | 67 ++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 4dbab8d9dc..fa31511d37 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -1135,6 +1135,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From bee30ccde739a2e06a1011b68ed416a5cc606026 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Thu, 2 May 2024 10:34:31 -0600 Subject: [PATCH 015/115] * In ./src/core_atmosphere/physics/physics_mmm, changes all the file extension .F to .F90. Modified Makefile accordingly. --- src/core_atmosphere/physics/physics_mmm/Makefile | 6 +++--- .../physics/physics_mmm/{bl_gwdo.F => bl_gwdo.F90} | 0 .../physics/physics_mmm/{bl_mynn.F => bl_mynn.F90} | 0 .../{bl_mynn_subroutines.F => bl_mynn_subroutines.F90} | 0 .../physics/physics_mmm/{bl_ysu.F => bl_ysu.F90} | 0 .../physics/physics_mmm/{cu_ntiedtke.F => cu_ntiedtke.F90} | 0 .../physics_mmm/{module_libmassv.F => module_libmassv.F90} | 0 .../physics/physics_mmm/{mp_radar.F => mp_radar.F90} | 0 .../physics/physics_mmm/{mp_wsm6.F => mp_wsm6.F90} | 0 .../{mp_wsm6_effectRad.F => mp_wsm6_effectRad.F90} | 0 .../physics/physics_mmm/{mynn_shared.F => mynn_shared.F90} | 0 .../physics/physics_mmm/{sf_mynn.F => sf_mynn.F90} | 0 .../physics_mmm/{sf_sfclayrev.F => sf_sfclayrev.F90} | 0 13 files changed, 3 insertions(+), 3 deletions(-) rename src/core_atmosphere/physics/physics_mmm/{bl_gwdo.F => bl_gwdo.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{bl_mynn.F => bl_mynn.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{bl_mynn_subroutines.F => bl_mynn_subroutines.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{bl_ysu.F => bl_ysu.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{cu_ntiedtke.F => cu_ntiedtke.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{module_libmassv.F => module_libmassv.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{mp_radar.F => mp_radar.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{mp_wsm6.F => mp_wsm6.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{mp_wsm6_effectRad.F => mp_wsm6_effectRad.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{mynn_shared.F => mynn_shared.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{sf_mynn.F => sf_mynn.F90} (100%) rename src/core_atmosphere/physics/physics_mmm/{sf_sfclayrev.F => sf_sfclayrev.F90} (100%) diff --git a/src/core_atmosphere/physics/physics_mmm/Makefile b/src/core_atmosphere/physics/physics_mmm/Makefile index f02fb955a2..dcd1b65715 100644 --- a/src/core_atmosphere/physics/physics_mmm/Makefile +++ b/src/core_atmosphere/physics/physics_mmm/Makefile @@ -1,4 +1,4 @@ -.SUFFIXES: .F .o +.SUFFIXES: .F90 .o all: dummy physics_mmm @@ -45,10 +45,10 @@ clean: @# This removes them during the clean process $(RM) *.i -.F.o: +.F90.o: ifeq "$(GEN_F90)" "true" $(CPP) $(CPPFLAGS) $(COREDEF) $(CPPINCLUDES) $< > $*.f90 $(FC) $(FFLAGS) -c $*.f90 $(FCINCLUDES) -I.. -I../../../framework -I../../../external/esmf_time_f90 else - $(FC) $(CPPFLAGS) $(COREDEF) $(FFLAGS) -c $*.F $(CPPINCLUDES) $(FCINCLUDES) -I.. -I../../../framework -I../../../external/esmf_time_f90 + $(FC) $(CPPFLAGS) $(COREDEF) $(FFLAGS) -c $*.F90 $(CPPINCLUDES) $(FCINCLUDES) -I.. -I../../../framework -I../../../external/esmf_time_f90 endif diff --git a/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F b/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/bl_gwdo.F rename to src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/bl_mynn.F b/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/bl_mynn.F rename to src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F b/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F rename to src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/bl_ysu.F b/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/bl_ysu.F rename to src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F rename to src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/module_libmassv.F b/src/core_atmosphere/physics/physics_mmm/module_libmassv.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/module_libmassv.F rename to src/core_atmosphere/physics/physics_mmm/module_libmassv.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/mp_radar.F b/src/core_atmosphere/physics/physics_mmm/mp_radar.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/mp_radar.F rename to src/core_atmosphere/physics/physics_mmm/mp_radar.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F b/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/mp_wsm6.F rename to src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F b/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F rename to src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/mynn_shared.F b/src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/mynn_shared.F rename to src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/sf_mynn.F b/src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/sf_mynn.F rename to src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 diff --git a/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F b/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F rename to src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 From a6d3d9683748d4509a1a339d1aed1280919232d8 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Thu, 2 May 2024 13:16:39 -0600 Subject: [PATCH 016/115] * In ./src/core_atmosphere/physics/physics_mmm, updated bl_gwdo.F90 with additional CCPP compliance requirements. --- .../physics/physics_mmm/bl_gwdo.F90 | 146 ++++++++---------- 1 file changed, 68 insertions(+), 78 deletions(-) diff --git a/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 b/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 index dfb337091c..0bdf77297b 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 @@ -1,17 +1,57 @@ -module bl_gwdo -use ccpp_kinds,only: kind_phys -!=============================================================================== - IMPLICIT NONE - PRIVATE - PUBLIC :: bl_gwdo_run - PUBLIC :: bl_gwdo_init - PUBLIC :: bl_gwdo_final - PUBLIC :: bl_gwdo_timestep_init - PUBLIC :: bl_gwdo_timestep_final +!================================================================================================================= + module bl_gwdo + use ccpp_kinds,only: kind_phys -contains -!------------------------------------------------------------------------------- -!------------------------------------------------------------------------------- + implicit none + private + public:: bl_gwdo_run, & + bl_gwdo_init, & + bl_gwdo_finalize + + + contains + + +!================================================================================================================= +!>\section arg_table_bl_gwdo_init +!!\html\include bl_gwdo_init.html +!! + subroutine bl_gwdo_init(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!----------------------------------------------------------------------------------------------------------------- + + errmsg = 'bl_gwdo_init OK' + errflg = 0 + + end subroutine bl_gwdo_init + +!================================================================================================================= +!>\section arg_table_bl_gwdo_finalize +!!\html\include bl_gwdo_finalize.html +!! + subroutine bl_gwdo_finalize(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!----------------------------------------------------------------------------------------------------------------- + + errmsg = 'bl_gwdo_finalize OK' + errflg = 0 + + end subroutine bl_gwdo_finalize + +!================================================================================================================= +!>\section arg_table_bl_gwdo_run +!!\html\include bl_gwdo_run.html +!! subroutine bl_gwdo_run(sina, cosa, & rublten,rvblten, & dtaux3d,dtauy3d, & @@ -75,25 +115,24 @@ subroutine bl_gwdo_run(sina, cosa, & ! dusfc, dvsfc - gw stress ! !------------------------------------------------------------------------------- - use ccpp_kinds, only: kind_phys implicit none ! integer, parameter :: kts = 1 integer , intent(in ) :: its, ite, kte, kme real(kind=kind_phys) , intent(in ) :: g_, pi_, rd_, rv_, fv_,& cp_, deltim - real(kind=kind_phys), dimension(its:ite) , intent(in ) :: dxmeter - real(kind=kind_phys), dimension(its:ite,kts:kte) , intent(inout) :: rublten, rvblten - real(kind=kind_phys), dimension(its:ite,kts:kte) , intent( out) :: dtaux3d, dtauy3d - real(kind=kind_phys), dimension(its:ite) , intent( out) :: dusfcg, dvsfcg - real(kind=kind_phys), dimension(its:ite) , intent(in ) :: sina, cosa - real(kind=kind_phys), dimension(its:ite,kts:kte) , intent(in ) :: uproj, vproj - real(kind=kind_phys), dimension(its:ite,kts:kte) , intent(in ) :: t1, q1, prslk, zl -! - real(kind=kind_phys), dimension(its:ite,kts:kte) , intent(in ) :: prsl - real(kind=kind_phys), dimension(its:ite,kts:kme) , intent(in ) :: prsi -! - real(kind=kind_phys), dimension(its:ite) , intent(in ) :: var, oc1, & + real(kind=kind_phys), dimension(its:) , intent(in ) :: dxmeter + real(kind=kind_phys), dimension(its:,:) , intent(inout) :: rublten, rvblten + real(kind=kind_phys), dimension(its:,:) , intent( out) :: dtaux3d, dtauy3d + real(kind=kind_phys), dimension(its:) , intent( out) :: dusfcg, dvsfcg + real(kind=kind_phys), dimension(its:) , intent(in ) :: sina, cosa + real(kind=kind_phys), dimension(its:,:) , intent(in ) :: uproj, vproj + real(kind=kind_phys), dimension(its:,:) , intent(in ) :: t1, q1, prslk, zl +! + real(kind=kind_phys), dimension(its:,:) , intent(in ) :: prsl + real(kind=kind_phys), dimension(its:,:) , intent(in ) :: prsi +! + real(kind=kind_phys), dimension(its:) , intent(in ) :: var, oc1, & oa2d1, oa2d2, oa2d3, oa2d4, & ol2d1, ol2d2, ol2d3, ol2d4 character(len=*) , intent( out) :: errmsg @@ -603,57 +642,8 @@ subroutine bl_gwdo_run(sina, cosa, & return end subroutine bl_gwdo_run -!------------------------------------------------------------------------------- - subroutine bl_gwdo_init (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_gwdo_init - -!------------------------------------------------------------------------------- - subroutine bl_gwdo_final (errmsg, errflg) +!================================================================================================================= + end module bl_gwdo +!================================================================================================================= - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_gwdo_final - -!------------------------------------------------------------------------------- - subroutine bl_gwdo_timestep_init (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_gwdo_timestep_init - -!------------------------------------------------------------------------------- - subroutine bl_gwdo_timestep_final (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_gwdo_timestep_final - -!------------------------------------------------------------------------------- -end module bl_gwdo From e46c9e9c88d24b5dc4d9b62706728b3a4b20304a Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Thu, 2 May 2024 14:13:37 -0600 Subject: [PATCH 017/115] * In ./src/core_atmosphere/physics/physics_mmm, updated bl_ysu.F90 with additional CCPP compliance requirements. Modified ./src/core_atmosphere/physics/physics_wrf/module_bl_ysu.F to accomodate changes in ./physics_mmm/bl_ysu.F90. --- .../physics/physics_mmm/bl_ysu.F90 | 172 ++++++++---------- .../physics/physics_wrf/bl_mynn_post.F | 3 + .../physics/physics_wrf/module_bl_ysu.F | 13 +- 3 files changed, 93 insertions(+), 95 deletions(-) diff --git a/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 b/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 index 601c232cb9..0a6d2af71d 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 @@ -5,23 +5,60 @@ module bl_ysu implicit none private - public:: bl_ysu_run , & - bl_ysu_init , & - bl_ysu_final , & - bl_ysu_timestep_init, & - bl_ysu_timestep_final + public:: bl_ysu_run, & + bl_ysu_init, & + bl_ysu_finalize contains !================================================================================================================= +!>\section arg_table_bl_ysu_init +!!\html\include bl_ysu_init.html +!! + subroutine bl_ysu_init(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!----------------------------------------------------------------------------------------------------------------- + + errmsg = 'bl_ysu_init OK' + errflg = 0 + + end subroutine bl_ysu_init + +!================================================================================================================= +!>\section arg_table_bl_ysu_finalize +!!\html\include bl_ysu_finalize.html +!! + subroutine bl_ysu_finalize(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!----------------------------------------------------------------------------------------------------------------- + + errmsg = 'bl_ysu_finalize OK' + errflg = 0 + + end subroutine bl_ysu_finalize + +!================================================================================================================= +!>\section arg_table_bl_ysu_run +!!\html\include bl_ysu_run.html +!! subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & f_qc,f_qi, & utnp,vtnp,ttnp,qvtnp,qctnp,qitnp,qmixtnp, & cp,g,rovcp,rd,rovg,ep1,ep2,karman,xlv,rv, & dz8w2d,psfcpa, & - znt,ust,hpbl,psim,psih, & + znt,ust,hpbl,dusfc,dvsfc,dtsfc,dqsfc,psim,psih, & xland,hfx,qfx,wspd,br, & dt,kpbl1d, & exch_hx,exch_mx, & @@ -119,7 +156,7 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & ! integer, intent(in ) :: its,ite,kte,kme - integer, intent(in) :: ysu_topdown_pblmix + logical, intent(in) :: ysu_topdown_pblmix ! integer, intent(in) :: nmix ! @@ -129,20 +166,20 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & ! logical, intent(in ) :: f_qc, f_qi ! - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(in) :: dz8w2d, & pi2d ! - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(in ) :: tx, & qvx, & qcx, & qix ! - real(kind=kind_phys), dimension( its:ite, kts:kte, nmix ) , & + real(kind=kind_phys), dimension( its:,:,: ) , & intent(in ) :: qmix ! - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(out ) :: utnp, & vtnp, & ttnp, & @@ -150,46 +187,52 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & qctnp, & qitnp ! - real(kind=kind_phys), dimension( its:ite, kts:kte, nmix ) , & + real(kind=kind_phys), dimension( its:,:,: ) , & intent(out ) :: qmixtnp ! - real(kind=kind_phys), dimension( its:ite, kms:kme ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(in ) :: p2di ! - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(in ) :: p2d ! - real(kind=kind_phys), dimension( its:ite ) , & + real(kind=kind_phys), dimension( its: ) , & intent(out ) :: hpbl ! - real(kind=kind_phys), dimension( its:ite ) , & + real(kind=kind_phys), dimension( its: ) , & + intent(out ), optional :: dusfc, & + dvsfc, & + dtsfc, & + dqsfc +! + real(kind=kind_phys), dimension( its: ) , & intent(in ) :: ust, & znt - real(kind=kind_phys), dimension( its:ite ) , & + real(kind=kind_phys), dimension( its: ) , & intent(in ) :: xland, & hfx, & qfx ! - real(kind=kind_phys), dimension( its:ite ), intent(in ) :: wspd - real(kind=kind_phys), dimension( its:ite ), intent(in ) :: br + real(kind=kind_phys), dimension( its: ), intent(in ) :: wspd + real(kind=kind_phys), dimension( its: ), intent(in ) :: br ! - real(kind=kind_phys), dimension( its:ite ), intent(in ) :: psim, & + real(kind=kind_phys), dimension( its: ), intent(in ) :: psim, & psih ! - real(kind=kind_phys), dimension( its:ite ), intent(in ) :: psfcpa - integer, dimension( its:ite ), intent(out ) :: kpbl1d + real(kind=kind_phys), dimension( its: ), intent(in ) :: psfcpa + integer, dimension( its: ), intent(out ) :: kpbl1d ! - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & intent(in ) :: ux, & vx, & rthraten - real(kind=kind_phys), dimension( its:ite ) , & + real(kind=kind_phys), dimension( its: ) , & optional , & intent(in ) :: ctopo, & ctopo2 ! logical, intent(in ) :: flag_bep - real(kind=kind_phys), dimension( its:ite, kts:kte ) , & + real(kind=kind_phys), dimension( its:,: ) , & optional , & intent(in ) :: a_u, & a_v, & @@ -205,7 +248,7 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & vlk, & dlu, & dlg - real(kind=kind_phys), dimension( its:ite ) , & + real(kind=kind_phys), dimension( its: ) , & optional , & intent(in ) :: frcurb ! @@ -235,8 +278,6 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & hgamt,hgamq, & brdn,brup, & phim,phih, & - dusfc,dvsfc, & - dtsfc,dqsfc, & prpbl, & wspd1,thermalli ! @@ -551,10 +592,10 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & enddo ! do i = its,ite - dusfc(i) = 0. - dvsfc(i) = 0. - dtsfc(i) = 0. - dqsfc(i) = 0. + if(present(dusfc)) dusfc(i) = 0. + if(present(dvsfc)) dvsfc(i) = 0. + if(present(dtsfc)) dtsfc(i) = 0. + if(present(dqsfc)) dqsfc(i) = 0. enddo ! do i = its,ite @@ -689,7 +730,7 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & ! ! enhance pbl by theta-li ! - if (ysu_topdown_pblmix.eq.1)then + if (ysu_topdown_pblmix)then do i = its,ite kpblold(i) = kpbl(i) definebrup=.false. @@ -796,7 +837,7 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & bfxpbl(i) = -0.15*thvx(i,1)/g*wm3/hpbl(i) dthvx(i) = max(thvx(i,k+1)-thvx(i,k),tmin) we(i) = max(bfxpbl(i)/dthvx(i),-sqrt(wm2(i))) - if((qcxl(i,k)+qixl(i,k)).gt.0.01e-3.and.ysu_topdown_pblmix.eq.1)then + if((qcxl(i,k)+qixl(i,k)).gt.0.01e-3.and.ysu_topdown_pblmix)then if ( kpbl(i) .ge. 2) then cloudflg(i)=.true. templ=thlix(i,k)*(p2di(i,k+1)/100000)**rovcp @@ -1061,11 +1102,11 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & #if (NEED_B4B_DURING_CCPP_TESTING == 1) ttend = (f1(i,k)-thx(i,k)+300.)*rdt*pi2d(i,k) ttnp(i,k) = ttend - dtsfc(i) = dtsfc(i)+ttend*cont*del(i,k)/pi2d(i,k) + if(present(dtsfc)) dtsfc(i) = dtsfc(i)+ttend*cont*del(i,k)/pi2d(i,k) #elif (NEED_B4B_DURING_CCPP_TESTING != 1) ttend = (f1(i,k)-thx(i,k)+300.)*rdt ttnp(i,k) = ttend - dtsfc(i) = dtsfc(i)+ttend*cont*del(i,k) + if(present(dtsfc)) dtsfc(i) = dtsfc(i)+ttend*cont*del(i,k) #endif enddo enddo @@ -1138,7 +1179,7 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & do k = kte,kts,-1 qtend = (f1(i,k)-qvx(i,k))*rdt qvtnp(i,k) = qtend - dqsfc(i) = dqsfc(i)+qtend*conq*del(i,k) + if(present(dqsfc)) dqsfc(i) = dqsfc(i)+qtend*conq*del(i,k) enddo enddo @@ -1353,8 +1394,8 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & vtend = (f2(i,k)-vx(i,k))*rdt utnp(i,k) = utend vtnp(i,k) = vtend - dusfc(i) = dusfc(i) + utend*conwrc*del(i,k) - dvsfc(i) = dvsfc(i) + vtend*conwrc*del(i,k) + if(present(dusfc)) dusfc(i) = dusfc(i) + utend*conwrc*del(i,k) + if(present(dvsfc)) dvsfc(i) = dvsfc(i) + vtend*conwrc*del(i,k) enddo enddo ! @@ -1379,59 +1420,6 @@ subroutine bl_ysu_run(ux,vx,tx,qvx,qcx,qix,nmix,qmix,p2d,p2di,pi2d, & end subroutine bl_ysu_run !================================================================================================================= - subroutine bl_ysu_init (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_ysu_init - -!================================================================================================================= - subroutine bl_ysu_final (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_ysu_final - -!================================================================================================================= - subroutine bl_ysu_timestep_init (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_ysu_timestep_init - -!================================================================================================================= - subroutine bl_ysu_timestep_final (errmsg, errflg) - - character(len=*), intent(out) :: errmsg - integer, intent(out) :: errflg - - ! This routine currently does nothing - - errmsg = '' - errflg = 0 - - end subroutine bl_ysu_timestep_final -!------------------------------------------------------------------------------- -! -!------------------------------------------------------------------------------- subroutine tridi2n(cl,cm,cm1,cu,r1,r2,au,f1,f2,its,ite,kts,kte,nt) !------------------------------------------------------------------------------- implicit none diff --git a/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F b/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F index 096010ed15..e38eb91985 100644 --- a/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F +++ b/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F @@ -57,6 +57,9 @@ subroutine bl_mynn_post_finalize(errmsg,errflg) end subroutine bl_mynn_post_finalize !================================================================================================================= +!>\section arg_table_bl_mynn_post_run +!!\html\include bl_mynn_post_run.html +!! subroutine bl_mynn_post_run(its,ite,kte,f_qc,f_qi,f_qs,delt,qv,qc,qi,qs,dqv,dqc,dqi,dqs,errmsg,errflg) !================================================================================================================= diff --git a/src/core_atmosphere/physics/physics_wrf/module_bl_ysu.F b/src/core_atmosphere/physics/physics_wrf/module_bl_ysu.F index d516bf1b4f..cf7340aaf8 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_bl_ysu.F +++ b/src/core_atmosphere/physics/physics_wrf/module_bl_ysu.F @@ -1,10 +1,10 @@ #define NEED_B4B_DURING_CCPP_TESTING 1 !================================================================================================================= module module_bl_ysu - use mpas_log use mpas_kind_types,only: kind_phys => RKIND use bl_ysu + implicit none private public:: ysu @@ -232,8 +232,11 @@ subroutine ysu(u3d,v3d,t3d,qv3d,qc3d,qi3d,p3d,p3di,pi3d, & !temporary allocation of local chemical species and/or passive tracers that are vertically- !mixed in subroutine bl_ysu_run: + logical:: l_topdown_pblmix + integer, parameter :: nmix = 0 integer :: n + real(kind=kind_phys), dimension(ims:ime,kms:kme,jms:jme,nmix):: qmix real(kind=kind_phys), dimension(ims:ime,kms:kme,jms:jme,nmix):: rqmixblten @@ -304,9 +307,13 @@ subroutine ysu(u3d,v3d,t3d,qv3d,qc3d,qi3d,p3d,p3di,pi3d, & integer, dimension(its:ite) :: & kpbl2d_hv - real, dimension(its:ite) :: & + real(kind=kind_phys), dimension(its:ite) :: & frcurb_hv +!----------------------------------------------------------------------------------------------------------------- + + l_topdown_pblmix = .false. + if(ysu_topdown_pblmix .eq. 1) l_topdown_pblmix = .true. do j = jts,jte ! @@ -417,7 +424,7 @@ subroutine ysu(u3d,v3d,t3d,qv3d,qc3d,qi3d,p3d,p3di,pi3d, & ,u10=u10_hv,v10=v10_hv & ,uox=uoce_hv,vox=voce_hv & ,rthraten=rthraten_hv & - ,ysu_topdown_pblmix=ysu_topdown_pblmix & + ,ysu_topdown_pblmix=l_topdown_pblmix & ,ctopo=ctopo_hv,ctopo2=ctopo2_hv & ,a_u=a_u_hv,a_v=a_v_hv,a_t=a_t_hv,a_q=a_q_hv,a_e=a_e_hv & ,b_u=b_u_hv,b_v=b_v_hv,b_t=b_t_hv,b_q=b_q_hv,b_e=b_e_hv & From 342e75bb7467c97c2b2c6498bf44c22c0510b819 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Thu, 2 May 2024 17:46:53 -0600 Subject: [PATCH 018/115] * In ./src/core_atmosphere/physics, updated ./physics_mmm/cu_ntiedtke.F90 and ./physics_wrf/module_cu_ntiedtke.F. --- .../physics/physics_mmm/cu_ntiedtke.F90 | 215 ++---------------- .../physics/physics_wrf/module_cu_ntiedtke.F | 199 +++++++++++++++- 2 files changed, 208 insertions(+), 206 deletions(-) diff --git a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 index 041bb67456..e2ba844ec9 100644 --- a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 +++ b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 @@ -66,17 +66,18 @@ module cu_ntiedtke implicit none private - public:: cu_ntiedtke_run, & - cu_ntiedtke_init, & - cu_ntiedtke_final, & - cu_ntiedtke_timestep_init, & - cu_ntiedtke_timestep_final + public:: cu_ntiedtke_run, & + cu_ntiedtke_init, & + cu_ntiedtke_finalize contains !================================================================================================================= +!>\section arg_table_cu_ntiedtke_init +!!\html\include cu_ntiedtke_init.html +!! subroutine cu_ntiedtke_init(con_cp,con_rd,con_rv,con_xlv,con_xls,con_xlf,con_grav,errmsg,errflg) !================================================================================================================= @@ -122,7 +123,10 @@ subroutine cu_ntiedtke_init(con_cp,con_rd,con_rv,con_xlv,con_xls,con_xlf,con_gra end subroutine cu_ntiedtke_init !================================================================================================================= - subroutine cu_ntiedtke_final(errmsg,errflg) +!>\section arg_table_cu_ntiedtke_finalize +!!\html\include cu_ntiedtke_finalize.html +!! + subroutine cu_ntiedtke_finalize(errmsg,errflg) !================================================================================================================= !--- output arguments: @@ -131,189 +135,10 @@ subroutine cu_ntiedtke_final(errmsg,errflg) !----------------------------------------------------------------------------------------------------------------- - errmsg = 'cu_ntiedtke_final OK' + errmsg = 'cu_ntiedtke_finalize OK' errflg = 0 - end subroutine cu_ntiedtke_final - -!================================================================================================================= - subroutine cu_ntiedtke_timestep_init(its,ite,kts,kte,im,kx,kx1,itimestep,stepcu,dt,grav,xland,dz,pres,presi, & - t,rho,qv,qc,qi,u,v,w,qvften,thften,qvftenz,thftenz,slimsk,delt,prsl,ghtl,tf,qvf,qcf, & - qif,uf,vf,prsi,ghti,omg,errmsg,errflg) -!================================================================================================================= - -!--- input arguments: - integer,intent(in):: its,ite,kts,kte - integer,intent(in):: itimestep - integer,intent(in):: stepcu - - real(kind=kind_phys),intent(in):: dt,grav - real(kind=kind_phys),intent(in),dimension(its:ite):: xland - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: dz,pres,t,rho,qv,qc,qi,u,v - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvften,thften - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte+1):: presi,w - -!--- inout arguments: - integer,intent(inout):: im,kx,kx1 - integer,intent(inout),dimension(its:ite):: slimsk - - real(kind=kind_phys),intent(inout):: delt - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: tf,qvf,qcf,qif,uf,vf - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: ghtl,omg,prsl - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvftenz,thftenz - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte+1):: ghti,prsi - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - -!--- local variables and arrays: - integer:: i,k,pp,zz - - real(kind=kind_phys),dimension(its:ite,kts:kte):: zl,dot - real(kind=kind_phys),dimension(its:ite,kts:kte+1):: zi - -!----------------------------------------------------------------------------------------------------------------- - - im = ite-its+1 - kx = kte-kts+1 - kx1 = kx+1 - - delt = dt*stepcu - - do i = its,ite - slimsk(i) = (abs(xland(i)-2.)) - enddo - - k = kts - do i = its,ite - zi(i,k) = 0. - enddo - do k = kts,kte - do i = its,ite - zi(i,k+1) = zi(i,k)+dz(i,k) - enddo - enddo - do k = kts,kte - do i = its,ite - zl(i,k) = 0.5*(zi(i,k)+zi(i,k+1)) - dot(i,k) = -0.5*grav*rho(i,k)*(w(i,k)+w(i,k+1)) - enddo - enddo - - pp = 0 - do k = kts,kte+1 - zz = kte + 1 - pp - do i = its,ite - ghti(i,zz) = zi(i,k) - prsi(i,zz) = presi(i,k) - enddo - pp = pp + 1 - enddo - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - ghtl(i,zz) = zl(i,k) - omg(i,zz) = dot(i,k) - prsl(i,zz) = pres(i,k) - enddo - pp = pp + 1 - enddo - - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - tf(i,zz) = t(i,k) - qvf(i,zz) = qv(i,k) - qcf(i,zz) = qc(i,k) - qif(i,zz) = qi(i,k) - uf(i,zz) = u(i,k) - vf(i,zz) = v(i,k) - enddo - pp = pp + 1 - enddo - - if(itimestep == 1) then - do k = kts,kte - do i = its,ite - qvftenz(i,k) = 0. - thftenz(i,k) = 0. - enddo - enddo - else - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - qvftenz(i,zz) = qvften(i,k) - thftenz(i,zz) = thften(i,k) - enddo - pp = pp + 1 - enddo - endif - - errmsg = 'cu_ntiedtke_timestep_init OK' - errflg = 0 - - end subroutine cu_ntiedtke_timestep_init - -!================================================================================================================= - subroutine cu_ntiedtke_timestep_final(its,ite,kts,kte,stepcu,dt,exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf,rn, & - raincv,pratec,rthcuten,rqvcuten,rqccuten,rqicuten,rucuten,rvcuten,errmsg,errflg) -!================================================================================================================= - -!--- input arguments: - integer,intent(in):: its,ite,kts,kte - integer,intent(in):: stepcu - - real(kind=kind_phys),intent(in):: dt - real(kind=kind_phys),intent(in),dimension(its:ite):: rn - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf - -!--- inout arguments: - real(kind=kind_phys),intent(inout),dimension(its:ite):: raincv,pratec - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rqvcuten,rqccuten,rqicuten - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rthcuten,rucuten,rvcuten - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - -!--- local variables and arrays: - integer:: i,k,pp,zz - - real(kind=kind_phys):: delt,rdelt - -!----------------------------------------------------------------------------------------------------------------- - - delt = dt*stepcu - rdelt = 1./delt - - do i = its,ite - raincv(i) = rn(i)/stepcu - pratec(i) = rn(i)/(stepcu*dt) - enddo - - pp = 0 - do k = kts,kte - zz = kte - pp - do i = its,ite - rthcuten(i,k) = (tf(i,zz)-t(i,k))/exner(i,k)*rdelt - rqvcuten(i,k) = (qvf(i,zz)-qv(i,k))*rdelt - rqccuten(i,k) = (qcf(i,zz)-qc(i,k))*rdelt - rqicuten(i,k) = (qif(i,zz)-qi(i,k))*rdelt - rucuten(i,k) = (uf(i,zz)-u(i,k))*rdelt - rvcuten(i,k) = (vf(i,zz)-v(i,k))*rdelt - enddo - pp = pp + 1 - enddo - - errmsg = 'cu_ntiedtke_timestep_final OK' - errflg = 0 - - end subroutine cu_ntiedtke_timestep_final + end subroutine cu_ntiedtke_finalize !================================================================================================================= ! level 1 subroutine 'cu_ntiedkte_run' @@ -359,18 +184,18 @@ subroutine cu_ntiedtke_run(pu,pv,pt,pqv,pqc,pqi,pqvf,ptf,poz,pzz,pomg, & !--- input arguments: integer,intent(in):: lq,km,km1 - integer,intent(in),dimension(lq):: lndj + integer,intent(in),dimension(:):: lndj real(kind=kind_phys),intent(in):: dt - real(kind=kind_phys),intent(in),dimension(lq):: dx - real(kind=kind_phys),intent(in),dimension(lq):: evap,hfx - real(kind=kind_phys),intent(in),dimension(lq,km):: pqvf,ptf - real(kind=kind_phys),intent(in),dimension(lq,km):: poz,pomg,pap - real(kind=kind_phys),intent(in),dimension(lq,km1):: pzz,paph + real(kind=kind_phys),intent(in),dimension(:):: dx + real(kind=kind_phys),intent(in),dimension(:):: evap,hfx + real(kind=kind_phys),intent(in),dimension(:,:):: pqvf,ptf + real(kind=kind_phys),intent(in),dimension(:,:):: poz,pomg,pap + real(kind=kind_phys),intent(in),dimension(:,:):: pzz,paph !--- inout arguments: - real(kind=kind_phys),intent(inout),dimension(lq):: zprecc - real(kind=kind_phys),intent(inout),dimension(lq,km):: pu,pv,pt,pqv,pqc,pqi + real(kind=kind_phys),intent(inout),dimension(:):: zprecc + real(kind=kind_phys),intent(inout),dimension(:,:):: pu,pv,pt,pqv,pqc,pqi !--- output arguments: character(len=*),intent(out):: errmsg diff --git a/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F b/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F index b36cb5e610..b330f8f606 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F +++ b/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F @@ -1,13 +1,11 @@ !================================================================================================================= module module_cu_ntiedtke - use mpas_kind_types,only: RKIND,StrKIND - - use cu_ntiedtke,only: cu_ntiedtke_run, & - cu_ntiedtke_init, & - cu_ntiedtke_timestep_init, & - cu_ntiedtke_timestep_final + use mpas_kind_types,only: kind_phys => RKIND + use cu_ntiedtke,only: cu_ntiedtke_run, & + cu_ntiedtke_init use cu_ntiedtke_common + implicit none private public:: cu_ntiedtke_driver, & @@ -94,7 +92,7 @@ subroutine cu_ntiedtke_driver( & integer,intent(in):: itimestep,stepcu - real(kind=RKIND),intent(in):: cp,grav,rd,rv,xlf,xls,xlv + real(kind=kind_phys),intent(in):: cp,grav,rd,rv,xlf,xls,xlv real(kind=kind_phys),intent(in):: dt @@ -204,7 +202,7 @@ subroutine cu_ntiedtke_driver( & enddo enddo - call cu_ntiedtke_timestep_init( & + call cu_ntiedtke_pre_run( & its = its , ite = ite , kts = kts , kte = kte , & im = im , kx = kx , kx1 = kx1 , itimestep = itimestep , & stepcu = stepcu , dt = dt , grav = grav , xland = xland_hv , & @@ -216,7 +214,7 @@ subroutine cu_ntiedtke_driver( & qvf = qvf , qcf = qcf , qif = qif , uf = uf , & vf = vf , prsi = prsi , ghti = ghti , omg = omg , & errmsg = errmsg , errflg = errflg & - ) + ) call cu_ntiedtke_run( & pu = uf , pv = vf , pt = tf , pqv = qvf , & @@ -227,7 +225,7 @@ subroutine cu_ntiedtke_driver( & dt = delt , dx = dx_hv , errmsg = errmsg , errflg = errflg & ) - call cu_ntiedtke_timestep_final( & + call cu_ntiedtke_post_run( & its = its , ite = ite , kts = kts , kte = kte , & stepcu = stepcu , dt = dt , exner = pi_hv , qv = qv_hv , & qc = qc_hv , qi = qi_hv , t = t_hv , u = u_hv , & @@ -236,7 +234,7 @@ subroutine cu_ntiedtke_driver( & raincv = raincv_hv , pratec = pratec_hv , rthcuten = rthcuten_hv , rqvcuten = rqvcuten_hv , & rqccuten = rqccuten_hv , rqicuten = rqicuten_hv , rucuten = rucuten_hv , rvcuten = rvcuten_hv , & errmsg = errmsg , errflg = errflg & - ) + ) do i = its,ite raincv(i,j) = raincv_hv(i) @@ -351,6 +349,185 @@ subroutine ntiedtkeinit(rthcuten,rqvcuten,rqccuten,rqicuten, & end subroutine ntiedtkeinit +!================================================================================================================= + subroutine cu_ntiedtke_pre_run(its,ite,kts,kte,im,kx,kx1,itimestep,stepcu,dt,grav,xland,dz,pres,presi, & + t,rho,qv,qc,qi,u,v,w,qvften,thften,qvftenz,thftenz,slimsk,delt,prsl,ghtl, & + tf,qvf,qcf,qif,uf,vf,prsi,ghti,omg,errmsg,errflg) +!================================================================================================================= + +!--- input arguments: + integer,intent(in):: its,ite,kts,kte + integer,intent(in):: itimestep + integer,intent(in):: stepcu + + real(kind=kind_phys),intent(in):: dt,grav + real(kind=kind_phys),intent(in),dimension(its:ite):: xland + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: dz,pres,t,rho,qv,qc,qi,u,v + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvften,thften + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte+1):: presi,w + +!--- inout arguments: + integer,intent(inout):: im,kx,kx1 + integer,intent(inout),dimension(its:ite):: slimsk + + real(kind=kind_phys),intent(inout):: delt + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: tf,qvf,qcf,qif,uf,vf + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: ghtl,omg,prsl + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvftenz,thftenz + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte+1):: ghti,prsi + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!--- local variables and arrays: + integer:: i,k,pp,zz + + real(kind=kind_phys),dimension(its:ite,kts:kte):: zl,dot + real(kind=kind_phys),dimension(its:ite,kts:kte+1):: zi + +!----------------------------------------------------------------------------------------------------------------- + + im = ite-its+1 + kx = kte-kts+1 + kx1 = kx+1 + + delt = dt*stepcu + + do i = its,ite + slimsk(i) = (abs(xland(i)-2.)) + enddo + + k = kts + do i = its,ite + zi(i,k) = 0. + enddo + do k = kts,kte + do i = its,ite + zi(i,k+1) = zi(i,k)+dz(i,k) + enddo + enddo + do k = kts,kte + do i = its,ite + zl(i,k) = 0.5*(zi(i,k)+zi(i,k+1)) + dot(i,k) = -0.5*grav*rho(i,k)*(w(i,k)+w(i,k+1)) + enddo + enddo + + pp = 0 + do k = kts,kte+1 + zz = kte + 1 - pp + do i = its,ite + ghti(i,zz) = zi(i,k) + prsi(i,zz) = presi(i,k) + enddo + pp = pp + 1 + enddo + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + ghtl(i,zz) = zl(i,k) + omg(i,zz) = dot(i,k) + prsl(i,zz) = pres(i,k) + enddo + pp = pp + 1 + enddo + + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + tf(i,zz) = t(i,k) + qvf(i,zz) = qv(i,k) + qcf(i,zz) = qc(i,k) + qif(i,zz) = qi(i,k) + uf(i,zz) = u(i,k) + vf(i,zz) = v(i,k) + enddo + pp = pp + 1 + enddo + + if(itimestep == 1) then + do k = kts,kte + do i = its,ite + qvftenz(i,k) = 0. + thftenz(i,k) = 0. + enddo + enddo + else + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + qvftenz(i,zz) = qvften(i,k) + thftenz(i,zz) = thften(i,k) + enddo + pp = pp + 1 + enddo + endif + + errmsg = 'cu_ntiedtke_pre_run OK' + errflg = 0 + + end subroutine cu_ntiedtke_pre_run + +!================================================================================================================= + subroutine cu_ntiedtke_post_run(its,ite,kts,kte,stepcu,dt,exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf,rn,raincv, & + pratec,rthcuten,rqvcuten,rqccuten,rqicuten,rucuten,rvcuten,errmsg,errflg) +!================================================================================================================= + +!--- input arguments: + integer,intent(in):: its,ite,kts,kte + integer,intent(in):: stepcu + + real(kind=kind_phys),intent(in):: dt + real(kind=kind_phys),intent(in),dimension(its:ite):: rn + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf + +!--- inout arguments: + real(kind=kind_phys),intent(inout),dimension(its:ite):: raincv,pratec + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rqvcuten,rqccuten,rqicuten + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rthcuten,rucuten,rvcuten + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!--- local variables and arrays: + integer:: i,k,pp,zz + + real(kind=kind_phys):: delt,rdelt + +!----------------------------------------------------------------------------------------------------------------- + + delt = dt*stepcu + rdelt = 1./delt + + do i = its,ite + raincv(i) = rn(i)/stepcu + pratec(i) = rn(i)/(stepcu*dt) + enddo + + pp = 0 + do k = kts,kte + zz = kte - pp + do i = its,ite + rthcuten(i,k) = (tf(i,zz)-t(i,k))/exner(i,k)*rdelt + rqvcuten(i,k) = (qvf(i,zz)-qv(i,k))*rdelt + rqccuten(i,k) = (qcf(i,zz)-qc(i,k))*rdelt + rqicuten(i,k) = (qif(i,zz)-qi(i,k))*rdelt + rucuten(i,k) = (uf(i,zz)-u(i,k))*rdelt + rvcuten(i,k) = (vf(i,zz)-v(i,k))*rdelt + enddo + pp = pp + 1 + enddo + + errmsg = 'cu_ntiedtke_post_run OK' + errflg = 0 + + end subroutine cu_ntiedtke_post_run + !================================================================================================================= end module module_cu_ntiedtke !================================================================================================================= From 6d75dcdeaf025b448ac4ffabb6af6fcfcc4f17dd Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Fri, 3 May 2024 09:30:12 -0600 Subject: [PATCH 019/115] * In ./src/core_atmosphere/physics/physics_wrf, finished to update module_cu_ntiedtke.F. Added modules cu_ntiedtke_pre.F and cu_ntiedtke_post.F to comply with CCPP requirements, and to initialize and finalize variables used in ./physics_mmm/cu_ntiedtke.F90. Modified Makefile accordingly. --- .../physics/physics_wrf/Makefile | 7 + .../physics/physics_wrf/cu_ntiedtke_post.F | 120 +++++++++++ .../physics/physics_wrf/cu_ntiedtke_pre.F | 187 ++++++++++++++++++ .../physics/physics_wrf/module_cu_ntiedtke.F | 182 +---------------- 4 files changed, 316 insertions(+), 180 deletions(-) create mode 100644 src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F create mode 100644 src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F diff --git a/src/core_atmosphere/physics/physics_wrf/Makefile b/src/core_atmosphere/physics/physics_wrf/Makefile index e9dabbc0ed..a3b89e2010 100644 --- a/src/core_atmosphere/physics/physics_wrf/Makefile +++ b/src/core_atmosphere/physics/physics_wrf/Makefile @@ -43,8 +43,11 @@ OBJS = \ module_sf_urban.o \ bl_mynn_post.o \ bl_mynn_pre.o \ + cu_ntiedtke_post.o \ + cu_ntiedtke_pre.o \ sf_mynn_pre.o + physics_wrf: $(OBJS) ar -ru ./../libphys.a $(OBJS) @@ -56,6 +59,10 @@ module_bl_mynn.o: \ module_cam_support.o: \ module_cam_shr_kind_mod.o +module_cu_ntiedtke.o: \ + cu_ntiedtke_post.o \ + cu_ntiedtke_pre.o + module_ra_cam.o: \ module_cam_support.o \ module_ra_cam_support.o diff --git a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F new file mode 100644 index 0000000000..3996fdc60f --- /dev/null +++ b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F @@ -0,0 +1,120 @@ +!================================================================================================================= + module cu_ntiedtke_post + use ccpp_kinds,only: kind_phys + + implicit none + private + public:: cu_ntiedtke_post_init, & + cu_ntiedtke_post_finalize, & + cu_ntiedtke_post_run + + + contains + + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_post_init +!!\html\include cu_ntiedtke_post_init.html +!! + subroutine cu_ntiedtke_post_init(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine cu_ntiedtke_post_init + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_post_finalize +!!\html\include cu_ntiedtke_post_finalize.html +!! + subroutine cu_ntiedtke_post_finalize(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine cu_ntiedtke_post_finalize + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_post_run +!!\html\include cu_ntiedtke_post_run.html +!! + subroutine cu_ntiedtke_post_run(its,ite,kts,kte,stepcu,dt,exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf,rn,raincv, & + pratec,rthcuten,rqvcuten,rqccuten,rqicuten,rucuten,rvcuten,errmsg,errflg) +!================================================================================================================= + +!--- input arguments: + integer,intent(in):: its,ite,kts,kte + integer,intent(in):: stepcu + + real(kind=kind_phys),intent(in):: dt + real(kind=kind_phys),intent(in),dimension(its:ite):: rn + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf + +!--- inout arguments: + real(kind=kind_phys),intent(inout),dimension(its:ite):: raincv,pratec + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rqvcuten,rqccuten,rqicuten + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rthcuten,rucuten,rvcuten + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!--- local variables and arrays: + integer:: i,k,pp,zz + + real(kind=kind_phys):: delt,rdelt + +!----------------------------------------------------------------------------------------------------------------- + + delt = dt*stepcu + rdelt = 1./delt + + do i = its,ite + raincv(i) = rn(i)/stepcu + pratec(i) = rn(i)/(stepcu*dt) + enddo + + pp = 0 + do k = kts,kte + zz = kte - pp + do i = its,ite + rthcuten(i,k) = (tf(i,zz)-t(i,k))/exner(i,k)*rdelt + rqvcuten(i,k) = (qvf(i,zz)-qv(i,k))*rdelt + rqccuten(i,k) = (qcf(i,zz)-qc(i,k))*rdelt + rqicuten(i,k) = (qif(i,zz)-qi(i,k))*rdelt + rucuten(i,k) = (uf(i,zz)-u(i,k))*rdelt + rvcuten(i,k) = (vf(i,zz)-v(i,k))*rdelt + enddo + pp = pp + 1 + enddo + + errmsg = 'cu_ntiedtke_post_run OK' + errflg = 0 + + end subroutine cu_ntiedtke_post_run + +!================================================================================================================= + end module cu_ntiedtke_post +!================================================================================================================= diff --git a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F new file mode 100644 index 0000000000..ef1fab8e4d --- /dev/null +++ b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F @@ -0,0 +1,187 @@ +!================================================================================================================= + module cu_ntiedtke_pre + use ccpp_kinds,only: kind_phys + + implicit none + private + public:: cu_ntiedtke_pre_init, & + cu_ntiedtke_pre_finalize, & + cu_ntiedtke_pre_run + + + contains + + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_pre_init +!!\html\include cu_ntiedtke_pre_init.html +!! + subroutine cu_ntiedtke_pre_init(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine cu_ntiedtke_pre_init + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_pre_finalize +!!\html\include cu_ntiedtke_pre_finalize.html +!! + subroutine cu_ntiedtke_pre_finalize(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine cu_ntiedtke_pre_finalize + +!================================================================================================================= +!>\section arg_table_cu_ntiedtke_pre_run +!!\html\include cu_ntiedtke_pre_run.html +!! + subroutine cu_ntiedtke_pre_run(its,ite,kts,kte,im,kx,kx1,itimestep,stepcu,dt,grav,xland,dz,pres,presi, & + t,rho,qv,qc,qi,u,v,w,qvften,thften,qvftenz,thftenz,slimsk,delt,prsl,ghtl, & + tf,qvf,qcf,qif,uf,vf,prsi,ghti,omg,errmsg,errflg) +!================================================================================================================= + +!--- input arguments: + integer,intent(in):: its,ite,kts,kte + integer,intent(in):: itimestep + integer,intent(in):: stepcu + + real(kind=kind_phys),intent(in):: dt,grav + real(kind=kind_phys),intent(in),dimension(its:ite):: xland + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: dz,pres,t,rho,qv,qc,qi,u,v + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvften,thften + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte+1):: presi,w + +!--- inout arguments: + integer,intent(inout):: im,kx,kx1 + integer,intent(inout),dimension(its:ite):: slimsk + + real(kind=kind_phys),intent(inout):: delt + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: tf,qvf,qcf,qif,uf,vf + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: ghtl,omg,prsl + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvftenz,thftenz + real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte+1):: ghti,prsi + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + +!--- local variables and arrays: + integer:: i,k,pp,zz + + real(kind=kind_phys),dimension(its:ite,kts:kte):: zl,dot + real(kind=kind_phys),dimension(its:ite,kts:kte+1):: zi + +!----------------------------------------------------------------------------------------------------------------- + + im = ite-its+1 + kx = kte-kts+1 + kx1 = kx+1 + + delt = dt*stepcu + + do i = its,ite + slimsk(i) = (abs(xland(i)-2.)) + enddo + + k = kts + do i = its,ite + zi(i,k) = 0. + enddo + do k = kts,kte + do i = its,ite + zi(i,k+1) = zi(i,k)+dz(i,k) + enddo + enddo + do k = kts,kte + do i = its,ite + zl(i,k) = 0.5*(zi(i,k)+zi(i,k+1)) + dot(i,k) = -0.5*grav*rho(i,k)*(w(i,k)+w(i,k+1)) + enddo + enddo + + pp = 0 + do k = kts,kte+1 + zz = kte + 1 - pp + do i = its,ite + ghti(i,zz) = zi(i,k) + prsi(i,zz) = presi(i,k) + enddo + pp = pp + 1 + enddo + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + ghtl(i,zz) = zl(i,k) + omg(i,zz) = dot(i,k) + prsl(i,zz) = pres(i,k) + enddo + pp = pp + 1 + enddo + + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + tf(i,zz) = t(i,k) + qvf(i,zz) = qv(i,k) + qcf(i,zz) = qc(i,k) + qif(i,zz) = qi(i,k) + uf(i,zz) = u(i,k) + vf(i,zz) = v(i,k) + enddo + pp = pp + 1 + enddo + + if(itimestep == 1) then + do k = kts,kte + do i = its,ite + qvftenz(i,k) = 0. + thftenz(i,k) = 0. + enddo + enddo + else + pp = 0 + do k = kts,kte + zz = kte-pp + do i = its,ite + qvftenz(i,zz) = qvften(i,k) + thftenz(i,zz) = thften(i,k) + enddo + pp = pp + 1 + enddo + endif + + errmsg = 'cu_ntiedtke_pre_run OK' + errflg = 0 + + end subroutine cu_ntiedtke_pre_run + +!================================================================================================================= + end module cu_ntiedtke_pre +!================================================================================================================= diff --git a/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F b/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F index b330f8f606..806de7c518 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F +++ b/src/core_atmosphere/physics/physics_wrf/module_cu_ntiedtke.F @@ -4,7 +4,8 @@ module module_cu_ntiedtke use cu_ntiedtke,only: cu_ntiedtke_run, & cu_ntiedtke_init use cu_ntiedtke_common - + use cu_ntiedtke_post,only: cu_ntiedtke_post_run + use cu_ntiedtke_pre,only: cu_ntiedtke_pre_run implicit none private @@ -349,185 +350,6 @@ subroutine ntiedtkeinit(rthcuten,rqvcuten,rqccuten,rqicuten, & end subroutine ntiedtkeinit -!================================================================================================================= - subroutine cu_ntiedtke_pre_run(its,ite,kts,kte,im,kx,kx1,itimestep,stepcu,dt,grav,xland,dz,pres,presi, & - t,rho,qv,qc,qi,u,v,w,qvften,thften,qvftenz,thftenz,slimsk,delt,prsl,ghtl, & - tf,qvf,qcf,qif,uf,vf,prsi,ghti,omg,errmsg,errflg) -!================================================================================================================= - -!--- input arguments: - integer,intent(in):: its,ite,kts,kte - integer,intent(in):: itimestep - integer,intent(in):: stepcu - - real(kind=kind_phys),intent(in):: dt,grav - real(kind=kind_phys),intent(in),dimension(its:ite):: xland - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: dz,pres,t,rho,qv,qc,qi,u,v - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvften,thften - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte+1):: presi,w - -!--- inout arguments: - integer,intent(inout):: im,kx,kx1 - integer,intent(inout),dimension(its:ite):: slimsk - - real(kind=kind_phys),intent(inout):: delt - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: tf,qvf,qcf,qif,uf,vf - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: ghtl,omg,prsl - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: qvftenz,thftenz - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte+1):: ghti,prsi - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - -!--- local variables and arrays: - integer:: i,k,pp,zz - - real(kind=kind_phys),dimension(its:ite,kts:kte):: zl,dot - real(kind=kind_phys),dimension(its:ite,kts:kte+1):: zi - -!----------------------------------------------------------------------------------------------------------------- - - im = ite-its+1 - kx = kte-kts+1 - kx1 = kx+1 - - delt = dt*stepcu - - do i = its,ite - slimsk(i) = (abs(xland(i)-2.)) - enddo - - k = kts - do i = its,ite - zi(i,k) = 0. - enddo - do k = kts,kte - do i = its,ite - zi(i,k+1) = zi(i,k)+dz(i,k) - enddo - enddo - do k = kts,kte - do i = its,ite - zl(i,k) = 0.5*(zi(i,k)+zi(i,k+1)) - dot(i,k) = -0.5*grav*rho(i,k)*(w(i,k)+w(i,k+1)) - enddo - enddo - - pp = 0 - do k = kts,kte+1 - zz = kte + 1 - pp - do i = its,ite - ghti(i,zz) = zi(i,k) - prsi(i,zz) = presi(i,k) - enddo - pp = pp + 1 - enddo - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - ghtl(i,zz) = zl(i,k) - omg(i,zz) = dot(i,k) - prsl(i,zz) = pres(i,k) - enddo - pp = pp + 1 - enddo - - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - tf(i,zz) = t(i,k) - qvf(i,zz) = qv(i,k) - qcf(i,zz) = qc(i,k) - qif(i,zz) = qi(i,k) - uf(i,zz) = u(i,k) - vf(i,zz) = v(i,k) - enddo - pp = pp + 1 - enddo - - if(itimestep == 1) then - do k = kts,kte - do i = its,ite - qvftenz(i,k) = 0. - thftenz(i,k) = 0. - enddo - enddo - else - pp = 0 - do k = kts,kte - zz = kte-pp - do i = its,ite - qvftenz(i,zz) = qvften(i,k) - thftenz(i,zz) = thften(i,k) - enddo - pp = pp + 1 - enddo - endif - - errmsg = 'cu_ntiedtke_pre_run OK' - errflg = 0 - - end subroutine cu_ntiedtke_pre_run - -!================================================================================================================= - subroutine cu_ntiedtke_post_run(its,ite,kts,kte,stepcu,dt,exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf,rn,raincv, & - pratec,rthcuten,rqvcuten,rqccuten,rqicuten,rucuten,rvcuten,errmsg,errflg) -!================================================================================================================= - -!--- input arguments: - integer,intent(in):: its,ite,kts,kte - integer,intent(in):: stepcu - - real(kind=kind_phys),intent(in):: dt - real(kind=kind_phys),intent(in),dimension(its:ite):: rn - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: exner,qv,qc,qi,t,u,v,qvf,qcf,qif,tf,uf,vf - -!--- inout arguments: - real(kind=kind_phys),intent(inout),dimension(its:ite):: raincv,pratec - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rqvcuten,rqccuten,rqicuten - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: rthcuten,rucuten,rvcuten - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - -!--- local variables and arrays: - integer:: i,k,pp,zz - - real(kind=kind_phys):: delt,rdelt - -!----------------------------------------------------------------------------------------------------------------- - - delt = dt*stepcu - rdelt = 1./delt - - do i = its,ite - raincv(i) = rn(i)/stepcu - pratec(i) = rn(i)/(stepcu*dt) - enddo - - pp = 0 - do k = kts,kte - zz = kte - pp - do i = its,ite - rthcuten(i,k) = (tf(i,zz)-t(i,k))/exner(i,k)*rdelt - rqvcuten(i,k) = (qvf(i,zz)-qv(i,k))*rdelt - rqccuten(i,k) = (qcf(i,zz)-qc(i,k))*rdelt - rqicuten(i,k) = (qif(i,zz)-qi(i,k))*rdelt - rucuten(i,k) = (uf(i,zz)-u(i,k))*rdelt - rvcuten(i,k) = (vf(i,zz)-v(i,k))*rdelt - enddo - pp = pp + 1 - enddo - - errmsg = 'cu_ntiedtke_post_run OK' - errflg = 0 - - end subroutine cu_ntiedtke_post_run - !================================================================================================================= end module module_cu_ntiedtke !================================================================================================================= From 018424a6b93d9fa890d7908454a6567b627ebf79 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Mon, 6 May 2024 09:10:04 -0600 Subject: [PATCH 020/115] * In ./src/core_atmosphere/physics: -> in physics_mmm/sf_sfclayrev.F90, updated the revised surface layer scheme. -> in physics_wrf, updated module_sf_sfclayrev.F and added the new module sf_sfclayrev_pre.F. Modified aMakefile accordingly. -> corrected the call to to sfclayrev. --- .../physics/mpas_atmphys_driver_sfclayer.F | 106 +++++++------- .../physics/physics_mmm/sf_sfclayrev.F90 | 130 ++++++------------ .../physics/physics_wrf/Makefile | 6 +- .../physics/physics_wrf/module_sf_sfclayrev.F | 49 ++++--- .../physics/physics_wrf/sf_sfclayrev_pre.F | 101 ++++++++++++++ 5 files changed, 229 insertions(+), 163 deletions(-) create mode 100644 src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_sfclayer.F b/src/core_atmosphere/physics/mpas_atmphys_driver_sfclayer.F index eaac82d38f..4b5a603543 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_sfclayer.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_sfclayer.F @@ -952,66 +952,64 @@ subroutine driver_sfclayer(itimestep,configs,mesh,diag_physics,sfc_input,its,ite call mpas_timer_start('sf_monin_obukhov_rev') call mpas_log_write('--- enter subroutine sfclayrev:') call sfclayrev( & - p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , & - u3d = u_p , v3d = v_p , qv3d = qv_p , & - dz8w = dz_p , cp = cp , g = gravity , & - rovcp = rcp , R = R_d , xlv = xlv , & - chs = chs_p , chs2 = chs2_p , cqs2 = cqs2_p , & - cpm = cpm_p , znt = znt_p , ust = ust_p , & - pblh = hpbl_p , mavail = mavail_p , zol = zol_p , & - mol = mol_p , regime = regime_p , psim = psim_p , & - psih = psih_p , fm = fm_p , fh = fh_p , & - xland = xland_p , hfx = hfx_p , qfx = qfx_p , & - lh = lh_p , tsk = tsk_p , flhc = flhc_p , & - flqc = flqc_p , qgh = qgh_p , qsfc = qsfc_p , & - rmol = rmol_p , u10 = u10_p , v10 = v10_p , & - th2 = th2m_p , t2 = t2m_p , q2 = q2_p , & - gz1oz0 = gz1oz0_p , wspd = wspd_p , br = br_p , & - isfflx = isfflx , dx = dx_p , svp1 = svp1 , & - svp2 = svp2 , svp3 = svp3 , svpt0 = svpt0 , & - ep1 = ep_1 , ep2 = ep_2 , karman = karman , & - eomeg = eomeg , stbolt = stbolt , P1000mb = P0 , & - ustm = ustm_p , ck = ck_p , cka = cka_p , & - cd = cd_p , cda = cda_p , isftcflx = isftcflx , & - iz0tlnd = iz0tlnd , shalwater_z0 = shalwater_flag , shalwater_depth = shalwater_depth , & - water_depth = waterdepth_p , scm_force_flux = scm_force_flux , & - errmsg = errmsg , errflg = errflg , & - ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & - ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & - its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & + p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , & + u3d = u_p , v3d = v_p , qv3d = qv_p , & + dz8w = dz_p , cp = cp , g = gravity , & + rovcp = rcp , R = R_d , xlv = xlv , & + chs = chs_p , chs2 = chs2_p , cqs2 = cqs2_p , & + cpm = cpm_p , znt = znt_p , ust = ust_p , & + pblh = hpbl_p , mavail = mavail_p , zol = zol_p , & + mol = mol_p , regime = regime_p , psim = psim_p , & + psih = psih_p , fm = fm_p , fh = fh_p , & + xland = xland_p , hfx = hfx_p , qfx = qfx_p , & + lh = lh_p , tsk = tsk_p , flhc = flhc_p , & + flqc = flqc_p , qgh = qgh_p , qsfc = qsfc_p , & + rmol = rmol_p , u10 = u10_p , v10 = v10_p , & + th2 = th2m_p , t2 = t2m_p , q2 = q2_p , & + gz1oz0 = gz1oz0_p , wspd = wspd_p , br = br_p , & + isfflx = isfflx , dx = dx_p , svp1 = svp1 , & + svp2 = svp2 , svp3 = svp3 , svpt0 = svpt0 , & + ep1 = ep_1 , ep2 = ep_2 , karman = karman , & + p1000mb = P0 , lakemask = lakemask_p , ustm = ustm_p , & + ck = ck_p , cka = cka_p , cd = cd_p , & + cda = cda_p , isftcflx = isftcflx , iz0tlnd = iz0tlnd , & + shalwater_z0 = shalwater_flag , water_depth = waterdepth_p , scm_force_flux = scm_force_flux , & + errmsg = errmsg , errflg = errflg , & + ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) call mpas_log_write('--- end subroutine sfclayrev:') if(config_frac_seaice) then call mpas_log_write('--- enter subroutine sfclayrev seaice:') call sfclayrev( & - p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , & - u3d = u_p , v3d = v_p , qv3d = qv_p , & - dz8w = dz_p , cp = cp , g = gravity , & - rovcp = rcp , R = R_d , xlv = xlv , & - chs = chs_sea , chs2 = chs2_sea , cqs2 = cqs2_sea , & - cpm = cpm_sea , znt = znt_sea , ust = ust_sea , & - pblh = hpbl_p , mavail = mavail_sea , zol = zol_sea , & - mol = mol_sea , regime = regime_sea , psim = psim_sea , & - psih = psih_sea , fm = fm_sea , fh = fh_sea , & - xland = xland_sea , hfx = hfx_sea , qfx = qfx_sea , & - lh = lh_sea , tsk = tsk_sea , flhc = flhc_sea , & - flqc = flqc_sea , qgh = qgh_sea , qsfc = qsfc_sea , & - rmol = rmol_sea , u10 = u10_sea , v10 = v10_sea , & - th2 = th2m_sea , t2 = t2m_sea , q2 = q2_sea , & - gz1oz0 = gz1oz0_sea , wspd = wspd_sea , br = br_sea , & - isfflx = isfflx , dx = dx_p , svp1 = svp1 , & - svp2 = svp2 , svp3 = svp3 , svpt0 = svpt0 , & - ep1 = ep_1 , ep2 = ep_2 , karman = karman , & - eomeg = eomeg , stbolt = stbolt , P1000mb = P0 , & - ustm = ustm_sea , ck = ck_sea , cka = cka_sea , & - cd = cd_sea , cda = cda_sea , isftcflx = isftcflx , & - iz0tlnd = iz0tlnd , shalwater_z0 = shalwater_flag , shalwater_depth = shalwater_depth , & - water_depth = waterdepth_p , scm_force_flux = scm_force_flux , & - errmsg = errmsg , errflg = errflg , & - ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & - ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & - its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & + p3d = pres_hyd_p , psfc = psfc_p , t3d = t_p , & + u3d = u_p , v3d = v_p , qv3d = qv_p , & + dz8w = dz_p , cp = cp , g = gravity , & + rovcp = rcp , R = R_d , xlv = xlv , & + chs = chs_sea , chs2 = chs2_sea , cqs2 = cqs2_sea , & + cpm = cpm_sea , znt = znt_sea , ust = ust_sea , & + pblh = hpbl_p , mavail = mavail_sea , zol = zol_sea , & + mol = mol_sea , regime = regime_sea , psim = psim_sea , & + psih = psih_sea , fm = fm_sea , fh = fh_sea , & + xland = xland_sea , hfx = hfx_sea , qfx = qfx_sea , & + lh = lh_sea , tsk = tsk_sea , flhc = flhc_sea , & + flqc = flqc_sea , qgh = qgh_sea , qsfc = qsfc_sea , & + rmol = rmol_sea , u10 = u10_sea , v10 = v10_sea , & + th2 = th2m_sea , t2 = t2m_sea , q2 = q2_sea , & + gz1oz0 = gz1oz0_sea , wspd = wspd_sea , br = br_sea , & + isfflx = isfflx , dx = dx_p , svp1 = svp1 , & + svp2 = svp2 , svp3 = svp3 , svpt0 = svpt0 , & + ep1 = ep_1 , ep2 = ep_2 , karman = karman , & + p1000mb = P0 , lakemask = lakemask_p , ustm = ustm_sea , & + ck = ck_sea , cka = cka_sea , cd = cd_sea , & + cda = cda_sea , isftcflx = isftcflx , iz0tlnd = iz0tlnd , & + shalwater_z0 = shalwater_flag , water_depth = waterdepth_p , scm_force_flux = scm_force_flux , & + errmsg = errmsg , errflg = errflg , & + ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) call mpas_log_write('--- end subroutine sfclayrev seaice:') endif diff --git a/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 b/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 index 6ca81441ad..6fe8bc822f 100644 --- a/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 +++ b/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 @@ -4,11 +4,9 @@ module sf_sfclayrev implicit none private - public:: sf_sfclayrev_run, & - sf_sfclayrev_init, & - sf_sfclayrev_final, & - sf_sfclayrev_timestep_init, & - sf_sfclayrev_timestep_final + public:: sf_sfclayrev_run, & + sf_sfclayrev_init, & + sf_sfclayrev_finalize real(kind=kind_phys),parameter:: vconvc= 1. @@ -22,58 +20,9 @@ module sf_sfclayrev !================================================================================================================= - subroutine sf_sfclayrev_timestep_init(dz2d,u2d,v2d,qv2d,p2d,t2d,dz1d,u1d,v1d,qv1d,p1d,t1d, & - its,ite,kts,kte,errmsg,errflg) -!================================================================================================================= - -!--- input arguments: - integer,intent(in):: its,ite,kts,kte - - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & - dz2d,u2d,v2d,qv2d,p2d,t2d - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - - real(kind=kind_phys),intent(out),dimension(its:ite):: & - dz1d,u1d,v1d,qv1d,p1d,t1d - -!--- local variables: - integer:: i - -!----------------------------------------------------------------------------------------------------------------- - - do i = its,ite - dz1d(i) = dz2d(i,kts) - u1d(i) = u2d(i,kts) - v1d(i) = v2d(i,kts) - qv1d(i) = qv2d(i,kts) - p1d(i) = p2d(i,kts) - t1d(i) = t2d(i,kts) - enddo - - errmsg = 'sf_sfclayrev_timestep_init OK' - errflg = 0 - - end subroutine sf_sfclayrev_timestep_init - -!================================================================================================================= - subroutine sf_sfclayrev_timestep_final(errmsg,errflg) -!================================================================================================================= - -!--- output arguments: - character(len=*),intent(out):: errmsg - integer,intent(out):: errflg - -!----------------------------------------------------------------------------------------------------------------- - - errmsg = 'sf_sfclayrev_timestep_final OK' - errflg = 0 - - end subroutine sf_sfclayrev_timestep_final - -!================================================================================================================= +!>\section arg_table_sf_sfclayrev_init +!!\html\include sf_sfclayrev_init.html +!! subroutine sf_sfclayrev_init(errmsg,errflg) !================================================================================================================= @@ -105,7 +54,10 @@ subroutine sf_sfclayrev_init(errmsg,errflg) end subroutine sf_sfclayrev_init !================================================================================================================= - subroutine sf_sfclayrev_final(errmsg,errflg) +!>\section arg_table_sf_sfclayrev_finalize +!!\html\include sf_sfclayrev_finalize.html +!! + subroutine sf_sfclayrev_finalize(errmsg,errflg) !================================================================================================================= !--- output arguments: @@ -114,12 +66,15 @@ subroutine sf_sfclayrev_final(errmsg,errflg) !----------------------------------------------------------------------------------------------------------------- - errmsg = 'sf_sfclayrev_final OK' + errmsg = 'sf_sfclayrev_finalize OK' errflg = 0 - end subroutine sf_sfclayrev_final + end subroutine sf_sfclayrev_finalize !================================================================================================================= +!>\section arg_table_sf_sfclayrev_run +!!\html\include sf_sfclayrev_run.html +!! subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & cp,g,rovcp,r,xlv,psfcpa,chs,chs2,cqs2, & cpm,pblh,rmol,znt,ust,mavail,zol,mol, & @@ -128,8 +83,8 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & u10,v10,th2,t2,q2,flhc,flqc,qgh, & qsfc,lh,gz1oz0,wspd,br,isfflx,dx, & svp1,svp2,svp3,svpt0,ep1,ep2, & - karman,eomeg,stbolt,p1000mb, & - shalwater_z0,water_depth,shalwater_depth, & + karman,p1000mb,lakemask, & + shalwater_z0,water_depth, & isftcflx,iz0tlnd,scm_force_flux, & ustm,ck,cka,cd,cda, & its,ite,errmsg,errflg & @@ -137,28 +92,28 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & !================================================================================================================= !--- input arguments: - integer,intent(in):: its,ite + logical,intent(in):: isfflx + logical,intent(in):: shalwater_z0 + logical,intent(in),optional:: scm_force_flux - integer,intent(in):: isfflx - integer,intent(in):: shalwater_z0 + integer,intent(in):: its,ite integer,intent(in),optional:: isftcflx, iz0tlnd - integer,intent(in),optional:: scm_force_flux real(kind=kind_phys),intent(in):: svp1,svp2,svp3,svpt0 - real(kind=kind_phys),intent(in):: ep1,ep2,karman,eomeg,stbolt - real(kind=kind_phys),intent(in):: P1000mb + real(kind=kind_phys),intent(in):: ep1,ep2,karman + real(kind=kind_phys),intent(in):: p1000mb real(kind=kind_phys),intent(in):: cp,g,rovcp,r,xlv - real(kind=kind_phys),intent(in):: shalwater_depth - real(kind=kind_phys),intent(in),dimension(its:ite):: & + real(kind=kind_phys),intent(in),dimension(its:):: & mavail, & pblh, & psfcpa, & tsk, & xland, & + lakemask, & water_depth - real(kind=kind_phys),intent(in),dimension(its:ite):: & + real(kind=kind_phys),intent(in),dimension(its:):: & dx, & dz8w1d, & ux, & @@ -171,7 +126,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & character(len=*),intent(out):: errmsg integer,intent(out):: errflg - real(kind=kind_phys),intent(out),dimension(its:ite):: & + real(kind=kind_phys),intent(out),dimension(its:):: & lh, & u10, & v10, & @@ -179,14 +134,14 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & t2, & q2 - real(kind=kind_phys),intent(out),dimension(its:ite),optional:: & + real(kind=kind_phys),intent(out),dimension(its:),optional:: & ck, & cka, & cd, & cda !--- inout arguments: - real(kind=kind_phys),intent(inout),dimension(its:ite):: & + real(kind=kind_phys),intent(inout),dimension(its:):: & regime, & hfx, & qfx, & @@ -211,7 +166,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & flqc, & qgh - real(kind=kind_phys),intent(inout),dimension(its:ite),optional:: & + real(kind=kind_phys),intent(inout),dimension(its:),optional:: & ustm !--- local variables: @@ -219,6 +174,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & real(kind=kind_phys),parameter:: xka = 2.4e-5 real(kind=kind_phys),parameter:: prt = 1. + real(kind=kind_phys),parameter:: salinity_factor = 0.98 real(kind=kind_phys):: pl,thcon,tvcon,e1 real(kind=kind_phys):: zl,tskv,dthvdz,dthvm,vconv,rzol,rzol2,rzol10,zol2,zol10 @@ -320,9 +276,11 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & thvx(i)=thx(i)*tvcon scr4(i)=scr3(i)*tvcon 50 continue -! +! do 60 i=its,ite e1=svp1*exp(svp2*(tgdsa(i)-svpt0)/(tgdsa(i)-svp3)) + !the saturation vapor pressure for salty water is on average 2% lower + if(xland(i).gt.1.5 .and. lakemask(i).eq.0.) e1=e1*salinity_factor !for land points qsfc can come from previous time step if(xland(i).gt.1.5.or.qsfc(i).le.0.0)qsfc(i)=ep2*e1/(psfc(i)-e1) !QGH CHANGED TO USE LOWEST-LEVEL AIR TEMP CONSISTENT WITH MYJSFC CHANGE @@ -333,7 +291,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & cpm(i)=cp*(1.+0.8*qx(i)) 60 continue 80 continue - + !-----COMPUTE THE HEIGHT OF FULL- AND HALF-SIGMA LEVELS ABOVE GROUND ! LEVEL, AND THE LAYER THICKNESSES. @@ -823,7 +781,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & !-----COMPUTE THE SURFACE SENSIBLE AND LATENT HEAT FLUXES: if(present(scm_force_flux) ) then - if(scm_force_flux.eq.1) goto 350 + if(scm_force_flux) goto 350 endif do i = its,ite qfx(i)=0. @@ -831,15 +789,15 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & enddo 350 continue - if(isfflx.eq.0) goto 410 - + if(.not. isfflx) goto 410 + !-----OVER WATER, ALTER ROUGHNESS LENGTH (ZNT) ACCORDING TO WIND (UST). do 360 i = its,ite if((xland(i)-1.5).ge.0)then ! znt(i)=czo*ust(i)*ust(i)/g+ozo ! PSH - formulation for depth-dependent roughness from ! ... Jimenez and Dudhia, 2018 - if(shalwater_z0 .eq. 1) then + if(shalwater_z0) then znt(i) = depth_dependent_z0(water_depth(i),znt(i),ust(i)) else !Since V3.7 (ref: EC Physics document for Cy36r1) @@ -892,15 +850,15 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & !IF(IDRY.EQ.1)GOTO 390 ! if(present(scm_force_flux)) then - if(scm_force_flux.eq.1) goto 405 + if(scm_force_flux) goto 405 endif do 370 i = its,ite qfx(i)=flqc(i)*(qsfc(i)-qx(i)) - qfx(i)=amax1(qfx(i),0.) +! qfx(i)=amax1(qfx(i),0.) lh(i)=xlv*qfx(i) 370 continue - + !-----COMPUTE SURFACE HEAT FLUX: ! 390 continue @@ -915,7 +873,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & ! endif elseif(xland(i)-1.5.lt.0.)then hfx(i)=flhc(i)*(thgb(i)-thx(i)) - hfx(i)=amax1(hfx(i),-250.) +! hfx(i)=amax1(hfx(i),-250.) endif 400 continue @@ -942,7 +900,7 @@ subroutine sf_sfclayrev_run(ux,vx,t1d,qv1d,p1d,dz8w1d, & cqs2(i)=ust(i)*karman/denomq2(i) chs2(i)=ust(i)*karman/denomt2(i) enddo - + 410 continue !jdf diff --git a/src/core_atmosphere/physics/physics_wrf/Makefile b/src/core_atmosphere/physics/physics_wrf/Makefile index a3b89e2010..343ac293a7 100644 --- a/src/core_atmosphere/physics/physics_wrf/Makefile +++ b/src/core_atmosphere/physics/physics_wrf/Makefile @@ -45,7 +45,8 @@ OBJS = \ bl_mynn_pre.o \ cu_ntiedtke_post.o \ cu_ntiedtke_pre.o \ - sf_mynn_pre.o + sf_mynn_pre.o \ + sf_sfclayrev_pre.o physics_wrf: $(OBJS) @@ -86,6 +87,9 @@ module_sf_bep_bem.o: \ module_sf_mynn.o: \ sf_mynn_pre.o +module_sf_sfclayrev.o: \ + sf_sfclayrev_pre.o + module_sf_noahdrv.o: \ module_sf_bem.o \ module_sf_bep.o \ diff --git a/src/core_atmosphere/physics/physics_wrf/module_sf_sfclayrev.F b/src/core_atmosphere/physics/physics_wrf/module_sf_sfclayrev.F index ce6e71bff8..ac70882989 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_sf_sfclayrev.F +++ b/src/core_atmosphere/physics/physics_wrf/module_sf_sfclayrev.F @@ -1,11 +1,9 @@ !================================================================================================================= module module_sf_sfclayrev - use mpas_log - use ccpp_kinds,only: kind_phys - - use sf_sfclayrev,only: sf_sfclayrev_run, & - sf_sfclayrev_timestep_init + use mpas_kind_types,only: kind_phys => RKIND + use sf_sfclayrev,only: sf_sfclayrev_run + use sf_sfclayrev_pre,only: sf_sfclayrev_pre_run implicit none private @@ -24,13 +22,12 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & u10,v10,th2,t2,q2, & gz1oz0,wspd,br,isfflx,dx, & svp1,svp2,svp3,svpt0,ep1,ep2, & - karman,eomeg,stbolt, & - p1000mb, & + karman,p1000mb,lakemask, & ids,ide,jds,jde,kds,kde, & ims,ime,jms,jme,kms,kme, & its,ite,jts,jte,kts,kte, & ustm,ck,cka,cd,cda,isftcflx,iz0tlnd, & - shalwater_z0,water_depth,shalwater_depth, & + shalwater_z0,water_depth, & scm_force_flux,errmsg,errflg) !================================================================================================================= @@ -45,10 +42,9 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & integer,intent(in),optional:: scm_force_flux real(kind=kind_phys),intent(in):: svp1,svp2,svp3,svpt0 - real(kind=kind_phys),intent(in):: ep1,ep2,karman,eomeg,stbolt - real(kind=kind_phys),intent(in):: P1000mb + real(kind=kind_phys),intent(in):: ep1,ep2,karman + real(kind=kind_phys),intent(in):: p1000mb real(kind=kind_phys),intent(in):: cp,g,rovcp,r,xlv - real(kind=kind_phys),intent(in):: shalwater_depth real(kind=kind_phys),intent(in),dimension(ims:ime,jms:jme):: & dx, & @@ -57,6 +53,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & psfc, & tsk, & xland, & + lakemask, & water_depth real(kind=kind_phys),intent(in),dimension(ims:ime,kms:kme,jms:jme):: & @@ -115,11 +112,15 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & ustm !--- local variables and arrays: + logical:: l_isfflx + logical:: l_shalwater_z0 + logical:: l_scm_force_flux + integer:: i,j,k real(kind=kind_phys),dimension(its:ite):: dz1d,u1d,v1d,qv1d,p1d,t1d real(kind=kind_phys),dimension(its:ite):: & - dx_hv,mavail_hv,pblh_hv,psfc_hv,tsk_hv,xland_hv,water_depth_hv + dx_hv,mavail_hv,pblh_hv,psfc_hv,tsk_hv,xland_hv,water_depth_hv,lakemask_hv real(kind=kind_phys),dimension(its:ite,kts:kte):: & dz_hv,u_hv,v_hv,qv_hv,p_hv,t_hv @@ -137,6 +138,13 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & !----------------------------------------------------------------------------------------------------------------- + l_isfflx = .false. + l_shalwater_z0 = .false. + l_scm_force_flux = .false. + if(isfflx .eq. 1) l_isfflx = .true. + if(shalwater_z0 .eq. 1) l_shalwater_z0 = .true. + if(scm_force_flux .eq. 1) l_scm_force_flux = .true. + do j = jts,jte do i = its,ite @@ -147,6 +155,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & psfc_hv(i) = psfc(i,j) tsk_hv(i) = tsk(i,j) xland_hv(i) = xland(i,j) + lakemask_hv(i) = lakemask(i,j) water_depth_hv(i) = water_depth(i,j) do k = kts,kte @@ -190,7 +199,7 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & enddo endif - call sf_sfclayrev_timestep_init(dz2d=dz_hv,u2d=u_hv,v2d=v_hv,qv2d=qv_hv,p2d=p_hv,t2d=t_hv, & + call sf_sfclayrev_pre_run(dz2d=dz_hv,u2d=u_hv,v2d=v_hv,qv2d=qv_hv,p2d=p_hv,t2d=t_hv, & dz1d=dz1d,u1d=u1d,v1d=v1d,qv1d=qv1d,p1d=p1d,t1d=t1d, & its=its,ite=ite,kts=kts,kte=kte,errmsg=errmsg,errflg=errflg) @@ -199,20 +208,16 @@ subroutine sfclayrev(u3d,v3d,t3d,qv3d,p3d,dz8w, & chs2=chs2_hv,cqs2=cqs2_hv,cpm=cpm_hv,pblh=pblh_hv, & rmol=rmol_hv,znt=znt_hv,ust=ust_hv,mavail=mavail_hv, & zol=zol_hv,mol=mol_hv,regime=regime_hv,psim=psim_hv, & - psih=psih_hv,fm=fm_hv,fh=fh_hv,xland=xland_hv, & + psih=psih_hv,fm=fm_hv,fh=fh_hv,xland=xland_hv,lakemask=lakemask_hv, & hfx=hfx_hv,qfx=qfx_hv,tsk=tsk_hv,u10=u10_hv, & v10=v10_hv,th2=th2_hv,t2=t2_hv,q2=q2_hv,flhc=flhc_hv, & flqc=flqc_hv,qgh=qgh_hv,qsfc=qsfc_hv,lh=lh_hv, & - gz1oz0=gz1oz0_hv,wspd=wspd_hv,br=br_hv,isfflx=isfflx,dx=dx_hv, & + gz1oz0=gz1oz0_hv,wspd=wspd_hv,br=br_hv,isfflx=l_isfflx,dx=dx_hv, & svp1=svp1,svp2=svp2,svp3=svp3,svpt0=svpt0,ep1=ep1,ep2=ep2,karman=karman, & - eomeg=eomeg,stbolt=stbolt,p1000mb=p1000mb, & - shalwater_z0=shalwater_z0,water_depth=water_depth_hv, & - shalwater_depth=shalwater_depth, & + p1000mb=p1000mb,shalwater_z0=l_shalwater_z0,water_depth=water_depth_hv, & + isftcflx=isftcflx,iz0tlnd=iz0tlnd,scm_force_flux=l_scm_force_flux, & + ustm=ustm_hv,ck=ck_hv,cka=cka_hv,cd=cd_hv,cda=cda_hv, & its=its,ite=ite,errmsg=errmsg,errflg=errflg & -#if ( ( EM_CORE == 1 ) || ( defined(mpas) ) ) - ,isftcflx=isftcflx,iz0tlnd=iz0tlnd,scm_force_flux=scm_force_flux, & - ustm=ustm_hv,ck=ck_hv,cka=cka_hv,cd=cd_hv,cda=cda_hv & -#endif ) do i = its,ite diff --git a/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F b/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F new file mode 100644 index 0000000000..f33c4a5c9f --- /dev/null +++ b/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F @@ -0,0 +1,101 @@ +!================================================================================================================= + module sf_sfclayrev_pre + use ccpp_kinds,only: kind_phys + + implicit none + private + public:: sf_sfclayrev_pre_init, & + sf_sfclayrev_pre_finalize, & + sf_sfclayrev_pre_run + + + contains + + +!================================================================================================================= +!>\section arg_table_sf_sfclayrev_pre_init +!!\html\include sf_sfclayrev_pre_init.html +!! + subroutine sf_sfclayrev_pre_init(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine sf_sfclayrev_pre_init + +!================================================================================================================= +!>\section arg_table_sf_sfclayrev_pre_finalize +!!\html\include sf_sfclayrev_pre_finalize.html +!! + subroutine sf_sfclayrev_pre_finalize(errmsg,errflg) +!================================================================================================================= + +!--- output arguments: + character(len=*),intent(out):: & + errmsg ! output error message (-). + + integer,intent(out):: & + errflg ! output error flag (-). + +!----------------------------------------------------------------------------------------------------------------- + +!--- output error flag and message: + errflg = 0 + errmsg = " " + + end subroutine sf_sfclayrev_pre_finalize + +!================================================================================================================= +!>\section arg_table_sf_sfclayrev_pre_run +!!\html\include sf_sfclayrev_pre_run.html +!! + subroutine sf_sfclayrev_pre_run(dz2d,u2d,v2d,qv2d,p2d,t2d,dz1d,u1d,v1d,qv1d,p1d,t1d, & + its,ite,kts,kte,errmsg,errflg) +!================================================================================================================= + +!--- input arguments: + integer,intent(in):: its,ite,kts,kte + + real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & + dz2d,u2d,v2d,qv2d,p2d,t2d + +!--- output arguments: + character(len=*),intent(out):: errmsg + integer,intent(out):: errflg + + real(kind=kind_phys),intent(out),dimension(its:ite):: & + dz1d,u1d,v1d,qv1d,p1d,t1d + +!--- local variables: + integer:: i + +!----------------------------------------------------------------------------------------------------------------- + + do i = its,ite + dz1d(i) = dz2d(i,kts) + u1d(i) = u2d(i,kts) + v1d(i) = v2d(i,kts) + qv1d(i) = qv2d(i,kts) + p1d(i) = p2d(i,kts) + t1d(i) = t2d(i,kts) + enddo + + errmsg = 'sf_sfclayrev_pre_run OK' + errflg = 0 + + end subroutine sf_sfclayrev_pre_run + +!================================================================================================================= + end module sf_sfclayrev_pre +!================================================================================================================= From 95256002bcec17dba371561f9da25ed3dfbe1b33 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Mon, 20 May 2024 19:45:46 -0600 Subject: [PATCH 021/115] * In ./src/core_atmosphere/physics/physics_mmm, updated bl_mynn.F90 with CCPP-compliance requirements for declarations of arrays with intent "in", "inout", and "out". --- .../physics/physics_mmm/bl_mynn.F90 | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 b/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 index b41b2c538b..ca6a68b105 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 @@ -201,7 +201,7 @@ subroutine bl_mynn_run & real(kind=kind_phys),intent(in):: & delt - real(kind=kind_phys),intent(in),dimension(its:ite):: & + real(kind=kind_phys),intent(in),dimension(its:):: & dx, &! xland, &! ps, &! @@ -217,7 +217,7 @@ subroutine bl_mynn_run & voce, &! znt ! - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(in),dimension(its:,:):: & dz, &! u, &! v, &! @@ -228,7 +228,7 @@ subroutine bl_mynn_run & rho, &! rthraten ! - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(in),dimension(its:,:):: & sqv, &! sqc, &! sqi, &! @@ -240,26 +240,26 @@ subroutine bl_mynn_run & qnbca, &! qozone ! - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(in),dimension(its:,:):: & pattern_spp_pbl - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kme):: & + real(kind=kind_phys),intent(in),dimension(its:,:):: & w ! !inout arguments: - integer,intent(inout),dimension(its:ite):: & + integer,intent(inout),dimension(its:):: & kpbl, &! ktop_plume ! - real(kind=kind_phys),intent(inout),dimension(its:ite):: & + real(kind=kind_phys),intent(inout),dimension(its:):: & pblh - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & cldfra_bl, &! qc_bl, &! qi_bl ! - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & el_pbl, &! qke, &! qke_adv, &! @@ -269,7 +269,7 @@ subroutine bl_mynn_run & sh, &! sm ! - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & rublten, &! rvblten, &! rthblten, &! @@ -284,7 +284,7 @@ subroutine bl_mynn_run & rqnbcablten, &! rqozblten ! - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & edmf_a, &! edmf_w, &! edmf_qt, &! @@ -296,7 +296,7 @@ subroutine bl_mynn_run & det_thl, &! det_sqv ! - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte),optional:: & + real(kind=kind_phys),intent(inout),dimension(its:,:),optional:: & edmf_a_dd, &! edmf_w_dd, &! edmf_qt_dd, &! @@ -312,16 +312,16 @@ subroutine bl_mynn_run & integer,intent(out):: & errflg ! output error flag (-). - real(kind=kind_phys),intent(out),dimension(its:ite):: & + real(kind=kind_phys),intent(out),dimension(:):: & maxwidth, &! maxmf, &! ztop_plume - real(kind=kind_phys),intent(out),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(out),dimension(its:,:):: & exch_h, &! exch_m ! - real(kind=kind_phys),intent(out),dimension(its:ite,kts:kte),optional:: & + real(kind=kind_phys),intent(out),dimension(its:,:),optional:: & dqke, &! qwt, &! qshear, &! From da5af8b9393286fbafb365da95f892259041470e Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Fri, 24 May 2024 10:26:48 -0600 Subject: [PATCH 022/115] * In ./src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90, added doxygen comments in subroutine cu_ntiedtke_run. --- src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 index e2ba844ec9..25249e7d1e 100644 --- a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 +++ b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 @@ -141,6 +141,9 @@ subroutine cu_ntiedtke_finalize(errmsg,errflg) end subroutine cu_ntiedtke_finalize !================================================================================================================= +!>\section arg_table_cu_ntiedtke_run +!!\html\include cu_ntiedtke_run.html +!! ! level 1 subroutine 'cu_ntiedkte_run' subroutine cu_ntiedtke_run(pu,pv,pt,pqv,pqc,pqi,pqvf,ptf,poz,pzz,pomg, & & pap,paph,evap,hfx,zprecc,lndj,lq,km,km1,dt,dx,errmsg,errflg) From 2bc7b6bd368ced2c0be3e411ccbd47654efb811d Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Wed, 22 May 2024 14:21:49 -0600 Subject: [PATCH 023/115] * In ./src/core_atmosphere/physics/physics_mmm, updated mp_wsm6.F90 with CCPP-compliance requirements for declarations of arrays with intent "in", "inout", and "out". --- .../physics/physics_mmm/mp_wsm6.F90 | 38 +++++++++++-------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 b/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 index ca345b3ba8..126e6171a8 100644 --- a/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 +++ b/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 @@ -7,9 +7,9 @@ module mp_wsm6 implicit none private - public:: mp_wsm6_run, & - mp_wsm6_init, & - mp_wsm6_final, & + public:: mp_wsm6_run, & + mp_wsm6_init, & + mp_wsm6_finalize, & refl10cm_wsm6 real(kind=kind_phys),parameter,private:: dtcldcr = 120. ! maximum time step for minor loops @@ -67,6 +67,9 @@ module mp_wsm6 !================================================================================================================= +!>\section arg_table_mp_wsm6_init +!!\html\include mp_wsm6_init.html +!! subroutine mp_wsm6_init(den0,denr,dens,cl,cpv,hail_opt,errmsg,errflg) !================================================================================================================= @@ -186,7 +189,10 @@ subroutine mp_wsm6_init(den0,denr,dens,cl,cpv,hail_opt,errmsg,errflg) end subroutine mp_wsm6_init !================================================================================================================= - subroutine mp_wsm6_final(errmsg,errflg) +!>\section arg_table_mp_wsm6_finalize +!!\html\include mp_wsm6_finalize.html +!! + subroutine mp_wsm6_finalize(errmsg,errflg) !================================================================================================================= !--- output arguments: @@ -195,12 +201,15 @@ subroutine mp_wsm6_final(errmsg,errflg) !----------------------------------------------------------------------------------------------------------------- - errmsg = 'mp_wsm6_final OK' + errmsg = 'mp_wsm6_finalize OK' errflg = 0 - end subroutine mp_wsm6_final + end subroutine mp_wsm6_finalize !================================================================================================================= +!>\section arg_table_mp_wsm6_run +!!\html\include mp_wsm6_run.html +!! subroutine mp_wsm6_run(t,q,qc,qi,qr,qs,qg,den,p,delz,delt, & g,cpd,cpv,rd,rv,t0c,ep1,ep2,qmin,xls, & xlv0,xlf0,den0,denr,cliq,cice,psat, & @@ -250,7 +259,7 @@ subroutine mp_wsm6_run(t,q,qc,qi,qr,qs,qg,den,p,delz,delt, & !input arguments: integer,intent(in):: its,ite,kts,kte - real(kind=kind_phys),intent(in),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(in),dimension(its:,:):: & den, & p, & delz @@ -275,30 +284,29 @@ subroutine mp_wsm6_run(t,q,qc,qi,qr,qs,qg,den,p,delz,delt, & denr !inout arguments: - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & t -real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte):: & + real(kind=kind_phys),intent(inout),dimension(its:,:):: & q, & qc, & qi, & qr, & qs, & qg -real(kind=kind_phys),intent(inout),dimension(its:ite):: & + real(kind=kind_phys),intent(inout),dimension(its:):: & rain, & rainncv, & sr -real(kind=kind_phys),intent(inout),dimension(its:ite),optional:: & + real(kind=kind_phys),intent(inout),dimension(its:),optional:: & snow, & snowncv -real(kind=kind_phys),intent(inout),dimension(its:ite),optional:: & + + real(kind=kind_phys),intent(inout),dimension(its:),optional:: & graupel, & graupelncv - - real(kind=kind_phys),intent(inout),dimension(its:ite,kts:kte), & - optional:: & + real(kind=kind_phys),intent(inout),dimension(its:,:),optional:: & rainprod2d, & evapprod2d From 469e8664f3637f7838159d8d56dceb06d0a31eec Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Wed, 22 May 2024 18:13:34 -0600 Subject: [PATCH 024/115] * In ./src/core_atmosphere/physics:, -> renamed module ccpp_kinds.F to ccpp_kind_types.F. -> in ./physics_wrf, changed "use ccpp_kinds" to "use ccpp_kind_types" in modules bl_mynn_post.F, bl_mynn_pre.F, cu_ntiedtke_post.F, sf_mynn_pre.F, sf_sfclayrev_pre. -> in ./physics_mmm, changed "use ccpp_kinds" to "use ccpp_kind_types" in modules bl_gwdo.F90, cu_ntiedtke.F90, mp_radar.F90, mp_wsm6.F90, sf_sfclayrev.F90, and sf_mynn.F90. -> in ./physics_mmm, changed "use mpas_kind_types" to "use ccpp_kind_types" in modules bl_mynn.F90, bl_mynn_subroutines.F90, and mynn_shared.F90. -> in ./physics_mmm, also updated mp_wsm6_effectRad.F90, with CCPP-compliance requirements for declarations of arrays with intent "in", "inout", and "out". -> Modified Makefile accordingly. --- src/core_atmosphere/physics/Makefile | 2 +- src/core_atmosphere/physics/ccpp_kind_types.F | 4 ++ src/core_atmosphere/physics/ccpp_kinds.F | 4 -- .../physics/physics_mmm/bl_gwdo.F90 | 2 +- .../physics/physics_mmm/bl_mynn.F90 | 2 +- .../physics_mmm/bl_mynn_subroutines.F90 | 4 +- .../physics/physics_mmm/bl_ysu.F90 | 2 +- .../physics/physics_mmm/cu_ntiedtke.F90 | 4 +- .../physics/physics_mmm/mp_radar.F90 | 2 +- .../physics/physics_mmm/mp_wsm6.F90 | 2 +- .../physics/physics_mmm/mp_wsm6_effectRad.F90 | 39 ++++++++++++------- .../physics/physics_mmm/mynn_shared.F90 | 2 +- .../physics/physics_mmm/sf_mynn.F90 | 2 +- .../physics/physics_mmm/sf_sfclayrev.F90 | 2 +- .../physics/physics_wrf/bl_mynn_post.F | 2 +- .../physics/physics_wrf/bl_mynn_pre.F | 2 +- .../physics/physics_wrf/cu_ntiedtke_post.F | 2 +- .../physics/physics_wrf/cu_ntiedtke_pre.F | 2 +- .../physics/physics_wrf/sf_mynn_pre.F | 2 +- .../physics/physics_wrf/sf_sfclayrev_pre.F | 2 +- 20 files changed, 47 insertions(+), 38 deletions(-) create mode 100644 src/core_atmosphere/physics/ccpp_kind_types.F delete mode 100644 src/core_atmosphere/physics/ccpp_kinds.F diff --git a/src/core_atmosphere/physics/Makefile b/src/core_atmosphere/physics/Makefile index 39f7230f4b..80d6a048eb 100644 --- a/src/core_atmosphere/physics/Makefile +++ b/src/core_atmosphere/physics/Makefile @@ -10,7 +10,7 @@ dummy: echo "****** compiling physics ******" OBJS_init = \ - ccpp_kinds.o \ + ccpp_kind_types.o \ mpas_atmphys_constants.o \ mpas_atmphys_date_time.o \ mpas_atmphys_functions.o \ diff --git a/src/core_atmosphere/physics/ccpp_kind_types.F b/src/core_atmosphere/physics/ccpp_kind_types.F new file mode 100644 index 0000000000..cdc75ccfa8 --- /dev/null +++ b/src/core_atmosphere/physics/ccpp_kind_types.F @@ -0,0 +1,4 @@ +module ccpp_kind_types + use mpas_kind_types,only: kind_phys => RKIND, kind_phys8 => R8KIND + contains +end module ccpp_kind_types diff --git a/src/core_atmosphere/physics/ccpp_kinds.F b/src/core_atmosphere/physics/ccpp_kinds.F deleted file mode 100644 index af633a84ee..0000000000 --- a/src/core_atmosphere/physics/ccpp_kinds.F +++ /dev/null @@ -1,4 +0,0 @@ -module ccpp_kinds - use mpas_kind_types,only: kind_phys => RKIND - contains -end module ccpp_kinds diff --git a/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 b/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 index 0bdf77297b..b314634539 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_gwdo.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module bl_gwdo - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 b/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 index ca6a68b105..783b996ff4 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_mynn.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module bl_mynn - use mpas_kind_types,only: kind_phys => RKIND + use ccpp_kind_types,only: kind_phys use bl_mynn_common,only: & cp , cpv , cliq , cice , ep_1 , ep_2 , ep_3 , grav , karman , p1000mb , & diff --git a/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 b/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 index 324c368517..180e7cf6c9 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_mynn_subroutines.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module bl_mynn_common - use mpas_kind_types,only: kind_phys => RKIND + use ccpp_kind_types,only: kind_phys implicit none save @@ -323,7 +323,7 @@ end module bl_mynn_common ! Many of these changes are now documented in references listed above. !==================================================================== MODULE bl_mynn_subroutines - use mpas_kind_types,only: kind_phys => RKIND,kind_phys8 => R8KIND + use ccpp_kind_types,only: kind_phys,kind_phys8 use bl_mynn_common,only: & b1 , b2 , cice , cliq , cp , & cpv , ep_2 , ep_3 , grav , gtr , & diff --git a/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 b/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 index 0a6d2af71d..1eb049684b 100644 --- a/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 +++ b/src/core_atmosphere/physics/physics_mmm/bl_ysu.F90 @@ -1,7 +1,7 @@ #define NEED_B4B_DURING_CCPP_TESTING 1 !================================================================================================================= module bl_ysu - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 index 25249e7d1e..e1d266d06f 100644 --- a/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 +++ b/src/core_atmosphere/physics/physics_mmm/cu_ntiedtke.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module cu_ntiedtke_common - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none @@ -60,7 +60,7 @@ end module cu_ntiedtke_common !================================================================================================================= module cu_ntiedtke - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys use cu_ntiedtke_common diff --git a/src/core_atmosphere/physics/physics_mmm/mp_radar.F90 b/src/core_atmosphere/physics/physics_mmm/mp_radar.F90 index 08199da7df..851e5d3f69 100644 --- a/src/core_atmosphere/physics/physics_mmm/mp_radar.F90 +++ b/src/core_atmosphere/physics/physics_mmm/mp_radar.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module mp_radar - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 b/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 index 126e6171a8..ec2d1dca3c 100644 --- a/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 +++ b/src/core_atmosphere/physics/physics_mmm/mp_wsm6.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module mp_wsm6 - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys use module_libmassv,only: vrec,vsqrt use mp_radar diff --git a/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 b/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 index d54cf74b66..217b4e0a12 100644 --- a/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 +++ b/src/core_atmosphere/physics/physics_mmm/mp_wsm6_effectRad.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module mp_wsm6_effectrad - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys use mp_wsm6,only: alpha,n0s,n0smax,pidn0s,pidnc @@ -8,15 +8,18 @@ module mp_wsm6_effectrad implicit none private - public:: mp_wsm6_effectRad_run, & - mp_wsm6_effectrad_init, & - mp_wsm6_effectRad_final + public:: mp_wsm6_effectRad_run, & + mp_wsm6_effectrad_init, & + mp_wsm6_effectRad_finalize contains !================================================================================================================= +!>\section arg_table_mp_wsm6_effectRad_init +!!\html\include mp_wsm6_effectRad_init.html +!! subroutine mp_wsm6_effectRad_init(errmsg,errflg) !================================================================================================================= @@ -32,7 +35,10 @@ subroutine mp_wsm6_effectRad_init(errmsg,errflg) end subroutine mp_wsm6_effectRad_init !================================================================================================================= - subroutine mp_wsm6_effectRad_final(errmsg,errflg) +!>\section arg_table_mp_wsm6_effectRad_finalize +!!\html\include mp_wsm6_effectRad_finalize.html +!! + subroutine mp_wsm6_effectRad_finalize(errmsg,errflg) !================================================================================================================= !output arguments: @@ -41,12 +47,15 @@ subroutine mp_wsm6_effectRad_final(errmsg,errflg) !----------------------------------------------------------------------------------------------------------------- - errmsg = 'mp_wsm6_effectRad_final OK' + errmsg = 'mp_wsm6_effectRad_finalize OK' errflg = 0 - end subroutine mp_wsm6_effectRad_final + end subroutine mp_wsm6_effectRad_finalize !================================================================================================================= +!>\section arg_table_mp_wsm6_effectRad_run +!!\html\include mp_wsm6_effectRad_run.html +!! subroutine mp_wsm6_effectRad_run(do_microp_re,t,qc,qi,qs,rho,qmin,t0c,re_qc_bg,re_qi_bg,re_qs_bg, & re_qc_max,re_qi_max,re_qs_max,re_qc,re_qi,re_qs,its,ite,kts,kte, & errmsg,errflg) @@ -67,14 +76,14 @@ subroutine mp_wsm6_effectRad_run(do_microp_re,t,qc,qi,qs,rho,qmin,t0c,re_qc_bg,r real(kind=kind_phys),intent(in):: t0c real(kind=kind_phys),intent(in):: re_qc_bg,re_qi_bg,re_qs_bg real(kind=kind_phys),intent(in):: re_qc_max,re_qi_max,re_qs_max - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(in):: t - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(in):: qc - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(in):: qi - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(in):: qs - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(in):: rho - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(inout):: re_qc - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(inout):: re_qi - real(kind=kind_phys),dimension(its:ite,kts:kte),intent(inout):: re_qs + real(kind=kind_phys),dimension(its:,:),intent(in):: t + real(kind=kind_phys),dimension(its:,:),intent(in):: qc + real(kind=kind_phys),dimension(its:,:),intent(in):: qi + real(kind=kind_phys),dimension(its:,:),intent(in):: qs + real(kind=kind_phys),dimension(its:,:),intent(in):: rho + real(kind=kind_phys),dimension(its:,:),intent(inout):: re_qc + real(kind=kind_phys),dimension(its:,:),intent(inout):: re_qi + real(kind=kind_phys),dimension(its:,:),intent(inout):: re_qs !...Output arguments: character(len=*),intent(out):: errmsg diff --git a/src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 b/src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 index ee74077ba3..d45da366b9 100644 --- a/src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 +++ b/src/core_atmosphere/physics/physics_mmm/mynn_shared.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module mynn_shared - use mpas_kind_types,only: kind_phys => RKIND + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 b/src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 index e324ef4aab..2d0719ee08 100644 --- a/src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 +++ b/src/core_atmosphere/physics/physics_mmm/sf_mynn.F90 @@ -58,7 +58,7 @@ module sf_mynn !NOTE: This code was primarily tested in combination with the RUC LSM. ! Performance with the Noah (or other) LSM is relatively unknown. !------------------------------------------------------------------- - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys use mynn_shared,only: esat_blend,qsat_blend,xl_blend implicit none diff --git a/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 b/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 index 6fe8bc822f..d05ff3e45a 100644 --- a/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 +++ b/src/core_atmosphere/physics/physics_mmm/sf_sfclayrev.F90 @@ -1,6 +1,6 @@ !================================================================================================================= module sf_sfclayrev - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F b/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F index e38eb91985..ffca583a89 100644 --- a/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F +++ b/src/core_atmosphere/physics/physics_wrf/bl_mynn_post.F @@ -1,6 +1,6 @@ !================================================================================================================= module bl_mynn_post - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/bl_mynn_pre.F b/src/core_atmosphere/physics/physics_wrf/bl_mynn_pre.F index dfd5831203..5b76969601 100644 --- a/src/core_atmosphere/physics/physics_wrf/bl_mynn_pre.F +++ b/src/core_atmosphere/physics/physics_wrf/bl_mynn_pre.F @@ -1,6 +1,6 @@ !================================================================================================================= module bl_mynn_pre - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F index 3996fdc60f..e08c87d9f5 100644 --- a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F +++ b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_post.F @@ -1,6 +1,6 @@ !================================================================================================================= module cu_ntiedtke_post - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F index ef1fab8e4d..84d2d89a54 100644 --- a/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F +++ b/src/core_atmosphere/physics/physics_wrf/cu_ntiedtke_pre.F @@ -1,6 +1,6 @@ !================================================================================================================= module cu_ntiedtke_pre - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/sf_mynn_pre.F b/src/core_atmosphere/physics/physics_wrf/sf_mynn_pre.F index e4d07a85d4..5e9ab3f61b 100644 --- a/src/core_atmosphere/physics/physics_wrf/sf_mynn_pre.F +++ b/src/core_atmosphere/physics/physics_wrf/sf_mynn_pre.F @@ -1,6 +1,6 @@ !================================================================================================================= module sf_mynn_pre - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private diff --git a/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F b/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F index f33c4a5c9f..bff574dca5 100644 --- a/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F +++ b/src/core_atmosphere/physics/physics_wrf/sf_sfclayrev_pre.F @@ -1,6 +1,6 @@ !================================================================================================================= module sf_sfclayrev_pre - use ccpp_kinds,only: kind_phys + use ccpp_kind_types,only: kind_phys implicit none private From 474c9a90c7c92230af46908b225605c1df901489 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Wed, 22 May 2024 19:06:20 -0600 Subject: [PATCH 025/115] * As an intermediary step to moving ./physics_mmm to its own repository and then removing ./physics_mmm/Makefile which is currently specific to MPAS, we first renamed Makefile to Makefile.mpas. We modified ./physics/Makefile accordingly. --- src/core_atmosphere/physics/Makefile | 4 ++-- .../physics/physics_mmm/{Makefile => Makefile.mpas} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename src/core_atmosphere/physics/physics_mmm/{Makefile => Makefile.mpas} (100%) diff --git a/src/core_atmosphere/physics/Makefile b/src/core_atmosphere/physics/Makefile index 80d6a048eb..241259ad44 100644 --- a/src/core_atmosphere/physics/Makefile +++ b/src/core_atmosphere/physics/Makefile @@ -52,7 +52,7 @@ lookup_tables: ./checkout_data_files.sh core_physics_mmm: core_physics_init - (cd physics_mmm; $(MAKE) all) + (cd physics_mmm; $(MAKE) -f Makefile.mpas all) core_physics_wrf: core_physics_init core_physics_mmm (cd physics_wrf; $(MAKE) all COREDEF="$(COREDEF)") @@ -208,7 +208,7 @@ mpas_atmphys_update.o: \ clean: $(RM) *.o *.mod *.f90 libphys.a ( cd physics_wrf; $(MAKE) clean ) - ( cd physics_mmm; $(MAKE) clean ) + ( cd physics_mmm; $(MAKE) -f Makefile.mpas clean ) @# Certain systems with intel compilers generate *.i files @# This removes them during the clean process $(RM) *.i diff --git a/src/core_atmosphere/physics/physics_mmm/Makefile b/src/core_atmosphere/physics/physics_mmm/Makefile.mpas similarity index 100% rename from src/core_atmosphere/physics/physics_mmm/Makefile rename to src/core_atmosphere/physics/physics_mmm/Makefile.mpas From 37a6056cb92db286759d5fa20d8c9fdb836b5c7b Mon Sep 17 00:00:00 2001 From: "G. Dylan Dickerson" Date: Thu, 23 May 2024 11:33:15 -0600 Subject: [PATCH 026/115] Remove Fortran only flag from LDFLAGS_DEBUG for NV targets The -Mchkptr flag is only valid for Fortran compilation. If included in a C build with NVHPC compilers (like the check with openacc.c does), the build fails. --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 10e5d30beb..67aeb6b05d 100644 --- a/Makefile +++ b/Makefile @@ -154,7 +154,7 @@ nvhpc: # BUILDTARGET NVIDIA HPC SDK "FFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -byteswapio -Mfree -Ktrap=divz,fp,inv,ovf -traceback" \ "CFLAGS_DEBUG = -O0 -g -traceback" \ "CXXFLAGS_DEBUG = -O0 -g -traceback" \ - "LDFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -Ktrap=divz,fp,inv,ovf -traceback" \ + "LDFLAGS_DEBUG = -O0 -g -Mbounds -Ktrap=divz,fp,inv,ovf -traceback" \ "FFLAGS_OMP = -mp" \ "CFLAGS_OMP = -mp" \ "FFLAGS_ACC = -Mnofma -acc -gpu=cc70,cc80 -Minfo=accel" \ @@ -184,7 +184,7 @@ pgi: # BUILDTARGET PGI compiler suite "FFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -byteswapio -Mfree -Ktrap=divz,fp,inv,ovf -traceback" \ "CFLAGS_DEBUG = -O0 -g -traceback" \ "CXXFLAGS_DEBUG = -O0 -g -traceback" \ - "LDFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -Ktrap=divz,fp,inv,ovf -traceback" \ + "LDFLAGS_DEBUG = -O0 -g -Mbounds -Ktrap=divz,fp,inv,ovf -traceback" \ "FFLAGS_OMP = -mp" \ "CFLAGS_OMP = -mp" \ "FFLAGS_ACC = -Mnofma -acc -Minfo=accel" \ @@ -216,7 +216,7 @@ pgi-summit: # BUILDTARGET PGI compiler suite w/OpenACC options for ORNL Summit "FFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -byteswapio -Mfree -Ktrap=divz,fp,inv,ovf -traceback" \ "CFLAGS_DEBUG = -O0 -g -traceback" \ "CXXFLAGS_DEBUG = -O0 -g -traceback" \ - "LDFLAGS_DEBUG = -O0 -g -Mbounds -Mchkptr -Ktrap=divz,fp,inv,ovf -traceback" \ + "LDFLAGS_DEBUG = -O0 -g -Mbounds -Ktrap=divz,fp,inv,ovf -traceback" \ "FFLAGS_OMP = -mp" \ "CFLAGS_OMP = -mp" \ "PICFLAG = -fpic" \ From d15d8c40bc08026a0c15cf93325f4f02fcefba2a Mon Sep 17 00:00:00 2001 From: Andy Stokely Date: Tue, 21 May 2024 18:46:30 -0600 Subject: [PATCH 027/115] Add optional CMake build for atmosphere and init_atmosphere core of MPAS-Model Introduces an optional CMake build for the atmosphere and init_atmosphere core of the MPAS-Model, designed to improve support for MPAS-JEDI which employs ecbuild/CMake. The intention is to enhance compatibility and facilitate integration with MPAS-JEDI, while retaining the default build method using GNU make. The CMake build addition is based on contributions from the NSF NCAR Mesoscale and Microscale Meteorology (MMM) Laboratory and the Joint Center for Satellite Data Assimilation (JCSDA). The CMake build does not support SMIOL and requires PIO2. SMIOL support for the CMake build is planned for future updates. Outside of the PIO2 requirement, the only additional dependency for the CMake build is CMake itself. To build with CMake, make sure CMake, netcdf-c, netcdf-fortran, parallel-netcdf, and parallelio are installed and discoverable. If using a module package environment, load the modules for the above libraries. Create a build directory and enter it: mkdir ; cd . Configure the build with CMake by running cmake , where mpas_src_dir is the MPAS source directory and cmake_flags is a string of flags used to set various build options. CMAKE_BUILD_TYPE: Specifies the build type. Possible values are Release, Debug, and RelWithDebInfo. Defaults to Release. MPAS_DOUBLE_PRECISION: Controls if MPAS is built with single or double precision. Possible values are ON and OFF. Defaults to ON. MPAS_CORES: Controls which MPAS Cores are built. Possible values are atmosphere, init_atmosphere atmosphere, and init_atmosphere. Next, run make -j where number_of_jobs is the number of jobs GNU Make will execute in parallel. --- .gitignore | 1 + CMakeLists.txt | 160 ++++++++++ cmake/Functions/MPAS_Functions.cmake | 215 ++++++++++++++ cmake/Modules/FindGPTL.cmake | 175 +++++++++++ cmake/Modules/FindNetCDF.cmake | 343 ++++++++++++++++++++++ cmake/Modules/FindPIO.cmake | 181 ++++++++++++ cmake/Modules/FindPnetCDF.cmake | 174 +++++++++++ cmake/PackageConfig.cmake.in | 121 ++++++++ src/core_atmosphere/CMakeLists.txt | 200 +++++++++++++ src/core_init_atmosphere/CMakeLists.txt | 78 +++++ src/external/esmf_time_f90/CMakeLists.txt | 34 +++ src/external/ezxml/CMakeLists.txt | 8 + src/framework/CMakeLists.txt | 70 +++++ src/operators/CMakeLists.txt | 24 ++ src/tools/CMakeLists.txt | 30 ++ src/tools/input_gen/CMakeLists.txt | 6 + src/tools/registry/CMakeLists.txt | 17 ++ 17 files changed, 1837 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 cmake/Functions/MPAS_Functions.cmake create mode 100644 cmake/Modules/FindGPTL.cmake create mode 100644 cmake/Modules/FindNetCDF.cmake create mode 100644 cmake/Modules/FindPIO.cmake create mode 100644 cmake/Modules/FindPnetCDF.cmake create mode 100644 cmake/PackageConfig.cmake.in create mode 100644 src/core_atmosphere/CMakeLists.txt create mode 100644 src/core_init_atmosphere/CMakeLists.txt create mode 100644 src/external/esmf_time_f90/CMakeLists.txt create mode 100644 src/external/ezxml/CMakeLists.txt create mode 100644 src/framework/CMakeLists.txt create mode 100644 src/operators/CMakeLists.txt create mode 100644 src/tools/CMakeLists.txt create mode 100644 src/tools/input_gen/CMakeLists.txt create mode 100644 src/tools/registry/CMakeLists.txt diff --git a/.gitignore b/.gitignore index c0852c1bdb..2ac7e56eb0 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,7 @@ restart_timestamp # Text files (For statistical output from ocean model) *.txt +!CMakeLists.txt # Directories with individual .gitignore files are: # src/external (Externals might have a different compilation method) diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000000..6f213c9145 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,160 @@ +## MPAS-Model +cmake_minimum_required(VERSION 3.12) + +include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Functions/MPAS_Functions.cmake) +get_mpas_version(MPAS_VERSION) +project(MPAS LANGUAGES C Fortran VERSION ${MPAS_VERSION} DESCRIPTION "MPAS - Model for Prediction Across Scales") + +list(INSERT CMAKE_MODULE_PATH 0 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) +set(CMAKE_DIRECTORY_LABELS ${PROJECT_NAME}) +include(GNUInstallDirs) + +# Options +set(MPAS_ALL_CORES atmosphere init_atmosphere) +set(MPAS_CORES atmosphere CACHE STRING "MPAS cores to build. Options: ${MPAS_ALL_CORES}") +if(MPAS_CORES MATCHES " ") #Convert strings separated with spaces to CMake list separated with ';' + string(REPLACE " " ";" MPAS_CORES ${MPAS_CORES}) + set(MPAS_CORES ${MPAS_CORES} CACHE STRING "MPAS cores to build. Options: ${MPAS_ALL_CORES}" FORCE) +endif() +option(DO_PHYSICS "Use built-in physics schemes." TRUE) +option(MPAS_DOUBLE_PRECISION "Use double precision 64-bit Floating point." TRUE) +option(MPAS_PROFILE "Enable GPTL profiling" OFF) +option(MPAS_OPENMP "Enable OpenMP" OFF) +option(BUILD_SHARED_LIBS "Build shared libraries" ON) + +message(STATUS "[OPTION] MPAS_CORES: ${MPAS_CORES}") +message(STATUS "[OPTION] MPAS_DOUBLE_PRECISION: ${MPAS_DOUBLE_PRECISION}") +message(STATUS "[OPTION] MPAS_PROFILE: ${MPAS_PROFILE}") +message(STATUS "[OPTION] MPAS_OPENMP: ${MPAS_OPENMP}") +message(STATUS "[OPTION] BUILD_SHARED_LIBS: ${BUILD_SHARED_LIBS}") + +# Build product output locations +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) +set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) + +# Set default build type to RelWithDebInfo +if(NOT CMAKE_BUILD_TYPE) + message(STATUS "Setting default build type to Release. Specify CMAKE_BUILD_TYPE to override.") + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "CMake Build type" FORCE) + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo") +endif() + +# Detect MPAS git version +if(NOT MPAS_GIT_VERSION) + find_package(Git QUIET) + if(GIT_FOUND) + execute_process(COMMAND ${GIT_EXECUTABLE} describe --dirty + WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}" + OUTPUT_VARIABLE _mpas_git_version + ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE) + else() + set(_mpas_git_version "Unknown") + endif() + set(MPAS_GIT_VERSION ${_mpas_git_version} CACHE STRING "MPAS-Model git version") +endif() + +### Dependencies +find_package(OpenMP COMPONENTS Fortran) +find_package(MPI REQUIRED COMPONENTS Fortran) +find_package(NetCDF REQUIRED COMPONENTS Fortran C) +find_package(PnetCDF REQUIRED COMPONENTS Fortran) +find_package(PIO REQUIRED COMPONENTS Fortran C) +if(MPAS_PROFILE) + find_package(GPTL REQUIRED) +endif() + +# Find C pre-processor +if(CMAKE_C_COMPILER_ID MATCHES GNU) + find_program(CPP_EXECUTABLE NAMES cpp REQUIRED) + set(CPP_EXTRA_FLAGS -traditional) +elseif(CMAKE_C_COMPILER_ID MATCHES "(Apple)?Clang" ) + find_program(CPP_EXECUTABLE NAMES cpp REQUIRED) +else() + message(STATUS "Unknown compiler: ${CMAKE_C_COMPILER_ID}") + set(CPP_EXECUTABLE ${CMAKE_C_COMPILER}) +endif() + +## Common Variables + +# Fortran module output directory for build interface +set(MPAS_MODULE_DIR ${PROJECT_NAME}/module/${CMAKE_Fortran_COMPILER_ID}/${CMAKE_Fortran_COMPILER_VERSION}) +# Install Fortran module directory +install(DIRECTORY ${CMAKE_BINARY_DIR}/${MPAS_MODULE_DIR}/ DESTINATION ${CMAKE_INSTALL_LIBDIR}/${MPAS_MODULE_DIR}/) + +# Location of common subdriver module compiled by each cores +set(MPAS_MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/driver/mpas.F) +set(MPAS_SUBDRIVER_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/driver/mpas_subdriver.F) + +## Create targets +add_subdirectory(src/external/ezxml) # Target: MPAS::external::ezxml +if(ESMF_FOUND) + message(STATUS "Configure MPAS for external ESMF") + add_definitions(-DMPAS_EXTERNAL_ESMF_LIB -DMPAS_NO_ESMF_INIT) + add_library(${PROJECT_NAME}::external::esmf ALIAS esmf) +else() + message(STATUS "Configure MPAS for internal ESMF") + add_subdirectory(src/external/esmf_time_f90) # Target: MPAS::external::esmf_time +endif() +add_subdirectory(src/tools/input_gen) # Targets: namelist_gen, streams_gen +add_subdirectory(src/tools/registry) # Targets: mpas_parse_ +add_subdirectory(src/framework) # Target: MPAS::framework +add_subdirectory(src/operators) # Target: MPAS::operators + +foreach(_core IN LISTS MPAS_CORES) + add_subdirectory(src/core_${_core}) # Target: MPAS::core:: +endforeach() + +### Package config +include(CMakePackageConfigHelpers) + +# Build-tree target exports +export(EXPORT ${PROJECT_NAME}ExportsExternal NAMESPACE ${PROJECT_NAME}::external:: FILE ${PROJECT_NAME}-targets-external.cmake) +export(EXPORT ${PROJECT_NAME}Exports NAMESPACE ${PROJECT_NAME}:: FILE ${PROJECT_NAME}-targets.cmake) +export(EXPORT ${PROJECT_NAME}ExportsCore NAMESPACE ${PROJECT_NAME}::core:: FILE ${PROJECT_NAME}-targets-core.cmake) + +# CMake Config file install location +set(CONFIG_INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}) +# Install MPAS-supplied Find.cmake modules for use by downstream CMake dependencies +install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules DESTINATION ${CONFIG_INSTALL_DESTINATION}) + +## -config.cmake: build-tree +# Variables to export for use from build-tree +set(BINDIR ${CMAKE_BINARY_DIR}/bin) +set(CORE_DATADIR_ROOT ${CMAKE_BINARY_DIR}/${PROJECT_NAME}) +set(CMAKE_MODULE_INSTALL_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules) +string(TOLOWER ${PROJECT_NAME} PROJECT_NAME_LOWER) +configure_package_config_file(cmake/PackageConfig.cmake.in ${PROJECT_NAME_LOWER}-config.cmake + INSTALL_DESTINATION . + INSTALL_PREFIX ${CMAKE_CURRENT_BINARY_DIR} + PATH_VARS BINDIR CORE_DATADIR_ROOT CMAKE_MODULE_INSTALL_PATH) + +## -config.cmake: install-tree +# Variables to export for use from install-tree +set(BINDIR ${CMAKE_INSTALL_BINDIR}) +set(CORE_DATADIR_ROOT ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}) +set(CMAKE_MODULE_INSTALL_PATH ${CONFIG_INSTALL_DESTINATION}/Modules) +configure_package_config_file(cmake/PackageConfig.cmake.in install/${PROJECT_NAME_LOWER}-config.cmake + INSTALL_DESTINATION ${CONFIG_INSTALL_DESTINATION} + PATH_VARS BINDIR CORE_DATADIR_ROOT CMAKE_MODULE_INSTALL_PATH) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/install/${PROJECT_NAME_LOWER}-config.cmake + DESTINATION ${CONFIG_INSTALL_DESTINATION}) + +## -config-version.cmake +write_basic_package_version_file( + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion) +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME_LOWER}-config-version.cmake + DESTINATION ${CONFIG_INSTALL_DESTINATION}) + +## package-targets.cmake and package-targets-.cmake +install(EXPORT ${PROJECT_NAME}ExportsExternal NAMESPACE ${PROJECT_NAME}::external:: + FILE ${PROJECT_NAME_LOWER}-targets-external.cmake + DESTINATION ${CONFIG_INSTALL_DESTINATION}) +install(EXPORT ${PROJECT_NAME}Exports NAMESPACE ${PROJECT_NAME}:: + FILE ${PROJECT_NAME_LOWER}-targets.cmake + DESTINATION ${CONFIG_INSTALL_DESTINATION}) +install(EXPORT ${PROJECT_NAME}ExportsCore NAMESPACE ${PROJECT_NAME}::core:: + FILE ${PROJECT_NAME_LOWER}-targets-core.cmake + DESTINATION ${CONFIG_INSTALL_DESTINATION}) diff --git a/cmake/Functions/MPAS_Functions.cmake b/cmake/Functions/MPAS_Functions.cmake new file mode 100644 index 0000000000..ee329691f5 --- /dev/null +++ b/cmake/Functions/MPAS_Functions.cmake @@ -0,0 +1,215 @@ +## +# get_mpas_version( ) +# +# Extracts the MPAS-Model project's version from the README.md file. +# The extracted version is a string following the format "X.Y.Z", where +# "X", "Y", and "Z" correspond to the major, minor, and patch versions +# respectively. +# +# Precondition: +# * README.md file needs to be in the current source directory. +# * README.md file should contain the project version formatted +# as "MPAS-vX.Y.Z". +# +# Postcondition: +# * If a match is found, will contain the version string, +# else it will be empty. +# +# Args: +# - The name of the variable that will hold the extracted version +# string. +# +# Example usage: +# get_mpas_version(MPAS_VERSION) +# message("MPAS Version: ${MPAS_VERSION}") +## +function(get_mpas_version mpas_version) + file(READ "${CMAKE_CURRENT_SOURCE_DIR}/README.md" readme_contents) + string(REGEX MATCH "MPAS-v([0-9]+\\.[0-9]+\\.[0-9]+)" _ ${readme_contents}) + set(${mpas_version} ${CMAKE_MATCH_1} PARENT_SCOPE) +endfunction() + +## +# mpas_fortran_target( ) +# +# Fortran configuration and options common to all MPAS Fortran targets +# +# * Installs common Fortan modules to a per-compiler-version directory +# * General Fortran formatting and configuration options +# * Per-compiler configuration and options +# * MPAS_DOUBLE_PRECISION related flags +# +# Args: +# - The name of the target to prepare +# + +function(mpas_fortran_target target) + # Fortran modules include path + set_target_properties(${target} PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/${MPAS_MODULE_DIR}) + target_include_directories(${target} INTERFACE $ + $) + #Relocatable, portable, runtime dynamic linking + set_target_properties(${target} PROPERTIES INSTALL_RPATH "\$ORIGIN/../${CMAKE_INSTALL_LIBDIR}") + + # Global Fortran configuration + set_target_properties(${target} PROPERTIES Fortran_FORMAT FREE) + set(MPAS_FORTRAN_TARGET_COMPILE_DEFINITIONS + _MPI=1 + USE_PIO2=1 + ) + # Enable OpenMP support + if(MPAS_OPENMP) + target_link_libraries(${target} PUBLIC OpenMP::OpenMP_Fortran) + endif() + + # Compiler-specific options and flags + if(CMAKE_Fortran_COMPILER_ID MATCHES GNU) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PRIVATE + $<$:-ffree-line-length-none> + ) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PUBLIC + $<$:-fconvert=big-endian> + ) + + if(CMAKE_Fortran_COMPILER_VERSION VERSION_GREATER_EQUAL 10) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PRIVATE + $<$:-fallow-argument-mismatch> + $<$:-fallow-invalid-boz> + ) + endif() + if(MPAS_DOUBLE_PRECISION) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PRIVATE + $<$:-fdefault-real-8> $<$:-fdefault-double-8> + ) + else() + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_DEFINITIONS SINGLE_PRECISION) + endif() + elseif(CMAKE_Fortran_COMPILER_ID MATCHES Intel) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PUBLIC + $<$:-align array64byte> + $<$:-convert big_endian> + ) + if(MPAS_DOUBLE_PRECISION) + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PRIVATE + $<$:-real-size 64> + ) + else() + list(APPEND MPAS_FORTRAN_TARGET_COMPILE_DEFINITIONS SINGLE_PRECISION) + endif() + endif() + target_compile_definitions(${target} PRIVATE ${MPAS_FORTRAN_TARGET_COMPILE_DEFINITIONS}) + target_compile_options(${target} PRIVATE ${MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PRIVATE}) + target_compile_options(${target} PUBLIC ${MPAS_FORTRAN_TARGET_COMPILE_OPTIONS_PUBLIC}) +endfunction() + + +# mpas_core_target(CORE TARGET INCLUDE ) +# +# Common configuration and properties for `MPAS::core::` targets. +# * Calls mpas_fortran_target() for common Fortran target configuration. +# * Installs Fortran modules to a per-core directory and adds target include directories +# appropriate for build and install trees. +# * XML Processing, parsing and generation of includes, namelists and streams +# * Each core uses a core-specific parser executable +# * Links to MPAS::framework and MPAS::operators +# * Exports MPAS::core:: target alias for use by external dependencies +# * Installs core libraries modules and generated files. +# +# Args: +# CORE - Name of core +# TARGET - Name of core_target (without namespace) +# INCLUDES - List of generated include files +# +function(mpas_core_target) + cmake_parse_arguments(ARG "" "CORE;TARGET" "INCLUDES" ${ARGN}) + + mpas_fortran_target(${ARG_TARGET}) + + set_property(TARGET ${ARG_TARGET} APPEND PROPERTY SOURCES ${MPAS_SUBDRIVER_SRC}) + + string(TOUPPER "${ARG_TARGET}" TARGET) + set_target_properties(${ARG_TARGET} PROPERTIES OUTPUT_NAME mpas_${ARG_CORE}) + + #Fortran modules output location + set(CORE_MODULE_DIR ${MPAS_MODULE_DIR}/${ARG_TARGET}) + set_target_properties(${ARG_TARGET} PROPERTIES Fortran_MODULE_DIRECTORY ${CMAKE_BINARY_DIR}/${CORE_MODULE_DIR}) + target_include_directories(${ARG_TARGET} INTERFACE $ + $) + + #MPAS Specific option + target_compile_definitions(${ARG_TARGET} PRIVATE ${TARGET}=1) + + #Generated includes are included from either ./inc/ or ./ so we create a symlink in the build directory + #To handle the inc/ variety (sw, test, seaice) uniformly with the ./ variety (atmosphere, init_atmosphere) + add_custom_target(${ARG_CORE}_include_link ALL + COMMAND ${CMAKE_COMMAND} -E create_symlink ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/inc) + add_dependencies(${ARG_TARGET} ${ARG_CORE}_include_link) + target_include_directories(${ARG_TARGET} PUBLIC $) + + #Core-independent library dependencies + target_link_libraries(${ARG_TARGET} PUBLIC ${PROJECT_NAME}::operators ${PROJECT_NAME}::framework) + + #Define alias for external use + add_library(${PROJECT_NAME}::core::${ARG_CORE} ALIAS ${ARG_TARGET}) + + #Create main executable + add_executable(mpas_${ARG_CORE} ${MPAS_MAIN_SRC}) + mpas_fortran_target(mpas_${ARG_CORE}) + target_link_libraries(mpas_${ARG_CORE} PUBLIC ${PROJECT_NAME}::core::${ARG_CORE}) + + #Per-core generated output and tables directory location + set(CORE_DATADIR ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${ARG_TARGET}) + file(MAKE_DIRECTORY ${CORE_DATADIR}) + + #Process registry and generate includes, namelists, and streams + if(${ARG_CORE} STREQUAL "atmosphere" AND ${DO_PHYSICS}) + set(CPP_EXTRA_FLAGS ${CPP_EXTRA_FLAGS} -DDO_PHYSICS) + endif() + add_custom_command(OUTPUT Registry_processed.xml + COMMAND ${CPP_EXECUTABLE} -E -P ${CPP_EXTRA_FLAGS} ${CMAKE_CURRENT_SOURCE_DIR}/Registry.xml > Registry_processed.xml + COMMENT "CORE ${ARG_CORE}: Pre-Process Registry" + DEPENDS Registry.xml) + add_custom_command(OUTPUT ${ARG_INCLUDES} + COMMAND mpas_parse_${ARG_CORE} Registry_processed.xml + COMMENT "CORE ${ARG_CORE}: Parse Registry" + DEPENDS mpas_parse_${ARG_CORE} Registry_processed.xml) + add_custom_command(OUTPUT namelist.${ARG_CORE} + WORKING_DIRECTORY ${CORE_DATADIR} + COMMAND mpas_namelist_gen ${CMAKE_CURRENT_BINARY_DIR}/Registry_processed.xml namelist.${ARG_CORE} in_defaults=true + COMMENT "CORE ${ARG_CORE}: Generate Namelist" + DEPENDS mpas_namelist_gen Registry_processed.xml) + add_custom_command(OUTPUT streams.${ARG_CORE} + WORKING_DIRECTORY ${CORE_DATADIR} + COMMAND mpas_streams_gen ${CMAKE_CURRENT_BINARY_DIR}/Registry_processed.xml streams.${ARG_CORE} stream_list.${ARG_CORE}. listed + COMMENT "CORE ${ARG_CORE}: Generate Streams" + DEPENDS mpas_streams_gen Registry_processed.xml) + add_custom_target(gen_${ARG_CORE} DEPENDS ${ARG_INCLUDES} namelist.${ARG_CORE} streams.${ARG_CORE}) + add_dependencies(${ARG_TARGET} gen_${ARG_CORE}) + + #Install data and target library and executable + install(DIRECTORY ${CORE_DATADIR}/ DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/${ARG_TARGET} + FILES_MATCHING PATTERN "namelist.*" PATTERN "streams.*" PATTERN "stream_list.*" ) + install(TARGETS ${ARG_TARGET} EXPORT ${PROJECT_NAME}ExportsCore + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + install(TARGETS mpas_${ARG_CORE} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) +endfunction() + +## +# set_MPAS_DEBUG_flag( ) +# +# Sets the MPAS_DEBUG compile definition for a given target when the build type is Debug. +# +# Args: +# - The target for which the compile definition will be set +# +# Usage example: +# set_MPAS_DEBUG_flag(TARGET) +# This will define MPAS_DEBUG for the target TARGET during a Debug build +## +function(set_MPAS_DEBUG_flag target) + if(CMAKE_BUILD_TYPE MATCHES Debug) + target_compile_definitions(${target} PRIVATE MPAS_DEBUG) + endif() +endfunction() \ No newline at end of file diff --git a/cmake/Modules/FindGPTL.cmake b/cmake/Modules/FindGPTL.cmake new file mode 100644 index 0000000000..8e8014c337 --- /dev/null +++ b/cmake/Modules/FindGPTL.cmake @@ -0,0 +1,175 @@ +# FindGPTL.cmake +# +# Copyright UCAR 2020 +# +# Find the GPTL: General Purpose Timing Library (https://jmrosinski.github.io/GPTL/) +# +# This find module sets the following variables and targets: +# +# Variables: +# GPTL_FOUND - True if GPTL was found +# GPTL_VERSION_STRING - Version of installed GPTL +# GPTL_BIN_DIR - GPTL binary directory +# GPTL_HAS_PKG_CONFIG - GPTL was found with installed `gptl.pc` and pkg-config. This indicates full support +# for compiler and linker flags as exported by GPTL. +# Targets: +# GPTL::GPTL - Imported interface target to pass to target_link_libraries() +# +# NOTE: This find modules uses `pkg-config` to locate GPTL and glean the appropriate flags, directories, +# and link dependency ordering. For this to work, both a `pkg-config` executable and a `gptl.pc` +# config file need to be found. +# * To find the `pkg-config` executable, ensure it is on your PATH. +# * For non-standard locations the official CMake FindPkgConfig uses Cmake variable `PKG_CONFIG_EXECUTABLE` +# or environment variable `PKG_CONFIG`. See: https://cmake.org/cmake/help/latest/module/FindPkgConfig.html +# * To find `gptl.pc` ensure it is on the (colon-separated) directories listed in standard pkg-config +# environment variable `PKG_CONFIG_PATH`. +# * See: https://linux.die.net/man/1/pkg-config +# * A working GPTL pkg-config install can be confirmed on the command line, e.g., +# ``` +# $ pkg-config --modversion gptl +# 8.0.2 +# ``` +# To set a non-standard location for GPTL, ensure the correct `gptl.pc` pkg config file is found first +# on the environment's `PKG_CONFIG_PATH`. This can be checked with the pkg-config executable, e.g., +# ``` +# $ pkg-config --variable=prefix gptl +# /usr/local +# ``` +# Only when pkg-config is not supported or available, GPTL will be searched by the standard CMake search procedures. +# Set environment or CMake variable GPTL_ROOT to control this search. The GPTL_ROOT variable will have no effect +# if GPTL_HAS_PKG_CONFIG=True. +# + +find_package(PkgConfig QUIET) +if(PKG_CONFIG_FOUND) + message(DEBUG "[FindGPTL] Using PKG_CONFIG_EXECUTABLE:${PKG_CONFIG_EXECUTABLE}") +endif() + +#Helper: +#check_pkg_config(ret_var pcname pcflags...) +# Check if pcname is known to pkg-config +# Returns: +# Boolean: true if ${pcname}.pc file is found by pkg-config). +# Args: +# ret_var: return variable name. +# pcname: pkg-config name to look for (.pc file) +function(check_pkg_config ret_var pcname) + if(NOT PKG_CONFIG_FOUND OR NOT EXISTS ${PKG_CONFIG_EXECUTABLE}) + set(${ret_var} False PARENT_SCOPE) + else() + execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} --exists ${pcname} RESULT_VARIABLE _found) + if(_found EQUAL 0) + set(${ret_var} True PARENT_SCOPE) + else() + set(${ret_var} False PARENT_SCOPE) + endif() + endif() +endfunction() + +#Helper: +#get_pkg_config(ret_var pcname pcflags...) +# Get the output of pkg-config +# Args: +# ret_var: return variable name +# pcname: pkg-config name to look for (.pc file) +# pcflags: pkg-config flags to pass +function(get_pkg_config ret_var pcname pcflags) + execute_process(COMMAND ${PKG_CONFIG_EXECUTABLE} ${ARGN} ${pcname} ${pcflags} OUTPUT_VARIABLE _out RESULT_VARIABLE _ret OUTPUT_STRIP_TRAILING_WHITESPACE) + if(_ret EQUAL 0) + separate_arguments(_out) + set(${ret_var} ${_out} PARENT_SCOPE) + else() + set(${ret_var} "" PARENT_SCOPE) + endif() +endfunction() + +check_pkg_config(GPTL_HAS_PKG_CONFIG gptl) +if(GPTL_HAS_PKG_CONFIG) + #Use pkg-config to find the prefix, flags, directories, executables, and libraries + get_pkg_config(GPTL_VERSION_STRING gptl --modversion) + get_pkg_config(GPTL_PREFIX gptl --variable=prefix) + get_pkg_config(GPTL_INCLUDE_DIR gptl --cflags-only-I) + if(EXISTS GPTL_INCLUDE_DIR) + string(REGEX REPLACE "-I([^ ]+)" "\\1;" GPTL_INCLUDE_DIR ${GPTL_INCLUDE_DIR}) #Remove -I + else() + find_path(GPTL_INCLUDE_DIR NAMES gptl.h PATH_SUFFIXES include include/gptl PATHS ${GPTL_PREFIX} NO_DEFAULT_PATH) + endif() + find_path(GPTL_MODULE_DIR NAMES gptl.mod PATH_SUFFIXES include include/gptl module module/gptl PATHS ${GPTL_PREFIX} NO_DEFAULT_PATH) + get_pkg_config(GPTL_COMPILE_OPTIONS gptl --cflags-only-other) + get_pkg_config(GPTL_LINK_LIBRARIES gptl --libs-only-l) + get_pkg_config(GPTL_LINK_DIRECTORIES gptl --libs-only-L) + if(GPTL_LINK_DIRECTORIES) + string(REGEX REPLACE "-L([^ ]+)" "\\1;" GPTL_LINK_DIRECTORIES ${GPTL_LINK_DIRECTORIES}) #Remove -L + endif() + get_pkg_config(GPTL_LINK_OPTIONS gptl --libs-only-other) + find_library(GPTL_LIBRARY NAMES gptl PATH_SUFFIXES lib lib64 PATHS ${GPTL_PREFIX} NO_DEFAULT_PATH) + find_path(GPTL_BIN_DIR NAMES gptl_avail PATH_SUFFIXES bin PATHS ${GPTL_PREFIX} NO_DEFAULT_PATH) +else() + #Attempt to find GPTL without pkg-config as last resort. + message(WARNING "\ +FindGPTL: The `pkg-config` executable was not found. Ensure it is on your path or set \ +environment variable PKG_CONFIG to your pkg-config executable. \ +Attempting to find GPTL without pkg-config support may cause some required compiler and linker options to be unset.") + + find_path(GPTL_INCLUDE_DIR NAMES gptl.h PATH_SUFFIXES include include/gptl) + find_path(GPTL_MODULE_DIR NAMES gptl.mod PATH_SUFFIXES include include/gptl module module/gptl) + find_library(GPTL_LIBRARY NAMES gptl PATH_SUFFIXES lib lib64) + find_path(GPTL_BIN_DIR NAMES gptl_avail PATH_SUFFIXES bin) +endif() + +#Hide non-documented cache variables reserved for internal/advanced usage +mark_as_advanced( GPTL_INCLUDE_DIR + GPTL_MODULE_DIR + GPTL_LIBRARY ) + +#Debugging output +message(DEBUG "[FindGPTL] GPTL_FOUND: ${GPTL_FOUND}") +message(DEBUG "[FindGPTL] GPTL_VERSION_STRING: ${GPTL_VERSION_STRING}") +message(DEBUG "[FindGPTL] GPTL_HAS_PKG_CONFIG: ${GPTL_HAS_PKG_CONFIG}") +message(DEBUG "[FindGPTL] GPTL_PREFIX: ${GPTL_PREFIX}") +message(DEBUG "[FindGPTL] GPTL_BIN_DIR: ${GPTL_BIN_DIR}") +message(DEBUG "[FindGPTL] GPTL_INCLUDE_DIR: ${GPTL_INCLUDE_DIR}") +message(DEBUG "[FindGPTL] GPTL_MODULE_DIR: ${GPTL_MODULE_DIR}") +message(DEBUG "[FindGPTL] GPTL_LIBRARY: ${GPTL_LIBRARY}") +message(DEBUG "[FindGPTL] GPTL_LINK_LIBRARIES: ${GPTL_LINK_LIBRARIES}") +message(DEBUG "[FindGPTL] GPTL_LINK_DIRECTORIES: ${GPTL_LINK_DIRECTORIES}") +message(DEBUG "[FindGPTL] GPTL_LINK_OPTIONS: ${GPTL_LINK_OPTIONS}") + +#Check package has been found correctly +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + GPTL + REQUIRED_VARS + GPTL_LIBRARY + GPTL_INCLUDE_DIR + GPTL_MODULE_DIR + GPTL_BIN_DIR + VERSION_VAR + GPTL_VERSION_STRING +) + +#Create GPTL::GPTL imported interface target +if(GPTL_FOUND AND NOT TARGET GPTL::GPTL) + add_library(GPTL::GPTL INTERFACE IMPORTED) + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GPTL_INCLUDE_DIR}) + if(GPTL_MODULE_DIR) + set_property(TARGET GPTL::GPTL APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${GPTL_MODULE_DIR}) + endif() + if(GPTL_COMPILE_OPTIONS) + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_COMPILE_OPTIONS ${GPTL_COMPILE_OPTIONS}) + endif() + if(GPTL_LINK_DIRECTORIES) + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_LINK_DIRECTORIES ${GPTL_LINK_DIRECTORIES}) + endif() + if(GPTL_LINK_OPTIONS) + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_LINK_OPTIONS ${GPTL_LINK_OPTIONS}) + endif() + if(GPTL_LINK_LIBRARIES) + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_LINK_LIBRARIES ${GPTL_LINK_LIBRARIES}) + else() + set_property(TARGET GPTL::GPTL PROPERTY INTERFACE_LINK_LIBRARIES ${GPTL_LIBRARY}) + get_filename_component(_lib_dir ${GPTL_LIBRARY} DIRECTORY) + set_property(TARGET GPTL::GPTL APPEND PROPERTY INTERFACE_LINK_DIRECTORIES ${_lib_dir}) + unset(_lib_dir) + endif() +endif() diff --git a/cmake/Modules/FindNetCDF.cmake b/cmake/Modules/FindNetCDF.cmake new file mode 100644 index 0000000000..f2fc6ac514 --- /dev/null +++ b/cmake/Modules/FindNetCDF.cmake @@ -0,0 +1,343 @@ +# (C) Copyright 2017-2020 UCAR +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# +# (C) Copyright 2011- ECMWF. +# +# This software is licensed under the terms of the Apache Licence Version 2.0 +# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. +# In applying this licence, ECMWF does not waive the privileges and immunities +# granted to it by virtue of its status as an intergovernmental organisation nor +# does it submit to any jurisdiction. +# +# Try to find NetCDF includes and library. +# Supports static and shared libaries and allows each component to be found in sepearte prefixes. +# +# This module defines +# +# - NetCDF_FOUND - System has NetCDF +# - NetCDF_INCLUDE_DIRS - the NetCDF include directories +# - NetCDF_VERSION - the version of NetCDF +# - NetCDF_CONFIG_EXECUTABLE - the netcdf-config executable if found +# - NetCDF_PARALLEL - Boolean True if NetCDF4 has parallel IO support via hdf5 and/or pnetcdf +# - NetCDF_HAS_PNETCDF - Boolean True if NetCDF4 has pnetcdf support +# +# Deprecated Defines +# - NetCDF_LIBRARIES - [Deprecated] Use NetCDF::NetCDF_ targets instead. +# +# +# Following components are available: +# +# - C - C interface to NetCDF (netcdf) +# - CXX - CXX4 interface to NetCDF (netcdf_c++4) +# - Fortran - Fortran interface to NetCDF (netcdff) +# +# For each component the following are defined: +# +# - NetCDF__FOUND - whether the component is found +# - NetCDF__LIBRARIES - the libraries for the component +# - NetCDF__LIBRARY_SHARED - Boolean is true if libraries for component are shared +# - NetCDF__INCLUDE_DIRS - the include directories for specified component +# - NetCDF::NetCDF_ - target of component to be used with target_link_libraries() +# +# The following paths will be searched in order if set in CMake (first priority) or environment (second priority) +# +# - NetCDF_ROOT - root of NetCDF installation +# - NetCDF_PATH - root of NetCDF installation +# +# The search process begins with locating NetCDF Include headers. If these are in a non-standard location, +# set one of the following CMake or environment variables to point to the location: +# +# - NetCDF_INCLUDE_DIR or NetCDF_${comp}_INCLUDE_DIR +# - NetCDF_INCLUDE_DIRS or NetCDF_${comp}_INCLUDE_DIR +# +# Notes: +# +# - Use "NetCDF::NetCDF_" targets only. NetCDF_LIBRARIES exists for backwards compatibility and should not be used. +# - These targets have all the knowledge of include directories and library search directories, and a single +# call to target_link_libraries will provide all these transitive properties to your target. Normally all that is +# needed to build and link against NetCDF is, e.g.: +# target_link_libraries(my_c_tgt PUBLIC NetCDF::NetCDF_C) +# - "NetCDF" is always the preferred naming for this package, its targets, variables, and environment variables +# - For compatibility, some variables are also set/checked using alternate names NetCDF4, NETCDF, or NETCDF4 +# - Environments relying on these older environment variable names should move to using a "NetCDF_ROOT" environment variable +# - Preferred component capitalization follows the CMake LANGUAGES variables: i.e., C, Fortran, CXX +# - For compatibility, alternate capitalizations are supported but should not be used. +# - If no components are defined, all components will be searched +# + +list( APPEND _possible_components C CXX Fortran ) + +## Include names for each component +set( NetCDF_C_INCLUDE_NAME netcdf.h ) +set( NetCDF_CXX_INCLUDE_NAME netcdf ) +set( NetCDF_Fortran_INCLUDE_NAME netcdf.mod ) + +## Library names for each component +set( NetCDF_C_LIBRARY_NAME netcdf ) +set( NetCDF_CXX_LIBRARY_NAME netcdf_c++4 ) +set( NetCDF_Fortran_LIBRARY_NAME netcdff ) + +## Enumerate search components +foreach( _comp ${_possible_components} ) + string( TOUPPER "${_comp}" _COMP ) + set( _arg_${_COMP} ${_comp} ) + set( _name_${_COMP} ${_comp} ) +endforeach() + +set( _search_components C) +foreach( _comp ${${CMAKE_FIND_PACKAGE_NAME}_FIND_COMPONENTS} ) + string( TOUPPER "${_comp}" _COMP ) + set( _arg_${_COMP} ${_comp} ) + list( APPEND _search_components ${_name_${_COMP}} ) + if( NOT _name_${_COMP} ) + message(SEND_ERROR "Find${CMAKE_FIND_PACKAGE_NAME}: COMPONENT ${_comp} is not a valid component. Valid components: ${_possible_components}" ) + endif() +endforeach() +list( REMOVE_DUPLICATES _search_components ) + +## Search hints for finding include directories and libraries +foreach( _comp IN ITEMS "_" "_C_" "_Fortran_" "_CXX_" ) + foreach( _name IN ITEMS NetCDF4 NetCDF NETCDF4 NETCDF ) + foreach( _var IN ITEMS ROOT PATH ) + list(APPEND _search_hints ${${_name}${_comp}${_var}} $ENV{${_name}${_comp}${_var}} ) + list(APPEND _include_search_hints + ${${_name}${_comp}INCLUDE_DIR} $ENV{${_name}${_comp}INCLUDE_DIR} + ${${_name}${_comp}INCLUDE_DIRS} $ENV{${_name}${_comp}INCLUDE_DIRS} ) + endforeach() + endforeach() +endforeach() +#Old-school HPC module env variable names +foreach( _name IN ITEMS NetCDF4 NetCDF NETCDF4 NETCDF ) + foreach( _comp IN ITEMS "_C" "_Fortran" "_CXX" ) + list(APPEND _search_hints ${${_name}} $ENV{${_name}}) + list(APPEND _search_hints ${${_name}${_comp}} $ENV{${_name}${_comp}}) + endforeach() +endforeach() + +## Find headers for each component +set(NetCDF_INCLUDE_DIRS) +set(_new_search_components) +foreach( _comp IN LISTS _search_components ) + if(NOT ${PROJECT_NAME}_NetCDF_${_comp}_FOUND) + list(APPEND _new_search_components ${_comp}) + endif() + find_file(NetCDF_${_comp}_INCLUDE_FILE + NAMES ${NetCDF_${_comp}_INCLUDE_NAME} + DOC "NetCDF ${_comp} include directory" + HINTS ${_include_search_hints} ${_search_hints} + PATH_SUFFIXES include include/netcdf + ) + mark_as_advanced(NetCDF_${_comp}_INCLUDE_FILE) + message(DEBUG "NetCDF_${_comp}_INCLUDE_FILE: ${NetCDF_${_comp}_INCLUDE_FILE}") + if( NetCDF_${_comp}_INCLUDE_FILE ) + get_filename_component(NetCDF_${_comp}_INCLUDE_FILE ${NetCDF_${_comp}_INCLUDE_FILE} ABSOLUTE) + get_filename_component(NetCDF_${_comp}_INCLUDE_DIR ${NetCDF_${_comp}_INCLUDE_FILE} DIRECTORY) + list(APPEND NetCDF_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIR}) + endif() +endforeach() +if(NetCDF_INCLUDE_DIRS) + list(REMOVE_DUPLICATES NetCDF_INCLUDE_DIRS) +endif() +set(NetCDF_INCLUDE_DIRS "${NetCDF_INCLUDE_DIRS}" CACHE STRING "NetCDF Include directory paths" FORCE) + +## Find n*-config executables for search components +foreach( _comp IN LISTS _search_components ) + if( _comp MATCHES "^(C)$" ) + set(_conf "c") + elseif( _comp MATCHES "^(Fortran)$" ) + set(_conf "f") + elseif( _comp MATCHES "^(CXX)$" ) + set(_conf "cxx4") + endif() + find_program( NetCDF_${_comp}_CONFIG_EXECUTABLE + NAMES n${_conf}-config + HINTS ${NetCDF_INCLUDE_DIRS} ${_include_search_hints} ${_search_hints} + PATH_SUFFIXES bin Bin ../bin ../../bin + DOC "NetCDF n${_conf}-config helper" ) + message(DEBUG "NetCDF_${_comp}_CONFIG_EXECUTABLE: ${NetCDF_${_comp}_CONFIG_EXECUTABLE}") +endforeach() + +set(_C_libs_flag --libs) +set(_Fortran_libs_flag --flibs) +set(_CXX_libs_flag --libs) +set(_C_includes_flag --includedir) +set(_Fortran_includes_flag --includedir) +set(_CXX_includes_flag --includedir) +function(netcdf_config exec flag output_var) + set(${output_var} False PARENT_SCOPE) + if( exec ) + execute_process( COMMAND ${exec} ${flag} RESULT_VARIABLE _ret OUTPUT_VARIABLE _val) + if( _ret EQUAL 0 ) + string( STRIP ${_val} _val ) + set( ${output_var} ${_val} PARENT_SCOPE ) + endif() + endif() +endfunction() + +## Find libraries for each component +set( NetCDF_LIBRARIES ) +foreach( _comp IN LISTS _search_components ) + string( TOUPPER "${_comp}" _COMP ) + + find_library( NetCDF_${_comp}_LIBRARY + NAMES ${NetCDF_${_comp}_LIBRARY_NAME} + DOC "NetCDF ${_comp} library" + HINTS ${NetCDF_${_comp}_INCLUDE_DIRS} ${_search_hints} + PATH_SUFFIXES lib64 lib ../lib64 ../lib ../../lib64 ../../lib ) + mark_as_advanced( NetCDF_${_comp}_LIBRARY ) + get_filename_component(NetCDF_${_comp}_LIBRARY ${NetCDF_${_comp}_LIBRARY} ABSOLUTE) + set(NetCDF_${_comp}_LIBRARY ${NetCDF_${_comp}_LIBRARY} CACHE STRING "NetCDF ${_comp} library" FORCE) + message(DEBUG "NetCDF_${_comp}_LIBRARY: ${NetCDF_${_comp}_LIBRARY}") + + + if( NetCDF_${_comp}_LIBRARY ) + if( NetCDF_${_comp}_LIBRARY MATCHES ".a$" ) + set( NetCDF_${_comp}_LIBRARY_SHARED FALSE ) + set( _library_type STATIC) + else() + if( NOT ${NetCDF_${_comp}_LIBRARY} IN_LIST NetCDF_LIBRARIES ) + list( APPEND NetCDF_LIBRARIES ${NetCDF_${_comp}_LIBRARY} ) + message(DEBUG "Adding new netcdf library [${_comp}]: ${NetCDF_${_comp}_LIBRARY}") + endif() + set( NetCDF_${_comp}_LIBRARY_SHARED TRUE ) + set( _library_type SHARED) + endif() + endif() + + #Use nc-config to set per-component LIBRARIES variable if possible + netcdf_config( ${NetCDF_${_comp}_CONFIG_EXECUTABLE} ${_${_comp}_libs_flag} _val ) + if( _val ) + set( NetCDF_${_comp}_LIBRARIES ${_val} ) + if(NOT NetCDF_${_comp}_LIBRARY_SHARED AND NOT NetCDF_${_comp}_FOUND) #Static targets should use nc_config to get a proper link line with all necessary static targets. + list( APPEND NetCDF_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} ) + endif() + else() + set( NetCDF_${_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARY} ) + if(NOT NetCDF_${_comp}_LIBRARY_SHARED) + message(SEND_ERROR "Unable to properly find NetCDF. Found static libraries at: ${NetCDF_${_comp}_LIBRARY} but could not run nc-config: ${NetCDF_CONFIG_EXECUTABLE}") + endif() + endif() + + #Use nc-config to set per-component INCLUDE_DIRS variable if possible + netcdf_config( ${NetCDF_${_comp}_CONFIG_EXECUTABLE} ${_${_comp}_includes_flag} _val ) + if( _val ) + string( REPLACE " " ";" _val ${_val} ) + set( NetCDF_${_comp}_INCLUDE_DIRS ${_val} ) + else() + set( NetCDF_${_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIR} ) + endif() + + if( NetCDF_${_comp}_LIBRARIES AND NetCDF_${_comp}_INCLUDE_DIRS ) + set( ${CMAKE_FIND_PACKAGE_NAME}_${_arg_${_COMP}}_FOUND TRUE ) + if (NOT TARGET NetCDF::NetCDF_${_comp}) + add_library(NetCDF::NetCDF_${_comp} ${_library_type} IMPORTED) + set_target_properties(NetCDF::NetCDF_${_comp} PROPERTIES + IMPORTED_LOCATION ${NetCDF_${_comp}_LIBRARY} + INTERFACE_INCLUDE_DIRECTORIES "${NetCDF_${_comp}_INCLUDE_DIRS}" + INTERFACE_LINK_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} ) + endif() + endif() +endforeach() +set(NetCDF_LIBRARIES "${NetCDF_LIBRARIES}" CACHE STRING "NetCDF library targets" FORCE) + +## Find version via netcdf-config if possible +if (NetCDF_INCLUDE_DIRS) + if( NetCDF_C_CONFIG_EXECUTABLE ) + netcdf_config( ${NetCDF_C_CONFIG_EXECUTABLE} --version _vers ) + if( _vers ) + string(REGEX REPLACE ".* ((([0-9]+)\\.)+([0-9]+)).*" "\\1" NetCDF_VERSION "${_vers}" ) + endif() + else() + foreach( _dir IN LISTS NetCDF_INCLUDE_DIRS) + if( EXISTS "${_dir}/netcdf_meta.h" ) + file(STRINGS "${_dir}/netcdf_meta.h" _netcdf_version_lines + REGEX "#define[ \t]+NC_VERSION_(MAJOR|MINOR|PATCH|NOTE)") + string(REGEX REPLACE ".*NC_VERSION_MAJOR *\([0-9]*\).*" "\\1" _netcdf_version_major "${_netcdf_version_lines}") + string(REGEX REPLACE ".*NC_VERSION_MINOR *\([0-9]*\).*" "\\1" _netcdf_version_minor "${_netcdf_version_lines}") + string(REGEX REPLACE ".*NC_VERSION_PATCH *\([0-9]*\).*" "\\1" _netcdf_version_patch "${_netcdf_version_lines}") + string(REGEX REPLACE ".*NC_VERSION_NOTE *\"\([^\"]*\)\".*" "\\1" _netcdf_version_note "${_netcdf_version_lines}") + set(NetCDF_VERSION "${_netcdf_version_major}.${_netcdf_version_minor}.${_netcdf_version_patch}${_netcdf_version_note}") + unset(_netcdf_version_major) + unset(_netcdf_version_minor) + unset(_netcdf_version_patch) + unset(_netcdf_version_note) + unset(_netcdf_version_lines) + endif() + endforeach() + endif() +endif () + +## Detect additional package properties +netcdf_config(${NetCDF_C_CONFIG_EXECUTABLE} --has-parallel4 _val) +if( NOT _val MATCHES "^(yes|no)$" ) + netcdf_config(${NetCDF_C_CONFIG_EXECUTABLE} --has-parallel _val) +endif() +if( _val MATCHES "^(yes)$" ) + set(NetCDF_PARALLEL TRUE CACHE STRING "NetCDF has parallel IO capability via pnetcdf or hdf5." FORCE) +else() + set(NetCDF_PARALLEL FALSE CACHE STRING "NetCDF has no parallel IO capability." FORCE) +endif() + +## Finalize find_package +include(FindPackageHandleStandardArgs) + +if(NOT NetCDF_FOUND OR _new_search_components) + find_package_handle_standard_args( ${CMAKE_FIND_PACKAGE_NAME} + REQUIRED_VARS NetCDF_INCLUDE_DIRS NetCDF_LIBRARIES + VERSION_VAR NetCDF_VERSION + HANDLE_COMPONENTS ) +endif() + +foreach( _comp IN LISTS _search_components ) + if( NetCDF_${_comp}_FOUND ) + #Record found components to avoid duplication in NetCDF_LIBRARIES for static libraries + set(NetCDF_${_comp}_FOUND ${NetCDF_${_comp}_FOUND} CACHE BOOL "NetCDF ${_comp} Found" FORCE) + #Set a per-package, per-component found variable to communicate between multiple calls to find_package() + set(${PROJECT_NAME}_NetCDF_${_comp}_FOUND True) + endif() +endforeach() + +if( ${CMAKE_FIND_PACKAGE_NAME}_FOUND AND NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY AND _new_search_components) + message( STATUS "Find${CMAKE_FIND_PACKAGE_NAME} [${CMAKE_CURRENT_LIST_DIR}/FindNetCDF.cmake]:" ) + message( STATUS " - NetCDF_VERSION [${NetCDF_VERSION}]") + message( STATUS " - NetCDF_PARALLEL [${NetCDF_PARALLEL}]") + foreach( _comp IN LISTS _new_search_components ) + string( TOUPPER "${_comp}" _COMP ) + message( STATUS " - NetCDF_${_comp}_CONFIG_EXECUTABLE [${NetCDF_${_comp}_CONFIG_EXECUTABLE}]") + if( ${CMAKE_FIND_PACKAGE_NAME}_${_arg_${_COMP}}_FOUND ) + get_filename_component(_root ${NetCDF_${_comp}_INCLUDE_DIR}/.. ABSOLUTE) + if( NetCDF_${_comp}_LIBRARY_SHARED ) + message( STATUS " - NetCDF::NetCDF_${_comp} [SHARED] [Root: ${_root}] Lib: ${NetCDF_${_comp}_LIBRARY} ") + else() + message( STATUS " - NetCDF::NetCDF_${_comp} [STATIC] [Root: ${_root}] Lib: ${NetCDF_${_comp}_LIBRARY} ") + endif() + endif() + endforeach() +endif() + +foreach( _prefix NetCDF NetCDF4 NETCDF NETCDF4 ${CMAKE_FIND_PACKAGE_NAME} ) + set( ${_prefix}_INCLUDE_DIRS ${NetCDF_INCLUDE_DIRS} ) + set( ${_prefix}_LIBRARIES ${NetCDF_LIBRARIES}) + set( ${_prefix}_VERSION ${NetCDF_VERSION} ) + set( ${_prefix}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_FOUND} ) + set( ${_prefix}_CONFIG_EXECUTABLE ${NetCDF_CONFIG_EXECUTABLE} ) + set( ${_prefix}_PARALLEL ${NetCDF_PARALLEL} ) + + foreach( _comp ${_search_components} ) + string( TOUPPER "${_comp}" _COMP ) + set( _arg_comp ${_arg_${_COMP}} ) + set( ${_prefix}_${_comp}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} ) + set( ${_prefix}_${_COMP}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} ) + set( ${_prefix}_${_arg_comp}_FOUND ${${CMAKE_FIND_PACKAGE_NAME}_${_arg_comp}_FOUND} ) + + set( ${_prefix}_${_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} ) + set( ${_prefix}_${_COMP}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} ) + set( ${_prefix}_${_arg_comp}_LIBRARIES ${NetCDF_${_comp}_LIBRARIES} ) + + set( ${_prefix}_${_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} ) + set( ${_prefix}_${_COMP}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} ) + set( ${_prefix}_${_arg_comp}_INCLUDE_DIRS ${NetCDF_${_comp}_INCLUDE_DIRS} ) + endforeach() +endforeach() diff --git a/cmake/Modules/FindPIO.cmake b/cmake/Modules/FindPIO.cmake new file mode 100644 index 0000000000..4988264c46 --- /dev/null +++ b/cmake/Modules/FindPIO.cmake @@ -0,0 +1,181 @@ +# FindPIO.cmake +# +# Copyright UCAR 2020 +# +# Find PIO: A high-level Parallel I/O Library for structured grid applications +# https://github.com/NCAR/ParallelIO +# +# Components available for query: +# C - Has C support +# Fortran - Has Fortran support +# STATIC - Has static targets for supported LANG +# SHARED - Has shared targets for supported LANG +# +# Variables provided: +# PIO_FOUND - True if PIO was found +# PIO_VERSION - Version of installed PIO +# +# Targets provided: +# PIO::PIO_Fortran_STATIC - Fortran interface target for static libraries +# PIO::PIO_Fortran_SHARED - Fortran interface target for shared libraries +# PIO::PIO_Fortran - Fortran interface target alias to shared libraries if available else static libraries +# PIO::PIO_C_STATIC - C interface target for static libraries +# PIO::PIO_C_SHARED - C interface target for shared libraries +# PIO::PIO_C - C interface target alias to shared libraries if available else static libraries +# +# To control finding of this package, set PIO_ROOT environment variable to the full path to the prefix +# under which PIO was installed (e.g., /usr/local) +# + +## Find libraries and paths, and determine found components +find_path(PIO_INCLUDE_DIR NAMES pio.h HINTS "${PIO_PREFIX}" PATH_SUFFIXES include include/pio) +if(PIO_INCLUDE_DIR) + string(REGEX REPLACE "/include(/.+)?" "" PIO_PREFIX ${PIO_INCLUDE_DIR}) + set(PIO_PREFIX ${PIO_PREFIX} CACHE STRING "") + find_path(PIO_MODULE_DIR NAMES pio.mod PATHS "${PIO_PREFIX}" + PATH_SUFFIXES include include/pio lib/pio/module module module/pio NO_DEFAULT_PATH) + if(APPLE) + set(_SHARED_LIB_EXT .dylib) + else() + set(_SHARED_LIB_EXT .so) + endif() + find_library(PIO_C_STATIC_LIB libpioc.a PATHS "${PIO_PREFIX}" PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH) + find_library(PIO_C_SHARED_LIB libpioc${_SHARED_LIB_EXT} PATHS "${PIO_PREFIX}" PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH) + find_library(PIO_Fortran_STATIC_LIB libpiof.a PATHS "${PIO_PREFIX}" PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH) + find_library(PIO_Fortran_SHARED_LIB libpiof${_SHARED_LIB_EXT} PATHS "${PIO_PREFIX}" PATH_SUFFIXES lib lib64 NO_DEFAULT_PATH) + unset(_SHARED_LIB_EXT) + + #Check for Fortran components + if(PIO_MODULE_DIR) + if(PIO_Fortran_STATIC_LIB) + set(PIO_Fortran_STATIC_FOUND 1) + endif() + if(PIO_Fortran_SHARED_LIB) + set(PIO_Fortran_SHARED_FOUND 1) + endif() + if(PIO_Fortran_STATIC_FOUND OR PIO_Fortran_SHARED_FOUND) + set(PIO_Fortran_FOUND 1) + endif() + endif() + #Check for C components + if(PIO_C_STATIC_LIB) + set(PIO_C_STATIC_FOUND 1) + endif() + if(PIO_C_SHARED_LIB) + set(PIO_C_SHARED_FOUND 1) + endif() + if(PIO_C_STATIC_FOUND OR PIO_C_SHARED_FOUND) + set(PIO_C_FOUND 1) + endif() + if(PIO_C_SHARED_FOUND AND (NOT PIO_Fortran_FOUND OR PIO_Fortran_SHARED_FOUND)) + set(PIO_SHARED_FOUND 1) + endif() + if(PIO_C_STATIC_FOUND AND (NOT PIO_Fortran_FOUND OR PIO_Fortran_STATIC_FOUND)) + set(PIO_STATIC_FOUND 1) + endif() +endif() + +## Debugging output +message(DEBUG "[FindPIO] PIO_INCLUDE_DIR: ${PIO_INCLUDE_DIR}") +message(DEBUG "[FindPIO] PIO_PREFIX: ${PIO_PREFIX}") +message(DEBUG "[FindPIO] PIO_MODULE_DIR: ${PIO_MODULE_DIR}") +message(DEBUG "[FindPIO] PIO_Fortran_STATIC_LIB: ${PIO_Fortran_STATIC_LIB}") +message(DEBUG "[FindPIO] PIO_Fortran_SHARED_LIB: ${PIO_Fortran_SHARED_LIB}") +message(DEBUG "[FindPIO] PIO_C_STATIC_LIB: ${PIO_C_STATIC_LIB}") +message(DEBUG "[FindPIO] PIO_C_SHARED_LIB: ${PIO_C_SHARED_LIB}") +message(DEBUG "[FindPIO] PIO_Fortran_FOUND: ${PIO_Fortran_FOUND}") +message(DEBUG "[FindPIO] PIO_C_FOUND: ${PIO_C_FOUND}") +message(DEBUG "[FindPIO] PIO_SHARED_FOUND: ${PIO_SHARED_FOUND}") +message(DEBUG "[FindPIO] PIO_STATIC_FOUND: ${PIO_STATIC_FOUND}") + +## Check package has been found correctly +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + PIO + REQUIRED_VARS + PIO_PREFIX + PIO_INCLUDE_DIR + HANDLE_COMPONENTS +) +message(DEBUG "[FindPIO] PIO_FOUND: ${PIO_FOUND}") + +## Create targets +set(_new_components) + + +# PIO::PIO_Fortran_STATIC imported interface target +if(PIO_Fortran_FOUND AND PIO_STATIC_FOUND AND NOT TARGET PIO::PIO_Fortran_STATIC) + add_library(PIO::PIO_Fortran_STATIC INTERFACE IMPORTED) + set_target_properties(PIO::PIO_Fortran_STATIC PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${PIO_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${PIO_Fortran_STATIC_LIB} + IMPORTED_GLOBAL True ) + if(PIO_MODULE_DIR AND NOT PIO_MODULE_DIR STREQUAL PIO_INCLUDE_DIR ) + set_property(TARGET PIO::PIO_Fortran_STATIC APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PIO_MODULE_DIR}) + endif() + target_link_libraries(PIO::PIO_Fortran_STATIC INTERFACE NetCDF::NetCDF_C) + set(_new_components 1) +endif() + +# PIO::PIO_Fortran_SHARED imported interface target +if(PIO_Fortran_FOUND AND PIO_SHARED_FOUND AND NOT TARGET PIO::PIO_Fortran_SHARED) + add_library(PIO::PIO_Fortran_SHARED INTERFACE IMPORTED) + set_target_properties(PIO::PIO_Fortran_SHARED PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${PIO_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${PIO_Fortran_SHARED_LIB} + IMPORTED_GLOBAL True ) + if(PIO_MODULE_DIR AND NOT PIO_MODULE_DIR STREQUAL PIO_INCLUDE_DIR ) + set_property(TARGET PIO::PIO_Fortran_SHARED APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PIO_MODULE_DIR}) + endif() + set(_new_components 1) +endif() + +# PIO::PIO_C_STATIC imported interface target +if(PIO_C_FOUND AND PIO_STATIC_FOUND AND NOT TARGET PIO::PIO_C_STATIC) + add_library(PIO::PIO_C_STATIC INTERFACE IMPORTED) + set_target_properties(PIO::PIO_C_STATIC PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${PIO_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${PIO_C_STATIC_LIB} + IMPORTED_GLOBAL True ) + target_link_libraries(PIO::PIO_C_STATIC INTERFACE NetCDF::NetCDF_C) + set(_new_components 1) +endif() + +# PIO::PIO_C_SHARED imported interface target +if(PIO_C_FOUND AND PIO_SHARED_FOUND AND NOT TARGET PIO::PIO_C_SHARED) + add_library(PIO::PIO_C_SHARED INTERFACE IMPORTED) + set_target_properties(PIO::PIO_C_SHARED PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES ${PIO_INCLUDE_DIR} + INTERFACE_LINK_LIBRARIES ${PIO_C_SHARED_LIB} + IMPORTED_GLOBAL True ) + set(_new_components 1) +endif() + +# PIO::PIO_Fortran - Shared libraries if available, static otherwise +if(TARGET PIO::PIO_Fortran_SHARED) + add_library(PIO::PIO_Fortran ALIAS PIO::PIO_Fortran_SHARED) +elseif(TARGET PIO::PIO_Fortran_STATIC) + add_library(PIO::PIO_Fortran ALIAS PIO::PIO_Fortran_STATIC) +endif() + +# PIO::PIO_C - Shared libraries if available, static otherwise +if(TARGET PIO::PIO_C_SHARED) + add_library(PIO::PIO_C ALIAS PIO::PIO_C_SHARED) +elseif(TARGET PIO::PIO_C_STATIC) + add_library(PIO::PIO_C ALIAS PIO::PIO_C_STATIC) +endif() + +## Print status +if(${CMAKE_FIND_PACKAGE_NAME}_FOUND AND NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY AND _new_components) + message( STATUS "Find${CMAKE_FIND_PACKAGE_NAME}:" ) + message( STATUS " - ${CMAKE_FIND_PACKAGE_NAME}_PREFIX [${${CMAKE_FIND_PACKAGE_NAME}_PREFIX}]") + set(_found_comps) + foreach( _comp IN ITEMS Fortran C STATIC SHARED ) + if( ${CMAKE_FIND_PACKAGE_NAME}_${_comp}_FOUND ) + list(APPEND _found_comps ${_comp}) + endif() + endforeach() + message( STATUS " - ${CMAKE_FIND_PACKAGE_NAME} Components Found: ${_found_comps}") + unset(_found_comps) +endif() +unset(_new_components) diff --git a/cmake/Modules/FindPnetCDF.cmake b/cmake/Modules/FindPnetCDF.cmake new file mode 100644 index 0000000000..91a076ba57 --- /dev/null +++ b/cmake/Modules/FindPnetCDF.cmake @@ -0,0 +1,174 @@ +# FindPnetCDF.cmake +# +# Copyright UCAR 2020 +# +# Find PnetCDF: A Parallel I/O Library for NetCDF File Access +# https://parallel-netcdf.github.io/ +# +# Components available for query: +# C - Has C support +# CXX - Has CXX support +# Fortran - Has Fortran support +# NetCDF4 - Has NetCDF4 output support +# GPTL - Has profiling support with GPTL enabled +# Threads - Has thread safety enabled +# +# Variables provided: +# PnetCDF_FOUND - True if PnetCDFL was found +# PnetCDF_CONFIG_EXE - pnetcdf-config executable if found +# PnetCDF_VERSION - Version of installed PnetCDF +# PnetCDF_BIN_DIR - PnetCDF binary directory +# PnetCDF_DEBUG - True if PnetCDF is built in debug mode +# +# Targets provided: +# PnetCDF::PnetCDF_Fortran - Fortran interface target +# PnetCDF::PnetCDF_C - C interface target +# PnetCDF::PnetCDF_CXX - CXX interface target +# +# Functions provided: +# pnetcdf_get_config(ret_var flags) - Call `pnetcdf-config` with flags and set ret_var with output on execution success. +# +# +# This module requires the `pnetcdf-config` executable to detect the directories and compiler and linker flags +# necessary for the PnetCDF::PnetCDF target. To control where PnetCDF is found: +# * Option 1: Set an environment or cmake variable `PnetCDF_ROOT` to the install prefix for PnetCDF (e.g. /usr/local) +# * Option 2: Set an environment or cmake variable `PnetCDF_CONFIG_EXE` to the full path to the `pnetcdf-config` +# (e.g., /usr/local/bin/pnetcdf-config) +# + +find_program(PnetCDF_CONFIG_EXE NAMES pnetcdf-config PATH_SUFFIXES bin bin64 PATHS + $ENV{PnetCDF_CONFIG_EXE} ${PnetCDF_ROOT} $ENV{PnetCDF_ROOT} ${PNETCDF_ROOT} $ENV{PNETCDF_ROOT}) +message(DEBUG "[FindPnetCDF] Using PnetCDF_CONFIG_EXE:${PnetCDF_CONFIG_EXE}") + +# pnetcdf_get_config(ret_var flags...) +# Get the output of pnetcdf-config +# Args: +# ret_var: return variable name +# flags: flags to pass to pnetcdf-config +function(pnetcdf_get_config ret_var pcflags) + execute_process(COMMAND ${PnetCDF_CONFIG_EXE} ${pcflags} OUTPUT_VARIABLE _out RESULT_VARIABLE _ret OUTPUT_STRIP_TRAILING_WHITESPACE) + if(_ret EQUAL 0) + separate_arguments(_out) + set(${ret_var} ${_out} PARENT_SCOPE) + else() + set(${ret_var} "" PARENT_SCOPE) + endif() +endfunction() + +## Find libraries and paths, and determine found components +if(EXISTS ${PnetCDF_CONFIG_EXE}) + #Use pnetcdf-config to find the prefix, flags, directories, executables, and libraries + pnetcdf_get_config(PnetCDF_VERSION --version) + string(REGEX MATCH "([0-9.]+)" PnetCDF_VERSION "${PnetCDF_VERSION}") #Match only version actual number + + pnetcdf_get_config(PnetCDF_PREFIX --prefix) + pnetcdf_get_config(PnetCDF_CXX_FOUND --has-c++) + pnetcdf_get_config(PnetCDF_Fortran_FOUND --has-fortran) + pnetcdf_get_config(PnetCDF_NetCDF4_FOUND --netcdf4) + pnetcdf_get_config(PnetCDF_GPTL_FOUND --profiling) + pnetcdf_get_config(PnetCDF_Threads_FOUND --thread-safe) + pnetcdf_get_config(PnetCDF_DEBUG --debug) + pnetcdf_get_config(PnetCDF_INCLUDE_DIR --includedir) + pnetcdf_get_config(PnetCDF_LIB_DIR --libdir) + + #Translate boolean variables from pnetcdf-config enabled/disabled to True/False + foreach(_var IN ITEMS PnetCDF_CXX_FOUND PnetCDF_Fortran_FOUND PnetCDF_NetCDF4_FOUND PnetCDF_GPTL_FOUND PnetCDF_Threads_FOUND PnetCDF_DEBUG) + if( ${_var} MATCHES "(enabled)|([Yy][Ee][Ss])") + set(${_var} True) + else() + set(${_var} False) + endif() + endforeach() + + find_path(PnetCDF_MODULE_DIR NAMES pnetcdf.mod HINTS ${PnetCDF_PREFIX} ${PnetCDF_INCLUDE_DIR} + PATH_SUFFIXES include include/pnetcdf module module/pnetcdf lib/pnetcdf/module NO_DEFAULT_PATH) + if(PnetCDF_Fortran_FOUND AND NOT EXISTS ${PnetCDF_MODULE_DIR}) + message(WARNING "[PnetCDF] pnetcdf-config --has-fortran=yes, but could not find pnetcdf.mod. Set PnetCDF_MODULE_DIR to path containing pnetcdf.mod") + set(PnetCDF_Fortran_FOUND NO) + endif() + + if(PnetCDF_INCLUDE_DIR AND PnetCDF_LIB_DIR) + set(PnetCDF_C_FOUND True) + endif() + + find_path(PnetCDF_BIN_DIR NAMES pnetcdf-config PATH_SUFFIXES bin PATHS ${PnetCDF_PREFIX} NO_DEFAULT_PATH) + find_library(PnetCDF_LIBRARY NAMES pnetcdf PATH_SUFFIXES lib lib64 PATHS ${PnetCDF_PREFIX} NO_DEFAULT_PATH) + #Hide non-documented cache variables reserved for internal/advanced usage + mark_as_advanced( PnetCDF_MODULE_DIR PnetCDF_LIBRARY ) +endif() + +## Debugging output +message(DEBUG "[FindPnetCDF] PnetCDF_CONFIG_EXE: ${PnetCDF_CONFIG_EXE}") +message(DEBUG "[FindPnetCDF] PnetCDF_VERSION: ${PnetCDF_VERSION}") +message(DEBUG "[FindPnetCDF] PnetCDF_C_FOUND: ${PnetCDF_C_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_CXX_FOUND: ${PnetCDF_CXX_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_Fortran_FOUND: ${PnetCDF_Fortran_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_NetCDF4_FOUND: ${PnetCDF_NetCDF4_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_GPTL_FOUND: ${PnetCDF_GPTL_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_Threads_FOUND: ${PnetCDF_Threads_FOUND}") +message(DEBUG "[FindPnetCDF] PnetCDF_DEBUG: ${PnetCDF_DEBUG}") +message(DEBUG "[FindPnetCDF] PnetCDF_PREFIX: ${PnetCDF_PREFIX}") +message(DEBUG "[FindPnetCDF] PnetCDF_BIN_DIR: ${PnetCDF_BIN_DIR}") +message(DEBUG "[FindPnetCDF] PnetCDF_INCLUDE_DIR: ${PnetCDF_INCLUDE_DIR}") +message(DEBUG "[FindPnetCDF] PnetCDF_MODULE_DIR: ${PnetCDF_MODULE_DIR}") +message(DEBUG "[FindPnetCDF] PnetCDF_LIB_DIR: ${PnetCDF_LIB_DIR}") + +## Check package has been found correctly +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args( + PnetCDF + REQUIRED_VARS + PnetCDF_CONFIG_EXE + PnetCDF_PREFIX + VERSION_VAR + PnetCDF_VERSION + HANDLE_COMPONENTS +) +message(DEBUG "[FindPnetCDF] PnetCDF_FOUND: ${PnetCDF_FOUND}") + +## Create targets +set(_new_components) + +# PnetCDF::PnetCDF_Fortran imported interface target +if(PnetCDF_Fortran_FOUND AND NOT TARGET PnetCDF::PnetCDF_Fortran) + add_library(PnetCDF::PnetCDF_Fortran INTERFACE IMPORTED) + set_target_properties(PnetCDF::PnetCDF_Fortran PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${PnetCDF_INCLUDE_DIR} + INTERFACE_LINK_DIRECTORIES ${PnetCDF_LIB_DIR}) + if(PnetCDF_MODULE_DIR AND NOT PnetCDF_MODULE_DIR STREQUAL PnetCDF_INCLUDE_DIR ) + set_property(TARGET PnetCDF::PnetCDF_Fortran APPEND PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${PnetCDF_MODULE_DIR}) + endif() + set(_new_components 1) + target_link_libraries(PnetCDF::PnetCDF_Fortran INTERFACE -lpnetcdf) +endif() + +# PnetCDF::PnetCDF_C imported interface target +if(PnetCDF_C_FOUND AND NOT TARGET PnetCDF::PnetCDF_C) + add_library(PnetCDF::PnetCDF_C INTERFACE IMPORTED) + set_target_properties(PnetCDF::PnetCDF_C PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${PnetCDF_INCLUDE_DIR} + INTERFACE_LINK_DIRECTORIES ${PnetCDF_LIB_DIR}) + set(_new_components 1) +endif() + +# PnetCDF::PnetCDF_CXX imported interface target +if(PnetCDF_CXX_FOUND AND NOT TARGET PnetCDF::PnetCDF_CXX) + add_library(PnetCDF::PnetCDF_CXX INTERFACE IMPORTED) + set_target_properties(PnetCDF::PnetCDF_CXX PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${PnetCDF_INCLUDE_DIR} + INTERFACE_LINK_DIRECTORIES ${PnetCDF_LIB_DIR}) + set(_new_components 1) +endif() + +## Print status +if(${CMAKE_FIND_PACKAGE_NAME}_FOUND AND NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY AND _new_components) + message( STATUS "Find${CMAKE_FIND_PACKAGE_NAME}:" ) + message( STATUS " - ${CMAKE_FIND_PACKAGE_NAME}_VERSION [${${CMAKE_FIND_PACKAGE_NAME}_VERSION}]") + message( STATUS " - ${CMAKE_FIND_PACKAGE_NAME}_PREFIX [${${CMAKE_FIND_PACKAGE_NAME}_PREFIX}]") + set(_found_comps) + foreach( _comp IN ITEMS Fortran C CXX NetCDF4 GPTL Threads ) + if( ${CMAKE_FIND_PACKAGE_NAME}_${_comp}_FOUND ) + list(APPEND _found_comps ${_comp}) + endif() + endforeach() + message( STATUS " - ${CMAKE_FIND_PACKAGE_NAME} Components Found: ${_found_comps}") + unset(_found_comps) +endif() +unset(_new_components) diff --git a/cmake/PackageConfig.cmake.in b/cmake/PackageConfig.cmake.in new file mode 100644 index 0000000000..e7b8860c9c --- /dev/null +++ b/cmake/PackageConfig.cmake.in @@ -0,0 +1,121 @@ +@PACKAGE_INIT@ + +# @PROJECT_NAME@-config.cmake +# +# Valid Find COMPONENTS: +# * SHARED - Require shared libraries. +# * STATIC - Require static libraries. +# * DOUBLE_PRECISION - Find double precision libraries +# * PROFILE - True if GPTL profiling is enabled +# * OpenMP - True if OpenMP support is enabled +# * core_atmosphere - Find atmosphere core +# * core_init_atmosphere - Find init_atmosphere core +# * core_ocean - Find ocean core +# * core_landice - Find landice core +# * core_seaice - Find seaice core +# * core_sw - Find sw core +# * core_test - Find test core +# +# +# Output variables set: +# * @PROJECT_NAME@_VERSION - Version of install package +# * @PROJECT_NAME@_VERSION_MAJOR - Major version of install package +# * @PROJECT_NAME@_VERSION_MINOR - Minor version of install package +# * @PROJECT_NAME@_MODULES_Fortran_COMPILER_ID - Compiler used to generate Fortran Modules +# * @PROJECT_NAME@_MODULES_Fortran_COMPILER_VERSION - Compiler version used to generate Fortran Modules +# * @PROJECT_NAME@_CORE__DATADIR - Location for data files for core (namelist, streams, data tables, etc.) +# * @PROJECT_NAME@_BINDIR - Location for installed auxiliary binaries. +# + +# Imported interface targets provided: +# * @PROJECT_NAME@::core:: - Core targets +# * @PROJECT_NAME@::operators - Operators library target +# * @PROJECT_NAME@::framework - Framework library target +# * @PROJECT_NAME@::external::esmf - exmf_time library target +# * @PROJECT_NAME@::external::ezxml - ezxml library target +# + +# * @PROJECT_NAME@::@PROJECT_NAME@_shared - shared library target: + +#Include targets file. This will create IMPORTED target @PROJECT_NAME@ +string(TOLOWER @PROJECT_NAME@ _project_name_lower) +if(NOT TARGET @PROJECT_NAME@::framework) + include("${CMAKE_CURRENT_LIST_DIR}/${_project_name_lower}-targets-external.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/${_project_name_lower}-targets.cmake") + include("${CMAKE_CURRENT_LIST_DIR}/${_project_name_lower}-targets-core.cmake") +endif() + +set(@PROJECT_NAME@_VERSION @PROJECT_VERSION@) +set(@PROJECT_NAME@_VERSION_MAJOR @PROJECT_VERSION_MAJOR@) +set(@PROJECT_NAME@_VERSION_MINOR @PROJECT_VERSION_MINOR@) + +#Export Fortran compiler version and check module compatibility +set(@PROJECT_NAME@_MODULES_Fortran_COMPILER_ID @CMAKE_Fortran_COMPILER_ID@) +set(@PROJECT_NAME@_MODULES_Fortran_COMPILER_VERSION @CMAKE_Fortran_COMPILER_VERSION@) +if(NOT @PROJECT_NAME@_MODULES_Fortran_COMPILER_ID STREQUAL CMAKE_Fortran_COMPILER_ID + OR NOT @PROJECT_NAME@_MODULES_Fortran_COMPILER_VERSION VERSION_EQUAL CMAKE_Fortran_COMPILER_VERSION) + message(SEND_ERROR "Package @PROJECT_NAME@ provides Fortran modules built with " + "${@PROJECT_NAME@_MODULES_Fortran_COMPILER_ID}-${@PROJECT_NAME@_MODULES_Fortran_COMPILER_VERSION} " + "but this build for ${PROJECT_NAME} uses incompatible compiler ${CMAKE_Fortran_COMPILER_ID}-${CMAKE_Fortran_COMPILER_VERSION}") +endif() + +set_and_check(@PROJECT_NAME@_BINDIR @PACKAGE_BINDIR@) +set_and_check(@PROJECT_NAME@_CMAKE_MODULE_PATH @PACKAGE_CMAKE_MODULE_INSTALL_PATH@) +set(CMAKE_MODULE_PATH ${@PROJECT_NAME@_CMAKE_MODULE_PATH} ${CMAKE_MODULE_PATH}) + +include(CMakeFindDependencyMacro) +if(@OpenMP_Fortran_FOUND@) #OpenMP_Fortran_FOUND + if(NOT OpenMP_Fortran_FOUND) + find_package(OpenMP REQUIRED COMPONENTS Fortran) + endif() + set(@PROJECT_NAME@_OpenMP_FOUND True) +endif() +if(NOT MPI_Fortran_FOUND) + find_package(MPI REQUIRED COMPONENTS Fortran) +endif() +if(NOT NetCDF_Fortran_FOUND) + find_package(NetCDF REQUIRED COMPONENTS Fortran) +endif() +find_package(PnetCDF REQUIRED COMPONENTS Fortran) +find_package(PIO REQUIRED COMPONENTS Fortran C) +if(@MPAS_PROFILE@) #MPAS_PROFILE + if(NOT GPTL_FOUND) + find_dependency(GPTL REQUIRED) + endif() + set(@PROJECT_NAME@_PROFILE_FOUND) +endif() + +if(@BUILD_SHARED_LIBS@) #BUILD_SHARED_LIBS + set(@PROJECT_NAME@_SHARED_FOUND True) +else() + set(@PROJECT_NAME@_STATIC_FOUND True) +endif() +if(@MPAS_DOUBLE_PRECISION@) #MPAS_DOUBLE_PRECISION + set(@PROJECT_NAME@_DOUBLE_PRECISION_FOUND True) +else() + set(@PROJECT_NAME@_DOUBLE_PRECISION_FOUND False) +endif() +set(MPAS_CORES @MPAS_CORES@) +foreach(_core IN LISTS MPAS_CORES) + string(TOUPPER ${_core} _CORE) + set_and_check(@PROJECT_NAME@_CORE_${_CORE}_DATADIR @PACKAGE_CORE_DATADIR_ROOT@/core_${_core}) + set(@PROJECT_NAME@_core_${_core}_FOUND True) +endforeach() + +check_required_components("@PROJECT_NAME@") + +## Print status +if(NOT @PROJECT_NAME@_FIND_QUIETLY) + #Get list of all found components for printing + set(_found_components) + set(_all_components SHARED STATIC PROFILE OpenMP DOUBLE_PRECISION core_atmosphere core_init_atmosphere core_landice core_ocean core_sw core_test) + foreach(_cmp IN LISTS _all_components) + if(@PROJECT_NAME@_${_cmp}_FOUND) + list(APPEND _found_components ${_cmp}) + endif() + endforeach() + + message(STATUS "Found @PROJECT_NAME@: (version: \"@PROJECT_VERSION@\") (components: ${_found_components})") + unset(_found_components) + unset(_all_components) +endif() diff --git a/src/core_atmosphere/CMakeLists.txt b/src/core_atmosphere/CMakeLists.txt new file mode 100644 index 0000000000..9563fcac87 --- /dev/null +++ b/src/core_atmosphere/CMakeLists.txt @@ -0,0 +1,200 @@ + +## Source files +# physics/ +set(ATMOSPHERE_CORE_PHYSICS_SOURCES + ccpp_kinds.F + mpas_atmphys_camrad_init.F + mpas_atmphys_constants.F + mpas_atmphys_control.F + mpas_atmphys_date_time.F + mpas_atmphys_driver_cloudiness.F + mpas_atmphys_driver_microphysics.F + mpas_atmphys_driver_oml.F + mpas_atmphys_finalize.F + mpas_atmphys_functions.F + mpas_atmphys_init_microphysics.F + mpas_atmphys_interface.F + mpas_atmphys_landuse.F + mpas_atmphys_lsm_noahinit.F + mpas_atmphys_manager.F + mpas_atmphys_o3climatology.F + mpas_atmphys_rrtmg_lwinit.F + mpas_atmphys_rrtmg_swinit.F + mpas_atmphys_update.F + mpas_atmphys_update_surface.F + mpas_atmphys_utilities.F + mpas_atmphys_driver.F + mpas_atmphys_driver_convection.F + mpas_atmphys_driver_gwdo.F + mpas_atmphys_driver_lsm.F + mpas_atmphys_driver_pbl.F + mpas_atmphys_driver_radiation_lw.F + mpas_atmphys_driver_radiation_sw.F + mpas_atmphys_driver_seaice.F + mpas_atmphys_driver_sfclayer.F + mpas_atmphys_init.F + mpas_atmphys_lsm_shared.F + mpas_atmphys_packages.F + mpas_atmphys_todynamics.F + mpas_atmphys_vars.F +) +list(TRANSFORM ATMOSPHERE_CORE_PHYSICS_SOURCES PREPEND physics/) + +## Unused +# physics/physics_wrf/ +set(ATMOSPHERE_CORE_PHYSICS_WRF_SOURCES + libmassv.F + module_bep_bem_helper.F + module_bl_gwdo.F + module_bl_ysu.F + module_cam_error_function.F + module_cam_shr_kind_mod.F + module_cam_support.F + module_cu_gf.mpas.F + module_mp_kessler.F + module_mp_radar.F + module_mp_thompson.F + module_mp_thompson_cldfra3.F + module_mp_wsm6.F + module_ra_cam_support.F + module_ra_rrtmg_lw.F + module_ra_rrtmg_sw.F + module_ra_rrtmg_vinterp.F + module_sf_bem.F + module_sf_bep.F + module_sf_bep_bem.F + module_sf_noah_seaice.F + module_sf_noah_seaice_drv.F + module_sf_noahdrv.F + module_sf_noahlsm.F + module_sf_noahlsm_glacial_only.F + module_sf_oml.F + module_sf_sfcdiags.F + module_sf_sfclay.F + module_sf_sfclayrev.F + module_sf_urban.F + bl_mynn_post.F + bl_mynn_pre.F + module_bl_mynn.F + module_cu_kfeta.F + module_cu_ntiedtke.F + module_cu_tiedtke.F + module_ra_cam.F + module_sf_mynn.F + sf_mynn_pre.F +) + +list(TRANSFORM ATMOSPHERE_CORE_PHYSICS_WRF_SOURCES PREPEND physics/physics_wrf/) + +set(ATMOSPHERE_CORE_PHYSICS_MMM_SOURCES + bl_gwdo.F + bl_ysu.F + cu_ntiedtke.F + module_libmassv.F + mp_wsm6.F + mp_wsm6_effectRad.F + bl_mynn.F + bl_mynn_subroutines.F + mp_radar.F + mynn_shared.F + sf_mynn.F + sf_sfclayrev.F +) + +list(TRANSFORM ATMOSPHERE_CORE_PHYSICS_MMM_SOURCES PREPEND physics/physics_mmm/) + +# diagnostics/ +set(ATMOSPHERE_CORE_DIAGNOSTIC_SOURCES + mpas_atm_diagnostic_template.F + mpas_atm_diagnostics_manager.F + mpas_atm_diagnostics_utils.F + mpas_cloud_diagnostics.F + mpas_convective_diagnostics.F + mpas_isobaric_diagnostics.F + mpas_pv_diagnostics.F + mpas_soundings.F +) + +list(TRANSFORM ATMOSPHERE_CORE_DIAGNOSTIC_SOURCES PREPEND diagnostics/) + +# dynamics/ +set(ATMOSPHERE_CORE_DYNAMICS_SOURCES + mpas_atm_boundaries.F + mpas_atm_iau.F + mpas_atm_time_integration.F) +list(TRANSFORM ATMOSPHERE_CORE_DYNAMICS_SOURCES PREPEND dynamics/) + +# utils/ +set(ATMOSPHERE_CORE_UTILS_SOURCES + atmphys_build_tables_thompson.F + build_tables.F) +list(TRANSFORM ATMOSPHERE_CORE_UTILS_SOURCES PREPEND utils/) + +# core_atosphere +set(ATMOSPHERE_CORE_SOURCES + mpas_atm_dimensions.F + mpas_atm_threading.F + mpas_atm_core.F + mpas_atm_core_interface.F + mpas_atm_halos.F +) + +## Generated includes +set(ATMOSPHERE_CORE_INCLUDES + block_dimension_routines.inc + core_variables.inc + define_packages.inc + domain_variables.inc + namelist_call.inc + namelist_defines.inc + setup_immutable_streams.inc + structs_and_variables.inc) + + +add_library(core_atmosphere ${ATMOSPHERE_CORE_SOURCES} + ${ATMOSPHERE_CORE_PHYSICS_SOURCES} + ${ATMOSPHERE_CORE_PHYSICS_MMM_SOURCES} + ${ATMOSPHERE_CORE_PHYSICS_WRF_SOURCES} + ${ATMOSPHERE_CORE_DIAGNOSTIC_SOURCES} + ${ATMOSPHERE_CORE_DYNAMICS_SOURCES}) + +set(CORE_ATMOSPHERE_COMPILE_DEFINITIONS + mpas=1 + MPAS_NATIVE_TIMERS +) +if (${DO_PHYSICS}) + list(APPEND CORE_ATMOSPHERE_COMPILE_DEFINITIONS DO_PHYSICS) +endif () +target_compile_definitions(core_atmosphere PRIVATE ${CORE_ATMOSPHERE_COMPILE_DEFINITIONS}) +set_MPAS_DEBUG_flag(core_atmosphere) +mpas_core_target(CORE atmosphere TARGET core_atmosphere INCLUDES ${ATMOSPHERE_CORE_INCLUDES}) + +#Get physics_wrf tables from MPAS-Data +include(FetchContent) +if (${PROJECT_VERSION} VERSION_GREATER_EQUAL 7.0) + set(MPAS_DATA_GIT_TAG v${PROJECT_VERSION_MAJOR}.0) +else () + set(MPAS_DATA_GIT_TAG master) +endif () + +FetchContent_Declare(mpas_data + GIT_REPOSITORY https://github.com/MPAS-Dev/MPAS-Data.git + GIT_TAG ${MPAS_DATA_GIT_TAG} + GIT_PROGRESS True + GIT_SHALLOW True) +FetchContent_Populate(mpas_data) +message(STATUS "MPAS-Data source dir: ${mpas_data_SOURCE_DIR}") +set(PHYSICS_WRF_DATA_DIR ${mpas_data_SOURCE_DIR}/atmosphere/physics_wrf/files) +file(GLOB PHYSICS_WRF_DATA RELATIVE ${PHYSICS_WRF_DATA_DIR} "${PHYSICS_WRF_DATA_DIR}/*") +file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/core_atmosphere) +foreach (data_file IN LISTS PHYSICS_WRF_DATA) + execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink ${PHYSICS_WRF_DATA_DIR}/${data_file} + ${CMAKE_BINARY_DIR}/${PROJECT_NAME}/core_atmosphere/${data_file}) +endforeach () +install(DIRECTORY ${PHYSICS_WRF_DATA_DIR}/ DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/core_atmosphere) + +add_executable(mpas_atmosphere_build_tables ${ATMOSPHERE_CORE_UTILS_SOURCES}) +target_link_libraries(mpas_atmosphere_build_tables PUBLIC core_atmosphere) +mpas_fortran_target(mpas_atmosphere_build_tables) +install(TARGETS mpas_atmosphere_build_tables EXPORT ${PROJECT_NAME}ExportsCore + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) diff --git a/src/core_init_atmosphere/CMakeLists.txt b/src/core_init_atmosphere/CMakeLists.txt new file mode 100644 index 0000000000..cd67fb4d2e --- /dev/null +++ b/src/core_init_atmosphere/CMakeLists.txt @@ -0,0 +1,78 @@ +# MPAS/src/core_init_atmosphere +# +# Targets +# MPAS::core::init_atmosphere + +## Generated includes +set(init_atm_core_inc + block_dimension_routines.inc + core_variables.inc + define_packages.inc + domain_variables.inc + namelist_call.inc + namelist_defines.inc + setup_immutable_streams.inc + structs_and_variables.inc) + +## core_init_atosphere +set(init_atm_core_srcs + mpas_atm_advection.F + mpas_atmphys_constants.F + mpas_atmphys_date_time.F + mpas_atmphys_functions.F + mpas_atmphys_initialize_real.F + mpas_atmphys_utilities.F + mpas_geotile_manager.F + mpas_init_atm_bitarray.F + mpas_init_atm_cases.F + mpas_init_atm_core.F + mpas_init_atm_core_interface.F + mpas_init_atm_gwd.F + mpas_init_atm_hinterp.F + mpas_init_atm_llxy.F + mpas_init_atm_queue.F + mpas_init_atm_read_met.F + mpas_init_atm_static.F + mpas_init_atm_surface.F + mpas_init_atm_vinterp.F + mpas_kd_tree.F + mpas_parse_geoindex.F + mpas_stack.F + read_geogrid.c) + +add_library(core_init_atmosphere ${init_atm_core_srcs}) +if (${DO_PHYSICS}) + target_compile_definitions(core_init_atmosphere PRIVATE DO_PHYSICS) +endif () +if (MPAS_DOUBLE_PRECISION) + set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fdefault-real-8 -fdefault-double-8") +else () + target_compile_definitions(core_init_atmosphere PRIVATE SINGLE_PRECISION) +endif () +if (${CMAKE_BUILD_TYPE} MATCHES "Debug") + target_compile_definitions(core_init_atmosphere PRIVATE MPAS_DEBUG) +endif () +if (${PIO_FOUND}) + FILE(STRINGS ${PIO_PREFIX}/lib/libpio.settings PIO_SETTINGS) + foreach (setting ${PIO_SETTINGS}) + string(FIND ${setting} "PIO Version" found) + if (${found} GREATER -1) + string(FIND ${setting} "2." pos) + if (${pos} GREATER -1) + set(PIO_VERSION 2) + else () + set(PIO_VERSION 1) + endif () + break() + endif () + endforeach () + if (${PIO_VERSION} EQUAL 1) + target_compile_definitions(core_init_atmosphere PRIVATE USE_PIO1) + else () + target_compile_definitions(core_init_atmosphere PRIVATE USE_PIO2) + endif () + target_compile_definitions(core_init_atmosphere PRIVATE MPAS_PIO_SUPPORT) +endif () +target_compile_definitions(core_init_atmosphere PRIVATE mpas=1) +target_compile_definitions(framework PRIVATE MPAS_NATIVE_TIMERS) +mpas_core_target(CORE init_atmosphere TARGET core_init_atmosphere INCLUDES ${init_atm_core_inc}) diff --git a/src/external/esmf_time_f90/CMakeLists.txt b/src/external/esmf_time_f90/CMakeLists.txt new file mode 100644 index 0000000000..6546880fb4 --- /dev/null +++ b/src/external/esmf_time_f90/CMakeLists.txt @@ -0,0 +1,34 @@ + +set(_esmf_time_src + ESMF_AlarmClockMod.F90 + ESMF_AlarmMod.F90 + ESMF_BaseMod.F90 + ESMF_BaseTimeMod.F90 + ESMF_CalendarMod.F90 + ESMF_ClockMod.F90 + ESMF.F90 + ESMF_FractionMod.F90 + ESMF_Macros.inc + ESMF_ShrTimeMod.F90 + ESMF_Stubs.F90 + ESMF_TimeIntervalMod.F90 + ESMF_TimeMgr.inc + ESMF_TimeMod.F90 + MeatMod.F90 + wrf_error_fatal.F90 + wrf_message.F90) + +add_library(esmf ${_esmf_time_src}) +mpas_fortran_target(esmf) +add_library(${PROJECT_NAME}::external::esmf ALIAS esmf) + +target_compile_definitions(esmf PRIVATE HIDE_MPI=1) + +target_include_directories(esmf PUBLIC $) + +target_link_libraries(esmf PUBLIC MPI::MPI_Fortran) + +install(TARGETS esmf EXPORT ${PROJECT_NAME}ExportsExternal + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + diff --git a/src/external/ezxml/CMakeLists.txt b/src/external/ezxml/CMakeLists.txt new file mode 100644 index 0000000000..34955dbd98 --- /dev/null +++ b/src/external/ezxml/CMakeLists.txt @@ -0,0 +1,8 @@ + +add_library(ezxml ezxml.c) +add_library(${PROJECT_NAME}::external::ezxml ALIAS ezxml) +target_include_directories(ezxml PUBLIC $) + +install(TARGETS ezxml EXPORT ${PROJECT_NAME}ExportsExternal + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt new file mode 100644 index 0000000000..535ba07891 --- /dev/null +++ b/src/framework/CMakeLists.txt @@ -0,0 +1,70 @@ + +set(MPAS_FRAMEWORK_SOURCES + mpas_block_creator.F + mpas_block_decomp.F + mpas_bootstrapping.F + mpas_c_interfacing.F + mpas_constants.F + mpas_decomp.F + mpas_domain_routines.F + mpas_field_routines.F + mpas_forcing.F + mpas_hash.F + mpas_io_units.F + mpas_kind_types.F + mpas_pool_routines.F + mpas_sort.F + mpas_stream_list.F + mpas_threading.F + mpas_timer.F + mpas_abort.F + mpas_attlist.F + mpas_derived_types.F + mpas_dmpar.F + mpas_framework.F + mpas_halo.F + mpas_io.F + mpas_io_streams.F + mpas_log.F + mpas_stream_inquiry.F + mpas_stream_manager.F + mpas_string_utils.F + mpas_timekeeping.F + pool_hash.c + random_id.c + regex_matching.c + xml_stream_parser.c + stream_inquiry.c) + +add_library(framework ${MPAS_FRAMEWORK_SOURCES}) +set_MPAS_DEBUG_flag(framework) +set(FRAMEWORK_COMPILE_DEFINITIONS + USE_PIO2 + MPAS_PIO_SUPPORT + mpas=1 + MPAS_NATIVE_TIMERS) +target_compile_definitions(framework PRIVATE ${FRAMEWORK_COMPILE_DEFINITIONS}) + +mpas_fortran_target(framework) +add_library(${PROJECT_NAME}::framework ALIAS framework) + +set_target_properties(framework PROPERTIES OUTPUT_NAME mpas_framework) + +set(FRAMEWORK_LINK_LIBRARIES + ${PROJECT_NAME}::external::esmf + ${PROJECT_NAME}::external::ezxml + PIO::PIO_Fortran + PIO::PIO_C + PnetCDF::PnetCDF_Fortran + NetCDF::NetCDF_Fortran + NetCDF::NetCDF_C + MPI::MPI_Fortran) + +if (MPAS_PROFILE) + list(APPEND FRAMEWORK_LINK_LIBRARIES GPTL::GPTL) +endif () +target_link_libraries(framework PUBLIC ${FRAMEWORK_LINK_LIBRARIES}) + +install(TARGETS framework EXPORT ${PROJECT_NAME}Exports + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/operators/CMakeLists.txt b/src/operators/CMakeLists.txt new file mode 100644 index 0000000000..5c04339b80 --- /dev/null +++ b/src/operators/CMakeLists.txt @@ -0,0 +1,24 @@ +list(APPEND _mpas_operators_src + mpas_geometry_utils.F + mpas_matrix_operations.F + mpas_rbf_interpolation.F + mpas_spline_interpolation.F + mpas_tensor_operations.F + mpas_tracer_advection_helpers.F + mpas_tracer_advection_mono.F + mpas_tracer_advection_std.F + mpas_vector_operations.F + mpas_vector_reconstruction.F) + +add_library(operators ${_mpas_operators_src}) + +mpas_fortran_target(operators) + +add_library(${PROJECT_NAME}::operators ALIAS operators) + +set_target_properties(operators PROPERTIES OUTPUT_NAME mpas_operators) +target_link_libraries(operators PUBLIC ${PROJECT_NAME}::framework) + +install(TARGETS operators EXPORT ${PROJECT_NAME}Exports + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt new file mode 100644 index 0000000000..513ae48cf1 --- /dev/null +++ b/src/tools/CMakeLists.txt @@ -0,0 +1,30 @@ + +if (DEFINED ENV{MPAS_TOOL_DIR}) + message(STATUS "*** Using MPAS tools from $ENV{MPAS_TOOL_DIR} ***") + add_custom_target(namelist_gen) + add_custom_command( + TARGET namelist_gen PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ENV{MPAS_TOOL_DIR}/input_gen/namelist_gen ${CMAKE_CURRENT_BINARY_DIR}/namelist_gen) + add_custom_target(streams_gen) + add_custom_command( + TARGET streams_gen PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ENV{MPAS_TOOL_DIR}/input_gen/streams_gen ${CMAKE_CURRENT_BINARY_DIR}/streams_gen) + add_custom_target(parse) + add_custom_command( + TARGET parse PRE_BUILD + COMMAND ${CMAKE_COMMAND} -E copy $ENV{MPAS_TOOL_DIR}/input_gen/parse ${CMAKE_CURRENT_BINARY_DIR}/parse) +else() + message(STATUS "*** Building MPAS tools from source ***") + # Make build tools, need to be compiled with serial compiler. + set(CMAKE_C_COMPILER ${SCC}) + + add_executable(streams_gen input_gen/streams_gen.c input_gen/test_functions.c ../external/ezxml/ezxml.c) + add_executable(namelist_gen input_gen/namelist_gen.c input_gen/test_functions.c ../external/ezxml/ezxml.c) + add_executable(parse registry/parse.c registry/dictionary.c registry/gen_inc.c registry/fortprintf.c registry/utility.c ../external/ezxml/ezxml.c) + + foreach(EXEITEM streams_gen namelist_gen parse) + target_compile_definitions(${EXEITEM} PRIVATE ${CPPDEFS}) + target_compile_options(${EXEITEM} PRIVATE "-Uvector") + target_include_directories(${EXEITEM} PRIVATE ${INCLUDES}) + endforeach() +endif() diff --git a/src/tools/input_gen/CMakeLists.txt b/src/tools/input_gen/CMakeLists.txt new file mode 100644 index 0000000000..2b8c770476 --- /dev/null +++ b/src/tools/input_gen/CMakeLists.txt @@ -0,0 +1,6 @@ + +add_executable(mpas_namelist_gen namelist_gen.c test_functions.c) +target_link_libraries(mpas_namelist_gen PUBLIC ${PROJECT_NAME}::external::ezxml) + +add_executable(mpas_streams_gen streams_gen.c test_functions.c) +target_link_libraries(mpas_streams_gen PUBLIC ${PROJECT_NAME}::external::ezxml) diff --git a/src/tools/registry/CMakeLists.txt b/src/tools/registry/CMakeLists.txt new file mode 100644 index 0000000000..7d18e3f3b6 --- /dev/null +++ b/src/tools/registry/CMakeLists.txt @@ -0,0 +1,17 @@ + +#Parsing library core-independent code +add_library(parselib dictionary.c fortprintf.c utility.c) +target_link_libraries(parselib PUBLIC ${PROJECT_NAME}::external::ezxml) +target_link_libraries(parselib PUBLIC ${PROJECT_NAME}::external::esmf) + +# Generate parser for each core +# +# Note: One parser is required per-core because the gen_inc.c depends on +# a pre-processor define MPAS_NAMELIST_SUFFIX which is core specific +foreach(_core IN LISTS MPAS_CORES) + add_executable(mpas_parse_${_core} parse.c gen_inc.c) + target_link_libraries(mpas_parse_${_core} PUBLIC parselib) + target_compile_definitions(mpas_parse_${_core} PRIVATE MPAS_NAMELIST_SUFFIX=${_core} + MPAS_GIT_VERSION=${MPAS_GIT_VERSION} + MPAS_EXE_NAME=${_core}_model) +endforeach() From 5e8c15ecb97d920acaf4f65d99afc94d05dba375 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 29 May 2024 17:40:02 -0600 Subject: [PATCH 028/115] Copy invariant fields used by scalar transport via OpenACC data directives This commit adds code and OpenACC directives in the MPAS_atm_dynamics_init routine to transfer invariant fields used by scalar transport code to the device, and it adds code and directives in the MPAS_atm_dynamics_finalize routine to delete these invariant fields. The new code and directives are surrounded by tests on the MPAS_OPENACC preprocessing macro, and so the changes in this commit have no effect unless MPAS-A is compiled with OPENACC=true. Since the MPAS_atm_dynamics_init routine is called once during model startup and the MPAS_atm_dynamics_finalize once during model shutdown, the invariant fields will remain resident on the device across all dynamics time steps. --- .../dynamics/mpas_atm_time_integration.F | 124 ++++++++++++++++++ 1 file changed, 124 insertions(+) diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index 9098f4e658..0fd6c64c92 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -188,6 +188,24 @@ subroutine mpas_atm_dynamics_init(domain) type (field2DReal), pointer :: tend_ru_physicsField, tend_rtheta_physicsField, tend_rho_physicsField #endif +#ifdef MPAS_OPENACC + type (mpas_pool_type), pointer :: mesh + + real (kind=RKIND), dimension(:), pointer :: dvEdge + integer, dimension(:,:), pointer :: cellsOnCell + integer, dimension(:,:), pointer :: cellsOnEdge + integer, dimension(:,:), pointer :: advCellsForEdge + integer, dimension(:,:), pointer :: edgesOnCell + integer, dimension(:), pointer :: nAdvCellsForEdge + integer, dimension(:), pointer :: nEdgesOnCell + real (kind=RKIND), dimension(:,:), pointer :: adv_coefs + real (kind=RKIND), dimension(:,:), pointer :: adv_coefs_3rd + real (kind=RKIND), dimension(:,:), pointer :: edgesOnCell_sign + real (kind=RKIND), dimension(:), pointer :: invAreaCell + integer, dimension(:), pointer :: bdyMaskCell + integer, dimension(:), pointer :: bdyMaskEdge +#endif + #ifdef MPAS_CAM_DYCORE nullify(tend_physics) @@ -203,6 +221,50 @@ subroutine mpas_atm_dynamics_init(domain) call mpas_allocate_scratch_field(tend_ru_physicsField) #endif +#ifdef MPAS_OPENACC + nullify(mesh) + call mpas_pool_get_subpool(domain % blocklist % structs, 'mesh', mesh) + + call mpas_pool_get_array(mesh, 'dvEdge', dvEdge) + !$acc enter data copyin(dvEdge) + + call mpas_pool_get_array(mesh, 'cellsOnCell', cellsOnCell) + !$acc enter data copyin(cellsOnCell) + + call mpas_pool_get_array(mesh, 'cellsOnEdge', cellsOnEdge) + !$acc enter data copyin(cellsOnEdge) + + call mpas_pool_get_array(mesh, 'advCellsForEdge', advCellsForEdge) + !$acc enter data copyin(advCellsForEdge) + + call mpas_pool_get_array(mesh, 'edgesOnCell', edgesOnCell) + !$acc enter data copyin(edgesOnCell) + + call mpas_pool_get_array(mesh, 'nAdvCellsForEdge', nAdvCellsForEdge) + !$acc enter data copyin(nAdvCellsForEdge) + + call mpas_pool_get_array(mesh, 'nEdgesOnCell', nEdgesOnCell) + !$acc enter data copyin(nEdgesOnCell) + + call mpas_pool_get_array(mesh, 'adv_coefs', adv_coefs) + !$acc enter data copyin(adv_coefs) + + call mpas_pool_get_array(mesh, 'adv_coefs_3rd', adv_coefs_3rd) + !$acc enter data copyin(adv_coefs_3rd) + + call mpas_pool_get_array(mesh, 'edgesOnCell_sign', edgesOnCell_sign) + !$acc enter data copyin(edgesOnCell_sign) + + call mpas_pool_get_array(mesh, 'invAreaCell', invAreaCell) + !$acc enter data copyin(invAreaCell) + + call mpas_pool_get_array(mesh, 'bdyMaskCell', bdyMaskCell) + !$acc enter data copyin(bdyMaskCell) + + call mpas_pool_get_array(mesh, 'bdyMaskEdge', bdyMaskEdge) + !$acc enter data copyin(bdyMaskEdge) +#endif + end subroutine mpas_atm_dynamics_init @@ -233,6 +295,24 @@ subroutine mpas_atm_dynamics_finalize(domain) type (field2DReal), pointer :: tend_ru_physicsField, tend_rtheta_physicsField, tend_rho_physicsField #endif +#ifdef MPAS_OPENACC + type (mpas_pool_type), pointer :: mesh + + real (kind=RKIND), dimension(:), pointer :: dvEdge + integer, dimension(:,:), pointer :: cellsOnCell + integer, dimension(:,:), pointer :: cellsOnEdge + integer, dimension(:,:), pointer :: advCellsForEdge + integer, dimension(:,:), pointer :: edgesOnCell + integer, dimension(:), pointer :: nAdvCellsForEdge + integer, dimension(:), pointer :: nEdgesOnCell + real (kind=RKIND), dimension(:,:), pointer :: adv_coefs + real (kind=RKIND), dimension(:,:), pointer :: adv_coefs_3rd + real (kind=RKIND), dimension(:,:), pointer :: edgesOnCell_sign + real (kind=RKIND), dimension(:), pointer :: invAreaCell + integer, dimension(:), pointer :: bdyMaskCell + integer, dimension(:), pointer :: bdyMaskEdge +#endif + #ifdef MPAS_CAM_DYCORE nullify(tend_physics) @@ -248,6 +328,50 @@ subroutine mpas_atm_dynamics_finalize(domain) call mpas_deallocate_scratch_field(tend_ru_physicsField) #endif +#ifdef MPAS_OPENACC + nullify(mesh) + call mpas_pool_get_subpool(domain % blocklist % structs, 'mesh', mesh) + + call mpas_pool_get_array(mesh, 'dvEdge', dvEdge) + !$acc exit data delete(dvEdge) + + call mpas_pool_get_array(mesh, 'cellsOnCell', cellsOnCell) + !$acc exit data delete(cellsOnCell) + + call mpas_pool_get_array(mesh, 'cellsOnEdge', cellsOnEdge) + !$acc exit data delete(cellsOnEdge) + + call mpas_pool_get_array(mesh, 'advCellsForEdge', advCellsForEdge) + !$acc exit data delete(advCellsForEdge) + + call mpas_pool_get_array(mesh, 'edgesOnCell', edgesOnCell) + !$acc exit data delete(edgesOnCell) + + call mpas_pool_get_array(mesh, 'nAdvCellsForEdge', nAdvCellsForEdge) + !$acc exit data delete(nAdvCellsForEdge) + + call mpas_pool_get_array(mesh, 'nEdgesOnCell', nEdgesOnCell) + !$acc exit data delete(nEdgesOnCell) + + call mpas_pool_get_array(mesh, 'adv_coefs', adv_coefs) + !$acc exit data delete(adv_coefs) + + call mpas_pool_get_array(mesh, 'adv_coefs_3rd', adv_coefs_3rd) + !$acc exit data delete(adv_coefs_3rd) + + call mpas_pool_get_array(mesh, 'edgesOnCell_sign', edgesOnCell_sign) + !$acc exit data delete(edgesOnCell_sign) + + call mpas_pool_get_array(mesh, 'invAreaCell', invAreaCell) + !$acc exit data delete(invAreaCell) + + call mpas_pool_get_array(mesh, 'bdyMaskCell', bdyMaskCell) + !$acc exit data delete(bdyMaskCell) + + call mpas_pool_get_array(mesh, 'bdyMaskEdge', bdyMaskEdge) + !$acc exit data delete(bdyMaskEdge) +#endif + end subroutine mpas_atm_dynamics_finalize From 8fc105a5e7ee7be6f873f5e42cd34add6b8d740f Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Fri, 26 Apr 2024 13:48:19 -0600 Subject: [PATCH 029/115] * In ./src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F, commented print statements in subroutine init_pbl. --- src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F b/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F index 6969ff6e5b..ead98e82fd 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F @@ -713,10 +713,10 @@ subroutine init_pbl(configs) pbl_select: select case (trim(pbl_scheme)) case("bl_mynn") - call mpas_log_write('--- enter subroutine bl_mynn_init:') +! call mpas_log_write('--- enter subroutine bl_mynn_init:') call bl_mynn_init(cp,cpv,cice,cliq,ep_1,ep_2,gravity,karman,P0,R_d,R_v,svp1,svp2,svp3,svpt0, & xlf,xls,xlv,errmsg,errflg) - call mpas_log_write('--- end subroutine bl_mynn_mpas_init:') +! call mpas_log_write('--- end subroutine bl_mynn_init:') case default From 4e55180362df75fcd5d3f8fcffecd139043d1f72 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Wed, 10 Apr 2024 14:45:15 -0600 Subject: [PATCH 030/115] * In ./src/core_init_atmosphere: -> added the module mpas_init_atm_thompson_aerosols.F to interpolate climatological monthly-mean Gocart-based water-friendly and ice-friendly aerosols for use with the aerosol-aware Thompson cloud microphysics scheme. -> in Registry.xml, added climatological, and first-guess water- and ice-friendly aerosols for use with the aerosol-aware Thompson cloud microphysics scheme. -> in mpas_init_atm_cases.F, added call to initialize first-guess water- and ice- friendly aerosols. -> modified Makefile accordingly. --- src/core_init_atmosphere/Makefile | 10 + src/core_init_atmosphere/Registry.xml | 35 + .../mpas_init_atm_cases.F | 2 + .../mpas_init_atm_thompson_aerosols.F | 753 ++++++++++++++++++ 4 files changed, 800 insertions(+) create mode 100644 src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F diff --git a/src/core_init_atmosphere/Makefile b/src/core_init_atmosphere/Makefile index 9494a5b7c2..c605a5f8b5 100644 --- a/src/core_init_atmosphere/Makefile +++ b/src/core_init_atmosphere/Makefile @@ -14,6 +14,7 @@ OBJS = \ mpas_init_atm_gwd.o \ mpas_init_atm_surface.o \ mpas_init_atm_vinterp.o \ + mpas_init_atm_thompson_aerosols.o \ read_geogrid.o \ mpas_atmphys_constants.o \ mpas_atmphys_date_time.o \ @@ -57,6 +58,7 @@ mpas_init_atm_cases.o: \ mpas_init_atm_static.o \ mpas_init_atm_gwd.o \ mpas_init_atm_surface.o \ + mpas_init_atm_thompson_aerosols.o \ mpas_init_atm_vinterp.o \ mpas_atmphys_constants.o \ mpas_atmphys_functions.o \ @@ -64,6 +66,14 @@ mpas_init_atm_cases.o: \ mpas_init_atm_hinterp.o: mpas_init_atm_queue.o mpas_init_atm_bitarray.o +mpas_init_atm_thompson_aerosols.o: \ + mpas_init_atm_read_met.o \ + mpas_init_atm_hinterp.o \ + mpas_init_atm_llxy.o \ + mpas_init_atm_vinterp.o \ + mpas_atmphys_date_time.o \ + mpas_atmphys_utilities.o + mpas_advection.o: mpas_init_atm_read_met.o: diff --git a/src/core_init_atmosphere/Registry.xml b/src/core_init_atmosphere/Registry.xml index 1773a80e54..3bceabd57b 100644 --- a/src/core_init_atmosphere/Registry.xml +++ b/src/core_init_atmosphere/Registry.xml @@ -38,6 +38,8 @@ description="The number of first-guess soil layers"/> + @@ -123,6 +125,11 @@ description="The number of vertical soil levels in the first-guess dataset (case 7 only)" possible_values="Positive integer values"/> + + + + + + + + + + + + + + + + @@ -1010,6 +1039,12 @@ + + + + diff --git a/src/core_init_atmosphere/mpas_init_atm_cases.F b/src/core_init_atmosphere/mpas_init_atm_cases.F index afc18f1135..4e05bb3862 100644 --- a/src/core_init_atmosphere/mpas_init_atm_cases.F +++ b/src/core_init_atmosphere/mpas_init_atm_cases.F @@ -19,6 +19,7 @@ module init_atm_cases use mpas_timer use mpas_init_atm_static use mpas_init_atm_surface + use mpas_init_atm_thompson_aerosols use mpas_atmphys_constants, only: svpt0,svp1,svp2,svp3 use mpas_atmphys_functions use mpas_atmphys_initialize_real @@ -244,6 +245,7 @@ subroutine init_atm_setup_case(domain, stream_manager) diag, diag_physics, block_ptr % dimensions, block_ptr % configs) if (config_met_interp) then + call init_atm_thompson_aerosols(block_ptr, mesh, block_ptr % configs, diag, state) call physics_initialize_real(mesh, fg, domain % dminfo, block_ptr % dimensions, block_ptr % configs) end if diff --git a/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F b/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F new file mode 100644 index 0000000000..cd13552c9c --- /dev/null +++ b/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F @@ -0,0 +1,753 @@ +! Copyright (c) 2024 The University Corporation for Atmospheric Research (UCAR). +! +! Unless noted otherwise source code is licensed under the BSD license. +! Additional copyright and license information can be found in the LICENSE file +! distributed with this code, or at http://mpas-dev.github.com/license.html +! +!================================================================================================================= + module mpas_init_atm_thompson_aerosols + use mpas_derived_types + use mpas_kind_types + use mpas_log + use mpas_dmpar + use mpas_pool_routines + + use init_atm_read_met + use init_atm_hinterp + use init_atm_llxy + use init_atm_vinterp + use mpas_atmphys_date_time + use mpas_atmphys_utilities + + implicit none + private + public:: init_atm_thompson_aerosols + + +!mpas_init_atm_thompson_aerosols contains the subroutines needed for the interpolation of climatological +!monthly-averaged hygroscopic ("water friendly") and nonhygroscopic ("ice friendly") aerosols used in the +!Thompson parameterization of cloud microphysics with Gocart CCN and IN nucleation. +!Laura D. Fowler (laura@ucar.edu) / 2024-04-10. + + + contains + + +!================================================================================================================= + subroutine init_atm_thompson_aerosols(block,mesh,configs,diag,state) +!================================================================================================================= + +!input arguments: + type (mpas_pool_type),intent(in):: configs + type(mpas_pool_type),intent(in):: diag + +!inout arguments: + type(block_type),intent(inout),target:: block + type(mpas_pool_type),intent(inout) :: mesh + type(mpas_pool_type),intent(inout) :: state +!local variables and pointers: + character (len=StrKIND),pointer:: config_start_time + character(len=StrKIND):: filename_gocart + character(len=StrKIND):: initial_date,mess + + logical:: lexist + +!----------------------------------------------------------------------------------------------------------------- + call mpas_log_write('--- enter subroutine init_atm_gocart:') + +!inquire if the GOCART input file exists: + filename_gocart = "QNWFA_QNIFA_Monthly_Sigma.dat" + + inquire(file=filename_gocart,exist=lexist) + if(lexist) then + + call mpas_pool_get_config(configs,'config_start_time',config_start_time) + + !--- horizontal interpolation of the climatological monthly-averaged GOCART data to the MPAS mesh: + call init_hinterp_gocart(block,mesh) + + !--- interpolation of the monthly-averaged GOCART data to the initial date, and vertical interpolation to + ! the MPAS levels: + initial_date = trim(config_start_time) + call init_vinterp_gocart(initial_date,mesh,diag,state) + else + call mpas_log_write('QNWFA_QNIFA_Monthly_Sigma.dat was not found in local directory:') + call mpas_log_write('nwfa and nifa are set to zero and not interpolated from climatological data.') + endif + + call mpas_log_write('--- end subroutine init_atm_gocart.') + call mpas_log_write(' ') + + end subroutine init_atm_thompson_aerosols + +!================================================================================================================= + subroutine init_vinterp_gocart(initial_date,mesh,diag,state) +!================================================================================================================= + +!input arguments: + character(len=StrKIND),intent(in):: initial_date + type(mpas_pool_type),intent(in):: diag + +!inout arguments: + type(mpas_pool_type),intent(inout):: mesh + type(mpas_pool_type),intent(inout):: state + +!local variables and pointers: + integer,pointer:: nCells,nGocartLevels,nVertLevels,nMonths + integer,pointer:: index_nifa,index_nwfa + integer:: iCell,k,kk,n + + real(kind=RKIND),dimension(:,:),pointer :: nifa,nwfa,pressure + real(kind=RKIND),dimension(:,:,:),pointer:: nifa_clim,nwfa_clim,pwif_clim + real(kind=RKIND),dimension(:,:,:),pointer:: scalars + + real(kind=RKIND):: target_p + real(kind=RKIND),dimension(:,:),allocatable:: nifa_int,nwfa_int,pwif_int,sorted_arr + + real(kind=RKIND),dimension(:),allocatable:: dummy2 + real(kind=RKIND),dimension(:,:),allocatable:: dummy1 + +!----------------------------------------------------------------------------------------------------------------- + call mpas_log_write('--- enter subroutine init_vinterp_gocart:') + + call mpas_pool_get_dimension(mesh,'nCells' ,nCells ) + call mpas_pool_get_dimension(mesh,'nGocartLevels',nGocartLevels) + call mpas_pool_get_dimension(mesh,'nVertLevels' ,nVertLevels ) + call mpas_pool_get_dimension(mesh,'nMonths' ,nMonths ) + + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) + + call mpas_pool_get_array(diag,'pressure_base',pressure) + + call mpas_pool_get_array(mesh,'nifa_gocart_clim',nifa_clim) + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',nwfa_clim) + call mpas_pool_get_array(mesh,'pwif_gocart_clim',pwif_clim) + + call mpas_pool_get_array(state,'scalars',scalars) + nifa => scalars(index_nifa,:,:) + nwfa => scalars(index_nwfa,:,:) + + if(.not.allocated(nifa_int) ) allocate(nifa_int(nGocartLevels,nCells)) + if(.not.allocated(nwfa_int) ) allocate(nwfa_int(nGocartLevels,nCells)) + if(.not.allocated(pwif_int) ) allocate(pwif_int(nGocartLevels,nCells)) + if(.not.allocated(sorted_arr)) allocate(sorted_arr(2,nGocartLevels)) + +!--- interpolation of the monthly-averaged GOCART data to the initial date, and vertical interpolation to the +! MPAS levels: + if(.not.allocated(dummy2)) allocate(dummy2(nCells)) + if(.not.allocated(dummy1)) allocate(dummy1(nMonths,nCells)) + + do k = 1, nGocartLevels + dummy2(1:nCells) = 0._RKIND + dummy1(1:nMonths,1:nCells) = pwif_clim(1:nMonths,k,1:nCells) + call monthly_interp_to_date(nCells,initial_date,dummy1,dummy2) + pwif_int(k,1:nCells) = dummy2(1:nCells) + enddo + +!--- nifa: + do k = 1, nGocartLevels + dummy2(1:nCells) = 0._RKIND + dummy1(1:nMonths,1:nCells) = nifa_clim(1:nMonths,k,1:nCells) + call monthly_interp_to_date(nCells,initial_date,dummy1,dummy2) + nifa_int(k,1:nCells) = dummy2(1:nCells) + enddo + do iCell = 1, nCells + sorted_arr(1,1:nGocartLevels) = 0._RKIND + sorted_arr(1,1:nGocartLevels) = 0._RKIND + do k = 1, nGocartLevels + kk = nGocartLevels + 1 -k + sorted_arr(1,kk) = pwif_int(k,iCell) + sorted_arr(2,kk) = nifa_int(k,iCell) + enddo + do k = nVertLevels, 1, -1 + target_p = pressure(k,iCell) + nifa(k,iCell) = vertical_interp(target_p,nGocartLevels-1, & + sorted_arr(:,1:nGocartLevels-1),order=1,extrap=0) + if(target_p >= pwif_int(1,iCell) .and. k < nVertLevels) nifa(k,iCell) = nifa(k+1,iCell) + enddo + enddo + +!--- nwfa: + do k = 1, nGocartLevels + dummy2(1:nCells) = 0._RKIND + dummy1(1:nMonths,1:nCells) = nwfa_clim(1:nMonths,k,1:nCells) + call monthly_interp_to_date(nCells,initial_date,dummy1,dummy2) + nwfa_int(k,1:nCells) = dummy2(1:nCells) + enddo + do iCell = 1, nCells + sorted_arr(1,1:nGocartLevels) = 0._RKIND + sorted_arr(1,1:nGocartLevels) = 0._RKIND + do k = 1, nGocartLevels + kk = nGocartLevels + 1 -k + sorted_arr(1,kk) = pwif_int(k,iCell) + sorted_arr(2,kk) = nwfa_int(k,iCell) + enddo + do k = nVertLevels, 1, -1 + target_p = pressure(k,iCell) + nwfa(k,iCell) = vertical_interp(target_p,nGocartLevels-1, & + sorted_arr(:,1:nGocartLevels-1),order=1,extrap=0) + if(target_p >= pwif_int(1,iCell) .and. k < nVertLevels) nwfa(k,iCell) = nwfa(k+1,iCell) + enddo + enddo + +!--- deallocation of local arrays: + if(allocated(dummy1) ) deallocate(dummy1 ) + if(allocated(dummy2) ) deallocate(dummy2 ) + if(allocated(nifa_int) ) deallocate(nifa_int ) + if(allocated(nwfa_int) ) deallocate(nwfa_int ) + if(allocated(pwif_int) ) deallocate(pwif_int ) + if(allocated(sorted_arr)) deallocate(sorted_arr) + + call mpas_log_write('--- enter subroutine init_vinterp_gocart:') + + end subroutine init_vinterp_gocart + +!================================================================================================================= + subroutine init_hinterp_gocart(block,mesh) +!================================================================================================================= + +!inout arguments: + type(block_type),intent(inout),target:: block + type (mpas_pool_type),intent(inout) :: mesh + +!local variables: + type(dm_info),pointer:: dminfo + type(met_data) :: field !real*4 meteorological data. + type(proj_info):: proj + + character(len=StrKIND):: filename_gocart + logical:: have_landmask + + integer,pointer:: nCells + integer:: i,j + integer:: iCell,istatus,k,masked,nmonths,nInterpPoints + integer,dimension(5):: interp_list + integer,dimension(:),pointer:: landmask + integer,dimension(:),pointer:: mask_array + + real(kind=RKIND):: fillval,maskval,msgval + real(kind=RKIND):: lat,lon,x,y + real(kind=RKIND),dimension(:),pointer :: latCell,lonCell + real(kind=RKIND),dimension(:),pointer :: latPoints,lonPoints + real(kind=RKIND),dimension(:,:,:),pointer:: nifa_clim,nwfa_clim,pwif_clim + real(kind=RKIND),dimension(:,:,:),pointer:: destField3d + + real(kind=RKIND),dimension(:,:),allocatable:: maskslab,rslab + +!----------------------------------------------------------------------------------------------------------------- + call mpas_log_write('--- enter subroutine init_hinterp_gocart:') + + dminfo => block%domain%dminfo + + filename_gocart = "QNWFA_QNIFA_Monthly_Sigma.dat" + + call mpas_pool_get_dimension(mesh,'nCells',nCells) + + call mpas_pool_get_array(mesh,'landmask',landmask) + call mpas_pool_get_array(mesh,'latCell' ,latCell ) + call mpas_pool_get_array(mesh,'lonCell' ,lonCell ) + + call mpas_pool_get_array(mesh,'nifa_gocart_clim',nifa_clim) + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',nwfa_clim) + call mpas_pool_get_array(mesh,'pwif_gocart_clim',pwif_clim) + +!open intermediate file: + istatus = 0 + call read_gocart_init(trim(filename_gocart),istatus) + if(istatus /= 0) then + call mpas_log_write('********************************************************************************') + call mpas_log_write('Error opening gocart file '//trim(filename_gocart)) + call mpas_log_write('********************************************************************************') + call mpas_dmpar_abort(dminfo) + else + call mpas_log_write('Processing file '//trim(filename_gocart)) + end if + +!scan through all fields in the file, looking for the LANDSEA field: + have_landmask = .false. + call read_next_met_field(field,istatus) + do while (istatus == 0) + if(index(field % field, 'LANDSEA') /= 0) then + have_landmask = .true. + if(.not.allocated(maskslab)) allocate(maskslab(-2:field%nx+3,field%ny)) + + maskslab(1:field%nx,1:field%ny) = field%slab(1:field%nx,1:field%ny) + maskslab(0 ,1:field%ny) = field%slab(field%nx ,1:field%ny) + maskslab(-1,1:field%ny) = field%slab(field%nx-1,1:field%ny) + maskslab(-2,1:field%ny) = field%slab(field%nx-2,1:field%ny) + maskslab(field%nx+1,1:field%ny) = field%slab(1,1:field%ny) + maskslab(field%nx+2,1:field%ny) = field%slab(2,1:field%ny) + maskslab(field%nx+3,1:field%ny) = field%slab(3,1:field%ny) +! call mpas_log_write('minval, maxval of LANDSEA = $r $r',realArgs=(/minval(maskslab),maxval(maskslab)/)) + end if + deallocate(field%slab) + call read_next_met_field(field,istatus) + end do + call read_met_close() + + if(.not. have_landmask) then + call mpas_log_write('********************************************************************************') + call mpas_log_write('Landsea mask not available from the surface file') + call mpas_log_write('********************************************************************************') + end if + + +!read gocart data: + istatus = 0 + call read_gocart_init(trim(filename_gocart),istatus) + if(istatus /= 0) then + call mpas_log_write('********************************************************************************') + call mpas_log_write('Error opening gocart file '// trim(filename_gocart)) + call mpas_log_write('********************************************************************************') + call mpas_dmpar_abort(dminfo) + endif + call read_next_met_field(field, istatus) + +!horizontally interpolate GOCART data: + do while(istatus == 0) + + interp_list(1) = FOUR_POINT + interp_list(2) = W_AVERAGE4 + interp_list(3) = W_AVERAGE16 + interp_list(4) = SEARCH + interp_list(5) = 0 + + maskval = -1.0 + masked = -1 + fillval = 0.0 + msgval = 0.0 + + mask_array => landmask + + if(index(field % field, 'QNIFA_JAN') /= 0 .or. & + index(field % field, 'QNIFA_FEB') /= 0 .or. & + index(field % field, 'QNIFA_MAR') /= 0 .or. & + index(field % field, 'QNIFA_APR') /= 0 .or. & + index(field % field, 'QNIFA_MAY') /= 0 .or. & + index(field % field, 'QNIFA_JUN') /= 0 .or. & + index(field % field, 'QNIFA_JUL') /= 0 .or. & + index(field % field, 'QNIFA_AUG') /= 0 .or. & + index(field % field, 'QNIFA_SEP') /= 0 .or. & + index(field % field, 'QNIFA_OCT') /= 0 .or. & + index(field % field, 'QNIFA_NOV') /= 0 .or. & + index(field % field, 'QNIFA_DEC') /= 0 .or. & + index(field % field, 'QNWFA_JAN') /= 0 .or. & + index(field % field, 'QNWFA_FEB') /= 0 .or. & + index(field % field, 'QNWFA_MAR') /= 0 .or. & + index(field % field, 'QNWFA_APR') /= 0 .or. & + index(field % field, 'QNWFA_MAY') /= 0 .or. & + index(field % field, 'QNWFA_JUN') /= 0 .or. & + index(field % field, 'QNWFA_JUL') /= 0 .or. & + index(field % field, 'QNWFA_AUG') /= 0 .or. & + index(field % field, 'QNWFA_SEP') /= 0 .or. & + index(field % field, 'QNWFA_OCT') /= 0 .or. & + index(field % field, 'QNWFA_NOV') /= 0 .or. & + index(field % field, 'QNWFA_DEC') /= 0 .or. & + index(field % field, 'P_WIF_JAN') /= 0 .or. & + index(field % field, 'P_WIF_FEB') /= 0 .or. & + index(field % field, 'P_WIF_MAR') /= 0 .or. & + index(field % field, 'P_WIF_APR') /= 0 .or. & + index(field % field, 'P_WIF_MAY') /= 0 .or. & + index(field % field, 'P_WIF_JUN') /= 0 .or. & + index(field % field, 'P_WIF_JUL') /= 0 .or. & + index(field % field, 'P_WIF_AUG') /= 0 .or. & + index(field % field, 'P_WIF_SEP') /= 0 .or. & + index(field % field, 'P_WIF_OCT') /= 0 .or. & + index(field % field, 'P_WIF_NOV') /= 0 .or. & + index(field % field, 'P_WIF_DEC') /= 0) then + + ! + !set up projection: + ! + call map_init(proj) + + if(field%iproj == PROJ_LATLON) then + call map_set(PROJ_LATLON,proj, & + latinc = real(field%deltalat,RKIND), & + loninc = real(field%deltalon,RKIND), & + knowni = 1.0_RKIND, & + knownj = 1.0_RKIND, & + lat1 = real(field%startlat,RKIND), & + lon1 = real(field%startlon,RKIND)) + elseif(field%iproj == PROJ_GAUSS) then + call map_set(PROJ_GAUSS,proj, & + nlat = nint(field%deltalat), & + loninc = 360.0_RKIND / real(field%nx,RKIND), & + lat1 = real(field%startlat,RKIND), & + lon1 = real(field%startlon,RKIND)) + endif + + ! + !horizontally interpolate field at level k: + ! + if(index(field%field,'QNIFA_JAN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_JAN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 1 + elseif(index(field%field,'QNIFA_FEB') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_FEB at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 2 + elseif(index(field%field,'QNIFA_MAR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_MAR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 3 + elseif(index(field%field,'QNIFA_APR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_APR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 4 + elseif(index(field%field,'QNIFA_MAY') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_MAY at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 5 + elseif(index(field%field,'QNIFA_JUN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_JUN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 6 + elseif(index(field%field,'QNIFA_JUL') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_JUL at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 7 + elseif(index(field%field,'QNIFA_AUG') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_AUG at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 8 + elseif(index(field%field,'QNIFA_SEP') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_SEP at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 9 + elseif(index(field%field,'QNIFA_OCT') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_OCT at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 10 + elseif(index(field%field,'QNIFA_NOV') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_NOV at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 11 + elseif(index(field%field,'QNIFA_DEC') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNIFA_DEC at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nifa_gocart_clim',destField3d) + nmonths = 12 + elseif(index(field%field,'QNWFA_JAN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_JAN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 1 + elseif(index(field%field,'QNWFA_FEB') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_FEB at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 2 + elseif(index(field%field,'QNWFA_MAR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_MAR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 3 + elseif(index(field%field,'QNWFA_APR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_APR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 4 + elseif(index(field%field,'QNWFA_MAY') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_MAY at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 5 + elseif(index(field%field,'QNWFA_JUN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_JUN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 6 + elseif(index(field%field,'QNWFA_JUL') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_JUL at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 7 + elseif(index(field%field,'QNWFA_AUG') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_AUG at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 8 + elseif(index(field%field,'QNWFA_SEP') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_SEP at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 9 + elseif(index(field%field,'QNWFA_OCT') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_OCT at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 10 + elseif(index(field%field,'QNWFA_NOV') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_NOV at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 11 + elseif(index(field%field,'QNWFA_DEC') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating QNWFA_DEC at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'nwfa_gocart_clim',destField3d) + nmonths = 12 + elseif(index(field%field,'P_WIF_JAN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_JAN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 1 + elseif(index(field%field,'P_WIF_FEB') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_FEB at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 2 + elseif(index(field%field,'P_WIF_MAR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_MAR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 3 + elseif(index(field%field,'P_WIF_APR') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_APR at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 4 + elseif(index(field%field,'P_WIF_MAY') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_MAY at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 5 + elseif(index(field%field,'P_WIF_JUN') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_JUN at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 6 + elseif(index(field%field,'P_WIF_JUL') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_JUL at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 7 + elseif(index(field%field,'P_WIF_AUG') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_AUG at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 8 + elseif(index(field%field,'P_WIF_SEP') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_SEP at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 9 + elseif(index(field%field,'P_WIF_OCT') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_OCT at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 10 + elseif(index(field%field,'P_WIF_NOV') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_NOV at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 11 + elseif(index(field%field,'P_WIF_DEC') /= 0) then + k = field%xlvl + call mpas_log_write('Interpolating P_WIF_DEC at $i',intArgs=(/k/)) + nInterpPoints = nCells + latPoints => latCell + lonPoints => lonCell + call mpas_pool_get_array(mesh,'pwif_gocart_clim',destField3d) + nmonths = 12 + endif + + allocate(rslab(-2:field%nx+3,field%ny)) + rslab(1:field%nx,1:field%ny) = field%slab(1:field%nx,1:field%ny) + rslab(0,1:field%ny) = field%slab(field%nx ,1:field%ny) + rslab(-1,1:field%ny) = field%slab(field%nx-1,1:field%ny) + rslab(-2,1:field%ny) = field%slab(field%nx-2,1:field%ny) + rslab(field%nx+1,1:field%ny) = field%slab(1,1:field%ny) + rslab(field%nx+2,1:field%ny) = field%slab(2,1:field%ny) + rslab(field%nx+3,1:field%ny) = field%slab(3,1:field%ny) + + do iCell = 1, nInterpPoints + if(mask_array(iCell) /= masked) then + lat = latPoints(iCell)*DEG_PER_RAD + lon = lonPoints(iCell)*DEG_PER_RAD + call latlon_to_ij(proj,lat,lon,x,y) + if(x < 0.5) then + lon = lon + 360.0 + call latlon_to_ij(proj,lat,lon,x,y) + elseif(x > real(field%nx,kind=RKIND)+ 0.5) then + lon = lon - 360.0 + call latlon_to_ij(proj,lat,lon,x,y) + endif + + if(maskval /= -1.0) then + destField3d(nmonths,k,iCell) = interp_sequence(x,y,1,rslab,-2,field%nx+3,1,field%ny,1,1,msgval, \ + interp_list,1,maskval=maskval,mask_array=maskslab) + else + destField3d(nmonths,k,iCell) = interp_sequence(x,y,1,rslab,-2,field%nx+3,1,field%ny,1,1,msgval, \ + interp_list,1) + endif + else + destField3d(nmonths,k,iCell) = fillval + endif + enddo + deallocate(rslab) + + endif + deallocate(field%slab) + call read_next_met_field(field,istatus) + + enddo + + call read_met_close() + + call mpas_log_write('--- end subroutine init_hinterp_gocart:') + + end subroutine init_hinterp_gocart + +!================================================================================================================= + subroutine read_gocart_init(fg_source,istatus) +!================================================================================================================= + +!input arguments: + character(len=*),intent(in):: fg_source + +!output arguments: + integer,intent(out):: istatus + +!local variables: + logical:: is_used + integer:: io_status + +!----------------------------------------------------------------------------------------------------------------- + + istatus = 0 + + do input_unit = 10, 100 + inquire(unit=input_unit,opened=is_used) + if (.not. is_used) exit + end do + if(input_unit > 100) & + call mpas_log_write('Error: In read_gocart_init(), couldn''t find an available Fortran unit.') + open(unit=input_unit, file=trim(fg_source), status='old', form='unformatted', iostat=io_status) + + if (io_status > 0) istatus = 1 + + end subroutine read_gocart_init + +!================================================================================================================= + end module mpas_init_atm_thompson_aerosols +!================================================================================================================= From 6f469e335ac0706347eadd8941ef00aa82cc9e96 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Wed, 10 Apr 2024 14:52:51 -0600 Subject: [PATCH 031/115] * In ./src/core_atmosphere/physics/physics_wrf, updated module_mp_thompson.F to WRF-v4.1.4. --- .../physics/physics_wrf/module_mp_thompson.F | 399 +++++++++++------- 1 file changed, 254 insertions(+), 145 deletions(-) diff --git a/src/core_atmosphere/physics/physics_wrf/module_mp_thompson.F b/src/core_atmosphere/physics/physics_wrf/module_mp_thompson.F index 9abf279048..8e24340501 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_mp_thompson.F +++ b/src/core_atmosphere/physics/physics_wrf/module_mp_thompson.F @@ -1,4 +1,7 @@ !================================================================================================================= +!reference: WRF-v4.1.4 +!Laura D. Fowler (laura@ucar.edu) / 2020-01-10. + !module_mp_thompson was originally copied from./phys/module_mp_thompson.F from WRF version 3.8. Modifications made !to the original sourcecode are mostly confined to subroutine thompson_init. !Laura D. Fowler (laura@ucar.edu) / 2016-06-04. @@ -11,7 +14,18 @@ ! Laura D. Fowler (laura@ucar.edu) / 2016-10-29. ! * in subroutine mp_gt_driver, moved the initialization of variables Nt_c and mu_c ! before initialization of local mixing ratios and number concentrations. -! Laura D. Fowler (lara@ucar.edu) / 2916-12-30. +! Laura D. Fowler (laura@ucar.edu) / 2016-12-30. +! * in subroutine freezeH2O, modified the calculation of the variable prob, following +! Greg Thompson for the release of WRF version 3.9.0. +! Laura D. Fowler (laura@ucar.edu) / 2017-03-27. +! * in subroutine mp_gt_driver, added the variables vqr, vqi, vqs, and vqg to output the +! mean mass-weighted fall velocities of rain, cloud ice, snow, and graupel to compute +! diagnostics of lightning flash rates. +! Laura D. Fowler (laura@ucar.edu) / 2017-04-19. +! * in subroutine mp_gt_driver, changed the declarations of arrays vqg1d, vqid1,vqr1d, and vqs1d, +! from (kts:kte) to (kts:kte+1) to match the dimensions of arrays vtgk, vtik, vtsk, and vtrk, in +! subroutine mp_thompson. +! Laura D. Fowler (laura@ucar.edu) / 2017-08-31. !+---+-----------------------------------------------------------------+ @@ -52,7 +66,7 @@ !.. Remaining values should probably be left alone. !.. !..Author: Greg Thompson, NCAR-RAL, gthompsn@ucar.edu, 303-497-2805 -!..Last modified: 01 Aug 2016 Aerosol additions to v3.5.1 code 9/2013 +!..Last modified: 24 Jan 2018 Aerosol additions to v3.5.1 code 9/2013 !.. Cloud fraction additions 11/2014 part of pre-v3.7 !+---+-----------------------------------------------------------------+ !wrft:model_layer:physics @@ -60,6 +74,7 @@ ! MODULE module_mp_thompson + use mpas_log use mpas_kind_types use mpas_atmphys_functions, only: gammp,wgamma,rslf,rsif use mpas_atmphys_utilities @@ -90,6 +105,8 @@ MODULE module_mp_thompson !.. scheme. In 2-moment cloud water, Nt_c represents a maximum of !.. droplet concentration and nu_c is also variable depending on local !.. droplet number concentration. +!.. MPAS: Nt_c is initialized to 100.E6 over oceans and 300.E6 over land as +! a function of landmask in subroutine init_thompson_clouddroplets_forMPAS. ! REAL, PARAMETER, PRIVATE:: Nt_c = 100.E6 REAL, PARAMETER, PRIVATE:: Nt_c_max = 1999.E6 REAL, PRIVATE:: Nt_c @@ -97,10 +114,12 @@ MODULE module_mp_thompson !..Declaration of constants for assumed CCN/IN aerosols when none in !.. the input data. Look inside the init routine for modifications !.. due to surface land-sea points or vegetation characteristics. - REAL, PARAMETER, PRIVATE:: naIN0 = 1.5E6 - REAL, PARAMETER, PRIVATE:: naIN1 = 0.5E6 - REAL, PARAMETER, PRIVATE:: naCCN0 = 300.0E6 - REAL, PARAMETER, PRIVATE:: naCCN1 = 50.0E6 +!.. MPAS: naIN0, naIN1, naCCN0, and naCCN1 are used in init_thompson_aerosols_forMPAS +!.. for initialization of nwfa. and nifa. + REAL, PARAMETER, PUBLIC:: naIN0 = 1.5E6 + REAL, PARAMETER, PUBLIC:: naIN1 = 0.5E6 + REAL, PARAMETER, PUBLIC:: naCCN0 = 300.0E6 + REAL, PARAMETER, PUBLIC:: naCCN1 = 50.0E6 !..Generalized gamma distributions for rain, graupel and cloud ice. !.. N(D) = N_0 * D**mu * exp(-lamda*D); mu=0 is exponential. @@ -235,12 +254,12 @@ MODULE module_mp_thompson INTEGER, PARAMETER, PRIVATE:: ntb_i1 = 55 INTEGER, PARAMETER, PRIVATE:: ntb_t = 9 INTEGER, PRIVATE:: nic1, nic2, nii2, nii3, nir2, nir3, nis2, nig2, nig3 - INTEGER, PARAMETER, PRIVATE:: ntb_arc = 7 - INTEGER, PARAMETER, PRIVATE:: ntb_arw = 9 - INTEGER, PARAMETER, PRIVATE:: ntb_art = 7 - INTEGER, PARAMETER, PRIVATE:: ntb_arr = 5 - INTEGER, PARAMETER, PRIVATE:: ntb_ark = 4 - INTEGER, PARAMETER, PRIVATE:: ntb_IN = 55 + INTEGER, PARAMETER, PUBLIC:: ntb_arc = 7 + INTEGER, PARAMETER, PUBLIC:: ntb_arw = 9 + INTEGER, PARAMETER, PUBLIC:: ntb_art = 7 + INTEGER, PARAMETER, PUBLIC:: ntb_arr = 5 + INTEGER, PARAMETER, PUBLIC:: ntb_ark = 4 + INTEGER, PARAMETER, PUBLIC:: ntb_IN = 55 INTEGER, PRIVATE:: niIN2 DOUBLE PRECISION, DIMENSION(nbins+1):: xDx @@ -979,17 +998,18 @@ END SUBROUTINE thompson_init !+---+-----------------------------------------------------------------+ !..This is a wrapper routine designed to transfer values from 3D to 1D. !+---+-----------------------------------------------------------------+ - SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & - nwfa, nifa, nwfa2d, & - th, pii, p, w, dz, dt_in, itimestep, & - RAINNC, RAINNCV, & - SNOWNC, SNOWNCV, & - GRAUPELNC, GRAUPELNCV, SR, & + SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & + nwfa, nifa, nwfa2d, nifa2d, & + th, pii, p, w, dz, dt_in, itimestep, & + RAINNC, RAINNCV, & + SNOWNC, SNOWNCV, & + GRAUPELNC, GRAUPELNCV, SR, & + rainprod, evapprod, & refl_10cm, diagflag, do_radar_ref, & re_cloud, re_ice, re_snow, & has_reqc, has_reqi, has_reqs, & #if defined(mpas) - ntc,muc,rainprod,evapprod, & + ntc,muc, & #endif ids,ide, jds,jde, kds,kde, & ! domain dims ims,ime, jms,jme, kms,kme, & ! memory dims @@ -1005,7 +1025,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & qv, qc, qr, qi, qs, qg, ni, nr, th REAL, DIMENSION(ims:ime, kms:kme, jms:jme), OPTIONAL, INTENT(INOUT):: & nc, nwfa, nifa - REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL, INTENT(IN):: nwfa2d + REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL, INTENT(IN):: nwfa2d, nifa2d REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: & re_cloud, re_ice, re_snow INTEGER, INTENT(IN):: has_reqc, has_reqi, has_reqs @@ -1015,11 +1035,11 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & RAINNC, RAINNCV, SR REAL, DIMENSION(ims:ime, jms:jme), OPTIONAL, INTENT(INOUT):: & SNOWNC, SNOWNCV, GRAUPELNC, GRAUPELNCV + REAL, DIMENSION(ims:ime, kms:kme, jms:jme), OPTIONAL, INTENT(INOUT):: & + rainprod,evapprod #if defined(mpas) REAL, DIMENSION(ims:ime, jms:jme), INTENT(IN):: & ntc,muc - REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT):: & - rainprod,evapprod REAL, DIMENSION(ims:ime, kms:kme, jms:jme), INTENT(INOUT), OPTIONAL:: & refl_10cm #else @@ -1035,10 +1055,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & nr1d, nc1d, nwfa1d, nifa1d, & t1d, p1d, w1d, dz1d, rho, dBZ REAL, DIMENSION(kts:kte):: re_qc1d, re_qi1d, re_qs1d -#if defined(mpas) - REAL, DIMENSION(kts:kte):: & - rainprod1d, evapprod1d -#endif + REAL, DIMENSION(kts:kte):: rainprod1d, evapprod1d REAL, DIMENSION(its:ite, jts:jte):: pcp_ra, pcp_sn, pcp_gr, pcp_ic REAL:: dt, pptrain, pptsnow, pptgraul, pptice REAL:: qc_max, qr_max, qs_max, qi_max, qg_max, ni_max, nr_max @@ -1050,7 +1067,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & INTEGER:: i_start, j_start, i_end, j_end LOGICAL, OPTIONAL, INTENT(IN) :: diagflag INTEGER, OPTIONAL, INTENT(IN) :: do_radar_ref - CHARACTER*256:: mp_debug +! CHARACTER*256:: mp_debug !+---+ @@ -1098,9 +1115,9 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qg = 0 kmax_ni = 0 kmax_nr = 0 - do i = 1, 256 - mp_debug(i:i) = char(0) - enddo +! do i = 1, 256 +! mp_debug(i:i) = char(0) +! enddo ! if (.NOT. is_aerosol_aware .AND. PRESENT(nc) .AND. PRESENT(nwfa) & ! .AND. PRESENT(nifa) .AND. PRESENT(nwfa2d)) then @@ -1128,6 +1145,11 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & Nt_c = ntc(i,j) mu_c = muc(i,j) #endif + do k = kts,kte + rainprod1d(k) = 0. + evapprod1d(k) = 0. + enddo + do k = kts, kte t1d(k) = th(i,k,j)*pii(i,k,j) p1d(k) = p(i,k,j) @@ -1141,6 +1163,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & qg1d(k) = qg(i,k,j) ni1d(k) = ni(i,k,j) nr1d(k) = nr(i,k,j) + rho(k) = 0.622*p1d(k)/(R*t1d(k)*(qv1d(k)+0.622)) enddo if (is_aerosol_aware) then do k = kts, kte @@ -1151,7 +1174,6 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & nwfa1 = nwfa2d(i,j) else do k = kts, kte - rho(k) = 0.622*p1d(k)/(R*t1d(k)*(qv1d(k)+0.622)) nc1d(k) = Nt_c/rho(k) nwfa1d(k) = 11.1E6/rho(k) nifa1d(k) = naIN1*0.01/rho(k) @@ -1161,10 +1183,8 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & call mp_thompson(qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & nr1d, nc1d, nwfa1d, nifa1d, t1d, p1d, w1d, dz1d, & - pptrain, pptsnow, pptgraul, pptice, & -#if defined(mpas) - rainprod1d, evapprod1d, & -#endif + pptrain, pptsnow, pptgraul, pptice, & + rainprod1d, evapprod1d, & kts, kte, dt, i, j) pcp_ra(i,j) = pptrain @@ -1191,6 +1211,7 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & if (is_aerosol_aware) then !-GT nwfa1d(kts) = nwfa1 nwfa1d(kts) = nwfa1d(kts) + nwfa2d(i,j)*dt_in + nifa1d(kts) = nifa1d(kts) + nifa2d(i,j)*dt_in do k = kts, kte nc(i,k,j) = nc1d(k) @@ -1219,8 +1240,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qc = k qc_max = qc1d(k) elseif (qc1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qc ', qc1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qc $r at i,j,k = $i $i $i ', & + realArgs=(/qc1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative qc ', qc1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (qr1d(k) .gt. qr_max) then @@ -1229,8 +1252,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qr = k qr_max = qr1d(k) elseif (qr1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qr ', qr1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qr $r at i,j,k = $i $i $i ', & + realArgs=(/qr1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative qr ', qr1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (nr1d(k) .gt. nr_max) then @@ -1239,8 +1264,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_nr = k nr_max = nr1d(k) elseif (nr1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative nr ', nr1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative nr $r at i,j,k = $i $i $i ', & + realArgs=(/nr1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative nr ', nr1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (qs1d(k) .gt. qs_max) then @@ -1249,8 +1276,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qs = k qs_max = qs1d(k) elseif (qs1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qs ', qs1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qs $r at i,j,k = $i $i $i ', & + realArgs=(/qs1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative qs ', qs1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (qi1d(k) .gt. qi_max) then @@ -1259,8 +1288,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qi = k qi_max = qi1d(k) elseif (qi1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qi ', qi1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qi $r at i,j,k = $i $i $i ', & + realArgs=(/qi1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative qi ', qi1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (qg1d(k) .gt. qg_max) then @@ -1269,8 +1300,10 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_qg = k qg_max = qg1d(k) elseif (qg1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qg ', qg1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qg $r at i,j,k = $i $i $i ', & + realArgs=(/qg1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative qg ', qg1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (ni1d(k) .gt. ni_max) then @@ -1279,21 +1312,31 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & kmax_ni = k ni_max = ni1d(k) elseif (ni1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative ni ', ni1d(k), & - ' at i,j,k=', i,j,k + call mpas_log_write('--- WARNING, negative qni $r at i,j,k = $i $i $i ', & + realArgs=(/ni1d(k)/),intArgs=(/i,j,k/)) +! write(mp_debug,*) 'WARNING, negative ni ', ni1d(k), & +! ' at i,j,k=', i,j,k ! CALL wrf_debug(150, mp_debug) endif if (qv1d(k) .lt. 0.0) then - write(mp_debug,*) 'WARNING, negative qv ', qv1d(k), & - ' at i,j,k=', i,j,k -! CALL wrf_debug(150, mp_debug) + call mpas_log_write('--- WARNING, negative qv $r at i,j,k = $i $i $i ', & + realArgs=(/qv1d(k)/),intArgs=(/i,j,k/)) if (k.lt.kte-2 .and. k.gt.kts+1) then - write(mp_debug,*) ' below and above are: ', qv(i,k-1,j), qv(i,k+1,j) -! CALL wrf_debug(150, mp_debug) + call mpas_log_write('-- below and above are: $r $r',realArgs=(/qv(i,k-1,j), qv(i,k+1,j)/)) qv(i,k,j) = MAX(1.E-7, 0.5*(qv(i,k-1,j) + qv(i,k+1,j))) else qv(i,k,j) = 1.E-7 endif +! write(mp_debug,*) 'WARNING, negative qv ', qv1d(k), & +! ' at i,j,k=', i,j,k +! CALL wrf_debug(150, mp_debug) +! if (k.lt.kte-2 .and. k.gt.kts+1) then +! write(mp_debug,*) ' below and above are: ', qv(i,k-1,j), qv(i,k+1,j) +! CALL wrf_debug(150, mp_debug) +! qv(i,k,j) = MAX(1.E-7, 0.5*(qv(i,k-1,j) + qv(i,k+1,j))) +! else +! qv(i,k,j) = 1.E-7 +! endif endif enddo @@ -1326,20 +1369,20 @@ SUBROUTINE mp_gt_driver(qv, qc, qr, qi, qs, qg, ni, nr, nc, & enddo j_loop ! DEBUG - GT - write(mp_debug,'(a,7(a,e13.6,1x,a,i3,a,i3,a,i3,a,1x))') 'MP-GT:', & - 'qc: ', qc_max, '(', imax_qc, ',', jmax_qc, ',', kmax_qc, ')', & - 'qr: ', qr_max, '(', imax_qr, ',', jmax_qr, ',', kmax_qr, ')', & - 'qi: ', qi_max, '(', imax_qi, ',', jmax_qi, ',', kmax_qi, ')', & - 'qs: ', qs_max, '(', imax_qs, ',', jmax_qs, ',', kmax_qs, ')', & - 'qg: ', qg_max, '(', imax_qg, ',', jmax_qg, ',', kmax_qg, ')', & - 'ni: ', ni_max, '(', imax_ni, ',', jmax_ni, ',', kmax_ni, ')', & - 'nr: ', nr_max, '(', imax_nr, ',', jmax_nr, ',', kmax_nr, ')' +! write(mp_debug,'(a,7(a,e13.6,1x,a,i3,a,i3,a,i3,a,1x))') 'MP-GT:', & +! 'qc: ', qc_max, '(', imax_qc, ',', jmax_qc, ',', kmax_qc, ')', & +! 'qr: ', qr_max, '(', imax_qr, ',', jmax_qr, ',', kmax_qr, ')', & +! 'qi: ', qi_max, '(', imax_qi, ',', jmax_qi, ',', kmax_qi, ')', & +! 'qs: ', qs_max, '(', imax_qs, ',', jmax_qs, ',', kmax_qs, ')', & +! 'qg: ', qg_max, '(', imax_qg, ',', jmax_qg, ',', kmax_qg, ')', & +! 'ni: ', ni_max, '(', imax_ni, ',', jmax_ni, ',', kmax_ni, ')', & +! 'nr: ', nr_max, '(', imax_nr, ',', jmax_nr, ',', kmax_nr, ')' ! CALL wrf_debug(150, mp_debug) ! END DEBUG - GT - do i = 1, 256 - mp_debug(i:i) = char(0) - enddo +! do i = 1, 256 +! mp_debug(i:i) = char(0) +! enddo END SUBROUTINE mp_gt_driver @@ -1354,12 +1397,10 @@ END SUBROUTINE mp_gt_driver !.. Thompson et al. (2004, 2008). !+---+-----------------------------------------------------------------+ ! - subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & + subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & nr1d, nc1d, nwfa1d, nifa1d, t1d, p1d, w1d, dzq, & - pptrain, pptsnow, pptgraul, pptice, & -#if defined(mpas) - rainprod, evapprod, & -#endif + pptrain, pptsnow, pptgraul, pptice, & + rainprod, evapprod, & kts, kte, dt, ii, jj) implicit none @@ -1372,10 +1413,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & REAL, DIMENSION(kts:kte), INTENT(IN):: p1d, w1d, dzq REAL, INTENT(INOUT):: pptrain, pptsnow, pptgraul, pptice REAL, INTENT(IN):: dt -#if defined(mpas) REAL, DIMENSION(kts:kte), INTENT(INOUT):: & rainprod, evapprod -#endif !..Local variables REAL, DIMENSION(kts:kte):: tten, qvten, qcten, qiten, & @@ -1449,7 +1488,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & REAL:: r_frac, g_frac REAL:: Ef_rw, Ef_sw, Ef_gw, Ef_rr REAL:: Ef_ra, Ef_sa, Ef_ga - REAL:: dtsave, odts, odt, odzq, hgt_agl + REAL:: dtsave, odts, odt, odzq, hgt_agl, SR REAL:: xslw1, ygra1, zans1, eva_factor INTEGER:: i, k, k2, n, nn, nstep, k_0, kbot, IT, iexfrq INTEGER, DIMENSION(5):: ksed1 @@ -1463,9 +1502,14 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & CHARACTER*256:: mp_debug INTEGER:: nu_c +! modifications proposed by Ted Mansell for MPAS. +! Laura D. Fowler (laura@ucar.edu) / 2017-03-27. +! real, parameter:: mvd_r_breakup = 1.e-3 +!... end modifications. + LOGICAL, DIMENSION(kts:kte):: L_nifa,L_nwfa + REAL:: tem !+---+ - debug_flag = .false. ! if (ii.eq.901 .and. jj.eq.379) debug_flag = .true. if(debug_flag) then @@ -1576,12 +1620,19 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & pnd_scd(k) = 0. pnd_gcd(k) = 0. enddo -#if defined(mpas) do k = kts, kte rainprod(k) = 0. evapprod(k) = 0. enddo -#endif +!.. initialize the logicals L_nifa and L_nwfa used to detect instances of the cloud +!.. ice and cloud liquid water mixing ratios being greater than R1 but their number +!.. concentration being less than 2. and R2: + if(is_aerosol_aware) then + do k = kts, kte + L_nifa(k) = .false. + L_nwfa(k) = .false. + enddo + endif !..Bug fix (2016Jun15), prevent use of uninitialized value(s) of snow moments. do k = kts, kte @@ -1611,8 +1662,10 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & if (qc1d(k) .gt. R1) then no_micro = .false. rc(k) = qc1d(k)*rho(k) - nc(k) = MAX(2., nc1d(k)*rho(k)) + nc(k) = MAX(2., MIN(nc1d(k)*rho(k), Nt_c_max)) L_qc(k) = .true. +!.. set L_nwfa to true when the cloud liquid water number concentration is less than 2.: + if(is_aerosol_aware .and. nc(k) .le. 2.) L_nwfa(k) = .true. nu_c = MIN(15, NINT(1000.E6/nc(k)) + 2) lamc = (nc(k)*am_r*ccg(2,nu_c)*ocg1(nu_c)/rc(k))**obmr xDc = (bm_r + nu_c + 1.) / lamc @@ -1636,17 +1689,20 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & no_micro = .false. ri(k) = qi1d(k)*rho(k) ni(k) = MAX(R2, ni1d(k)*rho(k)) + L_qi(k) = .true. +!.. set L_nifa to true when the cloud ice number concentration is less than R2: + if(is_aerosol_aware .and. ni(k) .le. R2) L_nifa(k) = .true. if (ni(k).le. R2) then - lami = cie(2)/25.E-6 - ni(k) = MIN(499.D3, cig(1)*oig2*ri(k)/am_i*lami**bm_i) + lami = cie(2)/5.E-6 + ni(k) = MIN(9999.D3, cig(1)*oig2*ri(k)/am_i*lami**bm_i) endif - L_qi(k) = .true. +! L_qi(k) = .true. lami = (am_i*cig(2)*oig1*ni(k)/ri(k))**obmi ilami = 1./lami xDi = (bm_i + mu_i + 1.) * ilami if (xDi.lt. 5.E-6) then lami = cie(2)/5.E-6 - ni(k) = MIN(499.D3, cig(1)*oig2*ri(k)/am_i*lami**bm_i) + ni(k) = MIN(9999.D3, cig(1)*oig2*ri(k)/am_i*lami**bm_i) elseif (xDi.gt. 300.E-6) then lami = cie(2)/300.E-6 ni(k) = cig(1)*oig2*ri(k)/am_i*lami**bm_i @@ -1925,7 +1981,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & tau = 3.72/(rc(k)*taud) prr_wau(k) = zeta/tau prr_wau(k) = MIN(DBLE(rc(k)*odts), prr_wau(k)) - pnr_wau(k) = prr_wau(k) / (am_r*nu_c*D0r*D0r*D0r) ! RAIN2M + pnr_wau(k) = prr_wau(k) / (am_r*nu_c*200.*D0r*D0r*D0r) ! RAIN2M pnc_wau(k) = MIN(DBLE(nc(k)*odts), prr_wau(k) & / (am_r*mvd_c(k)*mvd_c(k)*mvd_c(k))) ! Qc2M endif @@ -1964,8 +2020,12 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !..Compute all frozen hydrometeor species' process terms. !+---+-----------------------------------------------------------------+ if (.not. iiwarm) then + !..vts_boost is the factor applied to snow terminal + !..fallspeed due to riming of snow do k = kts, kte - vts_boost(k) = 1.5 + vts_boost(k) = 1.0 + xDs = 0.0 + if (L_qs(k)) xDs = smoc(k) / smob(k) !..Temperature lookup table indexes. tempc = temp(k) - 273.15 @@ -2117,13 +2177,12 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !..Snow collecting cloud water. In CE, assume Dc< mvd_r_breakup ) then + pnr_rcg(k) = -5.0*tnr_gacr(idx_g1,idx_g,idx_r1,idx_r) ! RAIN2M +! else +! pnr_rcg(k) = -3.0*tnr_gacr(idx_g1,idx_g,idx_r1,idx_r) ! RAIN2M +! endif endif endif endif @@ -2287,8 +2351,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & pnr_rfz(k) = MIN(DBLE(nr(k)*odts), pnr_rfz(k)) elseif (rr(k).gt. R1 .and. temp(k).lt.HGFR) then pri_rfz(k) = rr(k)*odts - pnr_rfz(k) = nr(k)*odts ! RAIN2M - pni_rfz(k) = pnr_rfz(k) + pni_rfz(k) = nr(k)*odts ! RAIN2M endif if (rc(k).gt. r_c(1)) then @@ -2319,7 +2382,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !..Freezing of aqueous aerosols based on Koop et al (2001, Nature) xni = smo0(k)+ni(k) + (pni_rfz(k)+pni_wfz(k)+pni_inu(k))*dtsave - if (is_aerosol_aware .AND. homogIce .AND. (xni.le.500.E3) & + if (is_aerosol_aware .AND. homogIce .AND. (xni.le.999.E3) & & .AND.(temp(k).lt.238).AND.(ssati(k).ge.0.4) ) then xnc = iceKoop(temp(k),qv(k),qvs(k),nwfa(k), dtsave) pni_iha(k) = xnc*odts @@ -2442,7 +2505,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & prs_sde(k).gt.eps) then r_frac = MIN(30.0D0, prs_scw(k)/prs_sde(k)) g_frac = MIN(0.95, 0.15 + (r_frac-2.)*.028) - vts_boost(k) = MIN(1.5, 1.1 + (r_frac-2.)*.016) + vts_boost(k) = MIN(1.5, 1.1 + (r_frac-2.)*.014) prg_scw(k) = g_frac*prs_scw(k) prs_scw(k) = (1. - g_frac)*prs_scw(k) endif @@ -2454,12 +2517,13 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & if (L_qs(k)) then prr_sml(k) = (tempc*tcond(k)-lvap0*diffu(k)*delQvs(k)) & * (t1_qs_me*smo1(k) + t2_qs_me*rhof2(k)*vsc2(k)*smof(k)) - prr_sml(k) = prr_sml(k) + 4218.*olfus*tempc & - * (prr_rcs(k)+prs_scw(k)) + if (prr_sml(k) .gt. 0.) then + prr_sml(k) = prr_sml(k) + 4218.*olfus*tempc & + * (prr_rcs(k)+prs_scw(k)) + endif prr_sml(k) = MIN(DBLE(rs(k)*odts), MAX(0.D0, prr_sml(k))) pnr_sml(k) = smo0(k)/rs(k)*prr_sml(k) * 10.0**(-0.25*tempc) ! RAIN2M pnr_sml(k) = MIN(DBLE(smo0(k)*odts), pnr_sml(k)) -! if (tempc.gt.3.5 .or. rs(k).lt.0.005E-3) pnr_sml(k)=0.0 if (ssati(k).lt. 0.) then prs_sde(k) = C_cube*t1_subl*diffu(k)*ssati(k)*rvs & @@ -2478,7 +2542,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & prr_gml(k) = MIN(DBLE(rg(k)*odts), MAX(0.D0, prr_gml(k))) pnr_gml(k) = N0_g(k)*cgg(2)*ilamg(k)**cge(2) / rg(k) & ! RAIN2M * prr_gml(k) * 10.0**(-0.5*tempc) -! if (tempc.gt.7.5 .or. rg(k).lt.0.005E-3) pnr_gml(k)=0.0 if (ssati(k).lt. 0.) then prg_gde(k) = C_cube*t1_subl*diffu(k)*ssati(k)*rvs & @@ -2514,7 +2577,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !.. supersat again. sump = pri_inu(k) + pri_ide(k) + prs_ide(k) & + prs_sde(k) + prg_gde(k) + pri_iha(k) - rate_max = (qv(k)-qvsi(k))*odts*0.999 + rate_max = (qv(k)-qvsi(k))*rho(k)*odts*0.999 if ( (sump.gt. eps .and. sump.gt. rate_max) .or. & (sump.lt. -eps .and. sump.lt. rate_max) ) then ratio = rate_max/sump @@ -2687,7 +2750,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & xDi = (bm_i + mu_i + 1.) * ilami if (xDi.lt. 5.E-6) then lami = cie(2)/5.E-6 - xni = MIN(499.D3, cig(1)*oig2*xri/am_i*lami**bm_i) + xni = MIN(9999.D3, cig(1)*oig2*xri/am_i*lami**bm_i) niten(k) = (xni-ni1d(k)*rho(k))*odts*orho elseif (xDi.gt. 300.E-6) then lami = cie(2)/300.E-6 @@ -2698,8 +2761,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & niten(k) = -ni1d(k)*odts endif xni=MAX(0.,(ni1d(k) + niten(k)*dtsave)*rho(k)) - if (xni.gt.499.E3) & - niten(k) = (499.E3-ni1d(k)*rho(k))*odts*orho + if (xni.gt.9999.E3) & + niten(k) = (9999.E3-ni1d(k)*rho(k))*odts*orho !..Rain tendency qrten(k) = qrten(k) + (prr_wau(k) + prr_rcw(k) & @@ -2711,7 +2774,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !..Rain number tendency nrten(k) = nrten(k) + (pnr_wau(k) + pnr_sml(k) + pnr_gml(k) & - (pnr_rfz(k) + pnr_rcr(k) + pnr_rcg(k) & - + pnr_rcs(k) + pnr_rci(k)) ) & + + pnr_rcs(k) + pnr_rci(k) + pni_rfz(k)) ) & * orho !..Rain mass/number balance; keep median volume diameter between @@ -2799,10 +2862,12 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & lvt2(k)=lvap(k)*lvap(k)*ocp(k)*oRv*otemp*otemp nwfa(k) = MAX(11.1E6, (nwfa1d(k) + nwfaten(k)*DT)*rho(k)) + enddo + do k = kts, kte if ((qc1d(k) + qcten(k)*DT) .gt. R1) then rc(k) = (qc1d(k) + qcten(k)*DT)*rho(k) - nc(k) = MAX(2., (nc1d(k) + ncten(k)*DT)*rho(k)) + nc(k) = MAX(2., MIN((nc1d(k)+ncten(k)*DT)*rho(k), Nt_c_max)) if (.NOT. is_aerosol_aware) nc(k) = Nt_c L_qc(k) = .true. else @@ -2864,6 +2929,12 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & !.. intercepts/slopes of graupel and rain. !+---+-----------------------------------------------------------------+ if (.not. iiwarm) then + do k = kts, kte + smo2(k) = 0. + smob(k) = 0. + smoc(k) = 0. + smod(k) = 0. + enddo do k = kts, kte if (.not. L_qs(k)) CYCLE tc0 = MIN(-0.1, temp(k)-273.15) @@ -3031,9 +3102,10 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & ! -tpc_wev(idx_d, idx_c, idx_n)*orho*odt) prw_vcd(k) = MAX(DBLE(-rc(k)*0.99*orho*odt), prw_vcd(k)) pnc_wcd(k) = MAX(DBLE(-nc(k)*0.99*orho*odt), & - DBLE(-tnc_wev(idx_d, idx_c, idx_n)*orho*odt)) + -tnc_wev(idx_d, idx_c, idx_n)*orho*odt) endif + if(is_aerosol_aware .and. L_nwfa(k)) L_nwfa(k) = .false. else prw_vcd(k) = -rc(k)*orho*odt pnc_wcd(k) = -nc(k)*orho*odt @@ -3047,7 +3119,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & nwfaten(k) = nwfaten(k) - pnc_wcd(k) tten(k) = tten(k) + lvap(k)*ocp(k)*prw_vcd(k)*(1-IFDRY) rc(k) = MAX(R1, (qc1d(k) + DT*qcten(k))*rho(k)) - nc(k) = MAX(2., (nc1d(k) + DT*ncten(k))*rho(k)) + if (rc(k).eq.R1) L_qc(k) = .false. + nc(k) = MAX(2., MIN((nc1d(k)+ncten(k)*DT)*rho(k), Nt_c_max)) if (.NOT. is_aerosol_aware) nc(k) = Nt_c qv(k) = MAX(1.E-10, qv1d(k) + DT*qvten(k)) temp(k) = t1d(k) + DT*tten(k) @@ -3108,7 +3181,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & prv_rev(k) = MIN(DBLE(rate_max), prv_rev(k)*orho) !..TEST: G. Thompson 10 May 2013 -!..Reduce the rain evaporation in same places as melting graupel occurs. +!..Reduce the rain evaporation in same places as melting graupel occurs. !..Rationale: falling and simultaneous melting graupel in subsaturated !..regions will not melt as fast because particle temperature stays !..at 0C. Also not much shedding of the water from the graupel so @@ -3136,7 +3209,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & rho(k) = 0.622*pres(k)/(R*temp(k)*(qv(k)+0.622)) endif enddo -#if defined(mpas) do k = kts, kte evapprod(k) = prv_rev(k) - (min(zeroD0,prs_sde(k)) + & min(zeroD0,prg_gde(k))) @@ -3145,7 +3217,6 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & prg_gcw(k) + prs_sci(k) + & pri_rci(k) enddo -#endif !+---+-----------------------------------------------------------------+ !..Find max terminal fallspeed (distribution mass-weighted mean @@ -3168,6 +3239,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & vtck(k) = 0. vtnck(k) = 0. enddo + + if (ANY(L_qr .eqv. .true.)) then do k = kte, kts, -1 vtr = 0. rhof(k) = SQRT(RHO_NOT/rho(k)) @@ -3198,9 +3271,11 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & enddo if (ksed1(1) .eq. kte) ksed1(1) = kte-1 if (nstep .gt. 0) onstep(1) = 1./REAL(nstep) + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qc .eqv. .true.)) then hgt_agl = 0. do k = kts, kte-1 if (rc(k) .gt. R2) ksed1(5) = k @@ -3221,11 +3296,13 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & vtnck(k) = vtc endif enddo + endif !+---+-----------------------------------------------------------------+ if (.not. iiwarm) then + if (ANY(L_qi .eqv. .true.)) then nstep = 0 do k = kte, kts, -1 vti = 0. @@ -3253,9 +3330,11 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & enddo if (ksed1(2) .eq. kte) ksed1(2) = kte-1 if (nstep .gt. 0) onstep(2) = 1./REAL(nstep) + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qs .eqv. .true.)) then nstep = 0 do k = kte, kts, -1 vts = 0. @@ -3273,8 +3352,8 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & t4_vts = Kap1*Mrat**mu_s*csg(7)*ils2**cse(7) vts = rhof(k)*av_s * (t1_vts+t2_vts)/(t3_vts+t4_vts) if (temp(k).gt. (T_0+0.1)) then - vtsk(k) = MAX(vts*vts_boost(k), & - & vts*((vtrk(k)-vts*vts_boost(k))/(temp(k)-T_0))) + SR = rs(k)/(rs(k)+rr(k)) + vtsk(k) = vts*SR + (1.-SR)*vtrk(k) else vtsk(k) = vts*vts_boost(k) endif @@ -3290,9 +3369,11 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & enddo if (ksed1(3) .eq. kte) ksed1(3) = kte-1 if (nstep .gt. 0) onstep(3) = 1./REAL(nstep) + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qg .eqv. .true.)) then nstep = 0 do k = kte, kts, -1 vtg = 0. @@ -3316,18 +3397,16 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & enddo if (ksed1(4) .eq. kte) ksed1(4) = kte-1 if (nstep .gt. 0) onstep(4) = 1./REAL(nstep) + endif endif !+---+-----------------------------------------------------------------+ !..Sedimentation of mixing ratio is the integral of v(D)*m(D)*N(D)*dD, !.. whereas neglect m(D) term for number concentration. Therefore, !.. cloud ice has proper differential sedimentation. -!.. New in v3.0+ is computing separate for rain, ice, snow, and -!.. graupel species thus making code faster with credit to J. Schmidt. -!.. Bug fix, 2013Nov01 to tendencies using rho(k+1) correction thanks to -!.. Eric Skyllingstad. !+---+-----------------------------------------------------------------+ + if (ANY(L_qr .eqv. .true.)) then nstep = NINT(1./onstep(1)) do n = 1, nstep do k = kte, kts, -1 @@ -3354,12 +3433,14 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & *odzq*DT*onstep(1)) enddo - if (rr(kts).gt.R1*10.) & + if (rr(kts).gt.R1*1000.) & pptrain = pptrain + sed_r(kts)*DT*onstep(1) enddo + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qc .eqv. .true.)) then do k = kte, kts, -1 sed_c(k) = vtck(k)*rc(k) sed_n(k) = vtnck(k)*nc(k) @@ -3372,9 +3453,11 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & rc(k) = MAX(R1, rc(k) + (sed_c(k+1)-sed_c(k)) *odzq*DT) nc(k) = MAX(10., nc(k) + (sed_n(k+1)-sed_n(k)) *odzq*DT) enddo + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qi .eqv. .true.)) then nstep = NINT(1./onstep(2)) do n = 1, nstep do k = kte, kts, -1 @@ -3401,12 +3484,14 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & *odzq*DT*onstep(2)) enddo - if (ri(kts).gt.R1*10.) & + if (ri(kts).gt.R1*1000.) & pptice = pptice + sed_i(kts)*DT*onstep(2) enddo + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qs .eqv. .true.)) then nstep = NINT(1./onstep(3)) do n = 1, nstep do k = kte, kts, -1 @@ -3426,12 +3511,14 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & *odzq*DT*onstep(3)) enddo - if (rs(kts).gt.R1*10.) & + if (rs(kts).gt.R1*1000.) & pptsnow = pptsnow + sed_s(kts)*DT*onstep(3) enddo + endif !+---+-----------------------------------------------------------------+ + if (ANY(L_qg .eqv. .true.)) then nstep = NINT(1./onstep(4)) do n = 1, nstep do k = kte, kts, -1 @@ -3451,9 +3538,10 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & *odzq*DT*onstep(4)) enddo - if (rg(kts).gt.R1*10.) & + if (rg(kts).gt.R1*1000.) & pptgraul = pptgraul + sed_g(kts)*DT*onstep(4) enddo + endif !+---+-----------------------------------------------------------------+ !.. Instantly melt any cloud ice into cloud water if above 0C and @@ -3490,10 +3578,10 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & t1d(k) = t1d(k) + tten(k)*DT qv1d(k) = MAX(1.E-10, qv1d(k) + qvten(k)*DT) qc1d(k) = qc1d(k) + qcten(k)*DT - nc1d(k) = MAX(2./rho(k), nc1d(k) + ncten(k)*DT) - nwfa1d(k) = MAX(11.1E6/rho(k), MIN(9999.E6/rho(k), & + nc1d(k) = MAX(2./rho(k), MIN(nc1d(k) + ncten(k)*DT, Nt_c_max)) + nwfa1d(k) = MAX(11.1E6, MIN(9999.E6, & (nwfa1d(k)+nwfaten(k)*DT))) - nifa1d(k) = MAX(naIN1*0.01, MIN(9999.E6/rho(k), & + nifa1d(k) = MAX(naIN1*0.01, MIN(9999.E6, & (nifa1d(k)+nifaten(k)*DT))) if (qc1d(k) .le. R1) then @@ -3527,7 +3615,7 @@ subroutine mp_thompson (qv1d, qc1d, qi1d, qr1d, qs1d, qg1d, ni1d, & lami = cie(2)/300.E-6 endif ni1d(k) = MIN(cig(1)*oig2*qi1d(k)/am_i*lami**bm_i, & - 499.D3/rho(k)) + 9999.D3/rho(k)) endif qr1d(k) = qr1d(k) + qrten(k)*DT nr1d(k) = MAX(R2/rho(k), nr1d(k) + nrten(k)*DT) @@ -3640,7 +3728,8 @@ subroutine qr_acr_qg tcg_racg(i,j,k,m) = t1 tmr_racg(i,j,k,m) = DMIN1(z1, r_r(m)*1.0d0) tcr_gacr(i,j,k,m) = t2 - tmg_gacr(i,j,k,m) = z2 + tmg_gacr(i,j,k,m) = DMIN1(z2, r_g(j)*1.0d0) + !DAVE tmg_gacr(i,j,k,m) = DMIN1(z2, DBLE(r_g(j))) tnr_racg(i,j,k,m) = y1 tnr_gacr(i,j,k,m) = y2 enddo @@ -3829,8 +3918,10 @@ subroutine freezeH2O !..Local variables INTEGER:: i, j, k, m, n, n2 - DOUBLE PRECISION, DIMENSION(nbr):: N_r, massr - DOUBLE PRECISION, DIMENSION(nbc):: N_c, massc + INTEGER:: km, km_s, km_e + DOUBLE PRECISION:: N_r, N_c + DOUBLE PRECISION, DIMENSION(nbr):: massr + DOUBLE PRECISION, DIMENSION(nbc):: massc DOUBLE PRECISION:: sum1, sum2, sumn1, sumn2, & prob, vol, Texp, orho_w, & lam_exp, lamr, N0_r, lamc, N0_c, y @@ -3848,10 +3939,14 @@ subroutine freezeH2O massc(n) = am_r*Dc(n)**bm_r enddo + km_s = 0 + km_e = ntb_IN*45 - 1 + !..Freeze water (smallest drops become cloud ice, otherwise graupel). - do m = 1, ntb_IN - T_adjust = MAX(-3.0, MIN(3.0 - ALOG10(Nt_IN(m)), 3.0)) - do k = 1, 45 + do km = km_s, km_e + m = km / 45 + 1 + k = mod( km , 45 ) + 1 + T_adjust = MAX(-3.0, MIN(3.0 - ALOG10(Nt_IN(m)), 3.0)) ! print*, ' Freezing water for temp = ', -k Texp = DEXP( REAL(k,KIND=R8SIZE) - T_adjust*1.0D0 ) - 1.0D0 do j = 1, ntb_r1 @@ -3864,15 +3959,15 @@ subroutine freezeH2O sumn1 = 0.0d0 sumn2 = 0.0d0 do n2 = nbr, 1, -1 - N_r(n2) = N0_r*Dr(n2)**mu_r*DEXP(-lamr*Dr(n2))*dtr(n2) + N_r = N0_r*Dr(n2)**mu_r*DEXP(-lamr*Dr(n2))*dtr(n2) vol = massr(n2)*orho_w - prob = 1.0D0 - DEXP(-120.0D0*vol*5.2D-4 * Texp) + prob = MAX(0.0D0, 1.0D0 - DEXP(-120.0D0*vol*5.2D-4 * Texp)) if (massr(n2) .lt. xm0g) then - sumn1 = sumn1 + prob*N_r(n2) - sum1 = sum1 + prob*N_r(n2)*massr(n2) + sumn1 = sumn1 + prob*N_r + sum1 = sum1 + prob*N_r*massr(n2) else - sumn2 = sumn2 + prob*N_r(n2) - sum2 = sum2 + prob*N_r(n2)*massr(n2) + sumn2 = sumn2 + prob*N_r + sum2 = sum2 + prob*N_r*massr(n2) endif if ((sum1+sum2).ge.r_r(i)) EXIT enddo @@ -3892,10 +3987,10 @@ subroutine freezeH2O sumn2 = 0.0d0 do n = nbc, 1, -1 vol = massc(n)*orho_w - prob = 1.0D0 - DEXP(-120.0D0*vol*5.2D-4 * Texp) - N_c(n) = N0_c*Dc(n)**nu_c*EXP(-lamc*Dc(n))*dtc(n) - sumn2 = MIN(t_Nc(j), sumn2 + prob*N_c(n)) - sum1 = sum1 + prob*N_c(n)*massc(n) + prob = MAX(0.0D0, 1.0D0 - DEXP(-120.0D0*vol*5.2D-4 * Texp)) + N_c = N0_c*Dc(n)**nu_c*EXP(-lamc*Dc(n))*dtc(n) + sumn2 = MIN(t_Nc(j), sumn2 + prob*N_c) + sum1 = sum1 + prob*N_c*massc(n) if (sum1 .ge. r_c(i)) EXIT enddo tpi_qcfz(i,j,k,m) = sum1 @@ -3903,9 +3998,9 @@ subroutine freezeH2O enddo enddo enddo - enddo end subroutine freezeH2O + !+---+-----------------------------------------------------------------+ !ctrlL !+---+-----------------------------------------------------------------+ @@ -4282,7 +4377,7 @@ subroutine table_ccnAct end subroutine table_ccnAct #endif -!^L +! !+---+-----------------------------------------------------------------+ !..Retrieve fraction of CCN that gets activated given the model temp, !.. vertical velocity, and available CCN concentration. The lookup @@ -4622,7 +4717,7 @@ real function iceDeMott(tempc, qv, qvs, qvsi, rho, nifa) ! mux = hx*p_alpha*n_in*rho ! xni = mux*((6700.*nifa)-200.)/((6700.*5.E5)-200.) ! elseif (satw.ge.0.985 .and. tempc.gt.HGFR-273.15) then - nifa_cc = nifa*RHO_NOT0*1.E-6/rho + nifa_cc = MAX(0.5, nifa*RHO_NOT0*1.E-6/rho) ! xni = 3.*nifa_cc**(1.25)*exp((0.46*(-tempc))-11.6) ! [DeMott, 2015] xni = (5.94e-5*(-tempc)**3.33) & ! [DeMott, 2010] * (nifa_cc**((-0.0264*(tempc))+0.0033)) @@ -4739,7 +4834,7 @@ subroutine calc_effectRad (t1d, p1d, qv1d, qc1d, nc1d, qi1d, ni1d, qs1d, & do k = kts, kte rho(k) = 0.622*p1d(k)/(R*t1d(k)*(qv1d(k)+0.622)) rc(k) = MAX(R1, qc1d(k)*rho(k)) - nc(k) = MAX(R2, nc1d(k)*rho(k)) + nc(k) = MAX(2., MIN(nc1d(k)*rho(k), Nt_c_max)) if (.NOT. is_aerosol_aware) nc(k) = Nt_c if (rc(k).gt.R1 .and. nc(k).gt.R2) has_qc = .true. ri(k) = MAX(R1, qi1d(k)*rho(k)) @@ -4751,6 +4846,7 @@ subroutine calc_effectRad (t1d, p1d, qv1d, qc1d, nc1d, qi1d, ni1d, qs1d, & if (has_qc) then do k = kts, kte + re_qc1d(k) = 2.49E-6 if (rc(k).le.R1 .or. nc(k).le.R2) CYCLE if (nc(k).lt.100) then inu_c = 15 @@ -4766,14 +4862,16 @@ subroutine calc_effectRad (t1d, p1d, qv1d, qc1d, nc1d, qi1d, ni1d, qs1d, & if (has_qi) then do k = kts, kte + re_qi1d(k) = 2.49E-6 if (ri(k).le.R1 .or. ni(k).le.R2) CYCLE lami = (am_i*cig(2)*oig1*ni(k)/ri(k))**obmi - re_qi1d(k) = MAX(5.01E-6, MIN(SNGL(0.5D0 * DBLE(3.+mu_i)/lami), 125.E-6)) + re_qi1d(k) = MAX(2.51E-6, MIN(SNGL(0.5D0 * DBLE(3.+mu_i)/lami), 125.E-6)) enddo endif if (has_qs) then do k = kts, kte + re_qs1d(k) = 4.99E-6 if (rs(k).le.R1) CYCLE tc0 = MIN(-0.1, t1d(k)-273.15) smob = rs(k)*oams @@ -4808,7 +4906,7 @@ subroutine calc_effectRad (t1d, p1d, qv1d, qc1d, nc1d, qi1d, ni1d, qs1d, & & + sb(7)*tc0*tc0*cse(1) + sb(8)*tc0*cse(1)*cse(1) & & + sb(9)*tc0*tc0*tc0 + sb(10)*cse(1)*cse(1)*cse(1) smoc = a_ * smo2**b_ - re_qs1d(k) = MAX(10.E-6, MIN(0.5*(smoc/smob), 999.E-6)) + re_qs1d(k) = MAX(5.01E-6, MIN(0.5*(smoc/smob), 999.E-6)) enddo endif @@ -4909,6 +5007,14 @@ subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, & !..Calculate y-intercept, slope, and useful moments for snow. !+---+-----------------------------------------------------------------+ do k = kts, kte + smo2(k) = 0. + smob(k) = 0. + smoc(k) = 0. + smoz(k) = 0. + enddo + if (ANY(L_qs .eqv. .true.)) then + do k = kts, kte + if (.not. L_qs(k)) CYCLE tc0 = MIN(-0.1, temp(k)-273.15) smob(k) = rs(k)*oams @@ -4957,11 +5063,13 @@ subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, & & + sb(9)*tc0*tc0*tc0 + sb(10)*cse(3)*cse(3)*cse(3) smoz(k) = a_ * smo2(k)**b_ enddo + endif !+---+-----------------------------------------------------------------+ !..Calculate y-intercept, slope values for graupel. !+---+-----------------------------------------------------------------+ + if (ANY(L_qg .eqv. .true.)) then N0_min = gonv_max k_0 = kts do k = kte, kts, -1 @@ -4984,6 +5092,7 @@ subroutine calc_refl10cm (qv1d, qc1d, qr1d, nr1d, qs1d, qg1d, & ilamg(k) = 1./lamg N0_g(k) = N0_exp/(cgg(2)*lam_exp) * lamg**cge(2) enddo + endif !+---+-----------------------------------------------------------------+ !..Locate K-level of start of melting (k_0 is level above). From ef47cf8e81009e9a434e633ad5e19f94c4690cb8 Mon Sep 17 00:00:00 2001 From: ldfowler58 Date: Thu, 11 Apr 2024 11:22:36 -0600 Subject: [PATCH 032/115] * In ./src/core_atmosphere/physics, started the implementation of the aerosol-aware option of the Thompson cloud microphysics parameterization: -> in mpas_atmphys_control.F, added the option mp_thompson_aerosols in subroutine physics_namelist_check to trigger the aerosol-aware option of the microphysics scheme. -> in mpas_atmphys_packages.F, added the option mp_thompson_aerosols to activate the package mp_thompson_in in subroutine atmphys_setup_packages. -> in mpas_atmphys_manager.F, added the option mp_thompson_aerosols when initializing the microphysics timestep dt_microp, and to activate the computation of effective radii in subroutine physics_run_init. also edited a few print statements. --- .../physics/mpas_atmphys_control.F | 12 ++- .../physics/mpas_atmphys_manager.F | 94 ++++++++++--------- .../physics/mpas_atmphys_packages.F | 3 +- 3 files changed, 60 insertions(+), 49 deletions(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_control.F b/src/core_atmosphere/physics/mpas_atmphys_control.F index b37a512a2e..1ab60364d7 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_control.F +++ b/src/core_atmosphere/physics/mpas_atmphys_control.F @@ -72,6 +72,8 @@ module mpas_atmphys_control ! * modified logic in subroutine physics_tables_init so that the Thompson microphysics tables are read in each ! MPI task. ! Laura D. Fowler (laura@ucar.edu) / 2016-12-30. +! * added the option mp_thompson_aerosols. +! Laura D. Fowler (laura@ucar.edu) / 2018-01-31. ! * added the option sf_monin_obukhov_rev to run the revised surface layer scheme with the YSU PBL scheme. ! Laura D. Fowler (laura@ucar.edu) / 2023-05-15. ! * replaced the option "noah" with "sf_noah" to run the NOAH land surface scheme. @@ -166,9 +168,10 @@ subroutine physics_namelist_check(configs) end if !cloud microphysics scheme: - if(.not. (config_microp_scheme .eq. 'off' .or. & - config_microp_scheme .eq. 'mp_kessler' .or. & - config_microp_scheme .eq. 'mp_thompson' .or. & + if(.not. (config_microp_scheme .eq. 'off' .or. & + config_microp_scheme .eq. 'mp_kessler' .or. & + config_microp_scheme .eq. 'mp_thompson' .or. & + config_microp_scheme .eq. 'mp_thompson_aerosols' .or. & config_microp_scheme .eq. 'mp_wsm6')) then write(mpas_err_message,'(A,A10)') 'illegal value for config_microp_scheme:', & @@ -398,7 +401,8 @@ subroutine physics_tables_init(dminfo,configs) if(dminfo % my_proc_id == IO_NODE) then call mpas_pool_get_config(configs,'config_microp_scheme',config_microp_scheme) - if(config_microp_scheme /= "mp_thompson") return + if(config_microp_scheme /= "mp_thompson" .or. & + config_microp_scheme /= "mp_thompson_aerosols") return l_qr_acr_qg = .false. l_qr_acr_qs = .false. diff --git a/src/core_atmosphere/physics/mpas_atmphys_manager.F b/src/core_atmosphere/physics/mpas_atmphys_manager.F index 1056896f8c..98ccb589cb 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_manager.F +++ b/src/core_atmosphere/physics/mpas_atmphys_manager.F @@ -183,12 +183,12 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) !call mpas_log_write('--- enter subroutine physics_timetracker: itimestep = $i', intArgs=(/itimestep/)) call mpas_pool_get_config(domain%blocklist%configs,'config_convection_scheme',config_convection_scheme) - call mpas_pool_get_config(domain%blocklist%configs,'config_radt_lw_scheme' ,config_radt_lw_scheme ) - call mpas_pool_get_config(domain%blocklist%configs,'config_radt_sw_scheme' ,config_radt_sw_scheme ) + call mpas_pool_get_config(domain%blocklist%configs,'config_radt_lw_scheme' ,config_radt_lw_scheme ) + call mpas_pool_get_config(domain%blocklist%configs,'config_radt_sw_scheme' ,config_radt_sw_scheme ) - call mpas_pool_get_config(domain%blocklist%configs,'config_conv_interval' ,config_conv_interval ) - call mpas_pool_get_config(domain%blocklist%configs,'config_radtlw_interval' ,config_radtlw_interval ) - call mpas_pool_get_config(domain%blocklist%configs,'config_radtsw_interval' ,config_radtsw_interval ) + call mpas_pool_get_config(domain%blocklist%configs,'config_conv_interval' ,config_conv_interval ) + call mpas_pool_get_config(domain%blocklist%configs,'config_radtlw_interval',config_radtlw_interval) + call mpas_pool_get_config(domain%blocklist%configs,'config_radtsw_interval',config_radtsw_interval) call mpas_pool_get_config(domain%blocklist%configs,'config_frac_seaice' ,config_frac_seaice ) call mpas_pool_get_config(domain%blocklist%configs,'config_o3climatology' ,config_o3climatology ) @@ -209,13 +209,13 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) julday = DoY curr_julday = real(julday-1) + utc_h / 24.0 LeapYear = isLeapYear(year) -! call mpas_log_write(' YEAR =$i', intArgs=(/year/)) -! call mpas_log_write(' JULDAY =$i', intArgs=(/julday/)) -! call mpas_log_write(' GMT =$r', realArgs=(/gmt/)) -! call mpas_log_write(' UTC_H =$r', realArgs=(/utc_h/)) -! call mpas_log_write(' CURR_JULDAY =$r', realArgs=(/curr_julday/)) -! call mpas_log_write(' LEAP_YEAR =$l', logicArgs=(/LeapYear/)) -! call mpas_log_write(' TIME STAMP ='//trim(timeStamp)) +!call mpas_log_write(' YEAR = $i', intArgs=(/year/)) +!call mpas_log_write(' JULDAY = $i', intArgs=(/julday/)) +!call mpas_log_write(' GMT = $r', realArgs=(/gmt/)) +!call mpas_log_write(' UTC_H = $r', realArgs=(/utc_h/)) +!call mpas_log_write(' CURR_JULDAY = $r', realArgs=(/curr_julday/)) +!call mpas_log_write(' LEAP_YEAR = $l', logicArgs=(/LeapYear/)) +!call mpas_log_write(' TIME STAMP = '//trim(timeStamp)) block => domain % blocklist do while(associated(block)) @@ -266,7 +266,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) elseif(config_radtlw_interval == "none") then l_radtlw = .true. endif - call mpas_log_write('--- time to run the LW radiation scheme L_RADLW =$l',logicArgs=(/l_radtlw/)) + call mpas_log_write('--- time to run the LW radiation scheme L_RADLW = $l',logicArgs=(/l_radtlw/)) endif if(trim(config_radt_sw_scheme) /= "off") then @@ -280,7 +280,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) elseif(config_radtsw_interval == "none") then l_radtsw = .true. endif - call mpas_log_write('--- time to run the SW radiation scheme L_RADSW =$l',logicArgs=(/l_radtsw/)) + call mpas_log_write('--- time to run the SW radiation scheme L_RADSW = $l',logicArgs=(/l_radtsw/)) endif !check to see if it is time to run the parameterization of convection: @@ -295,7 +295,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) elseif(config_conv_interval == "none") then l_conv = .true. endif - call mpas_log_write('--- time to run the convection scheme L_CONV =$l',logicArgs=(/l_conv/)) + call mpas_log_write('--- time to run the convection scheme L_CONV = $l',logicArgs=(/l_conv/)) endif !check to see if it is time to update ozone to the current julian day in the RRTMG radiation codes: @@ -334,7 +334,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) call mpas_reset_clock_alarm(clock,camlwAlarmID,camlwTimeStep,ierr=ierr) l_camlw = .true. endif - call mpas_log_write('--- time to write local CAM arrays to MPAS arrays L_CAMLW =$l',logicArgs=(/l_camlw/)) + call mpas_log_write('--- time to write local CAM arrays to MPAS arrays L_CAMLW = $l',logicArgs=(/l_camlw/)) endif !check to see if it is time to apply limit to the accumulated rain due to cloud microphysics @@ -345,7 +345,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) call mpas_reset_clock_alarm(clock,acrainAlarmID,acrainTimeStep,ierr=ierr) l_acrain = .true. endif - call mpas_log_write('--- time to apply limit to accumulated rainc and rainnc L_ACRAIN =$l',logicArgs=(/l_acrain/)) + call mpas_log_write('--- time to apply limit to accumulated rainc and rainnc L_ACRAIN = $l',logicArgs=(/l_acrain/)) endif !check to see if it is time to apply limit to the accumulated radiation diagnostics due to @@ -356,7 +356,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) call mpas_reset_clock_alarm(clock,acradtAlarmID,acradtTimeStep,ierr=ierr) l_acradt = .true. endif - call mpas_log_write('--- time to apply limit to accumulated radiation diags. L_ACRADT =$l',logicArgs=(/l_acradt/)) + call mpas_log_write('--- time to apply limit to accumulated radiation diags. L_ACRADT = $l',logicArgs=(/l_acradt/)) endif !check to see if it is time to calculate additional physics diagnostics: @@ -368,7 +368,7 @@ subroutine physics_timetracker(domain,dt,clock,itimestep,xtime_s) if (mpas_is_alarm_ringing(clock,diagAlarmID,interval=dtInterval,ierr=ierr)) then l_diags = .true. end if - call mpas_log_write('--- time to calculate additional physics_diagnostics =$l',logicArgs=(/l_diags/)) + call mpas_log_write('--- time to calculate additional physics_diagnostics = $l',logicArgs=(/l_diags/)) end subroutine physics_timetracker @@ -384,18 +384,18 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) type (MPAS_streamManager_type), intent(inout) :: stream_manager !local pointers: - character(len=StrKIND),pointer:: config_convection_scheme, & - config_lsm_scheme, & - config_microp_scheme, & - config_radt_lw_scheme, & + character(len=StrKIND),pointer:: config_convection_scheme, & + config_lsm_scheme, & + config_microp_scheme, & + config_radt_lw_scheme, & config_radt_sw_scheme - character(len=StrKIND),pointer:: config_conv_interval, & - config_pbl_interval, & - config_radtlw_interval, & - config_radtsw_interval, & - config_bucket_update, & - config_camrad_abs_update, & + character(len=StrKIND),pointer:: config_conv_interval, & + config_pbl_interval, & + config_radtlw_interval, & + config_radtsw_interval, & + config_bucket_update, & + config_camrad_abs_update, & config_greeness_update logical,pointer:: config_sst_update @@ -642,10 +642,11 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) end if endif - call mpas_log_write(' DT_RADTLW =$r', realArgs=(/dt_radtlw/)) - call mpas_log_write(' DT_RADTSW =$r', realArgs=(/dt_radtsw/)) - call mpas_log_write(' DT_CU =$r', realArgs=(/dt_cu/)) - call mpas_log_write(' DT_PBL =$r', realArgs=(/dt_pbl/)) + call mpas_log_write(' ') + call mpas_log_write('DT_RADTLW = $r',realArgs=(/dt_radtlw/)) + call mpas_log_write('DT_RADTSW = $r',realArgs=(/dt_radtsw/)) + call mpas_log_write('DT_CU = $r',realArgs=(/dt_cu/)) + call mpas_log_write('DT_PBL = $r',realArgs=(/dt_pbl/)) !initialization of physics dimensions to mimic a rectangular grid: ims=1 ; ime = nCellsSolve @@ -660,15 +661,16 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) jts=jms ; jte = jme kts=kms ; kte = kme-1 - call mpas_log_write(' IMS =$i IME =$i', intArgs=(/ims,ime/)) - call mpas_log_write(' JMS =$i JME =$i', intArgs=(/jms,jme/)) - call mpas_log_write(' KMS =$i KME =$i', intArgs=(/kms,kme/)) - call mpas_log_write(' IDS =$i IDE =$i', intArgs=(/ids,ide/)) - call mpas_log_write(' JDS =$i JDE =$i', intArgs=(/jds,jde/)) - call mpas_log_write(' KDS =$i KDE =$i', intArgs=(/kds,kde/)) - call mpas_log_write(' ITS =$i ITE =$i', intArgs=(/its,ite/)) - call mpas_log_write(' JTS =$i JTE =$i', intArgs=(/jts,jte/)) - call mpas_log_write(' KTS =$i KTE =$i', intArgs=(/kts,kte/)) + call mpas_log_write(' ') + call mpas_log_write('IMS = $i IME = $i',intArgs=(/ims,ime/)) + call mpas_log_write('JMS = $i JME = $i',intArgs=(/jms,jme/)) + call mpas_log_write('KMS = $i KME = $i',intArgs=(/kms,kme/)) + call mpas_log_write('IDS = $i IDE = $i',intArgs=(/ids,ide/)) + call mpas_log_write('JDS = $i JDE = $i',intArgs=(/jds,jde/)) + call mpas_log_write('KDS = $i KDE = $i',intArgs=(/kds,kde/)) + call mpas_log_write('ITS = $i ITE = $i',intArgs=(/its,ite/)) + call mpas_log_write('JTS = $i JTE = $i',intArgs=(/jts,jte/)) + call mpas_log_write('KTS = $i KTE = $i',intArgs=(/kts,kte/)) !initialization local physics variables: num_months = nMonths @@ -682,12 +684,14 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) !... cloud microphysics: dt_microp = dt_dyn n_microp = 1 - if(trim(config_microp_scheme)=='mp_thompson') then + if(trim(config_microp_scheme)=='mp_thompson' .or. & + trim(config_microp_scheme)=='mp_thompson_aerosols') then dt_microp = 90._RKIND n_microp = max(nint(dt_dyn/dt_microp),1) dt_microp = dt_dyn / n_microp if(dt_dyn <= dt_microp) dt_microp = dt_dyn endif + call mpas_log_write(' ') call mpas_log_write('--- specifics on cloud microphysics option microp_scheme = '//trim(config_microp_scheme)) call mpas_log_write('--- dt_microp = $r', realArgs=(/dt_microp/)) call mpas_log_write('--- n_microp = $i', intArgs=(/n_microp/)) @@ -743,7 +747,8 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) has_reqi = 0 has_reqs = 0 if(config_microp_re) then - if(trim(config_microp_scheme)=='mp_thompson' .or. & + if(trim(config_microp_scheme)=='mp_thompson' .or. & + trim(config_microp_scheme)=='mp_thompson_aerosols' .or. & trim(config_microp_scheme)=='mp_wsm6') then if(trim(config_radt_lw_scheme)=='rrtmg_lw' .and. trim(config_radt_sw_scheme)=='rrtmg_sw') then has_reqc = 1 @@ -755,6 +760,7 @@ subroutine physics_run_init(configs,mesh,state,clock,stream_manager) call mpas_log_write('--- has_reqc = $i', intArgs=(/has_reqc/)) call mpas_log_write('--- has_reqi = $i', intArgs=(/has_reqi/)) call mpas_log_write('--- has_reqs = $i', intArgs=(/has_reqs/)) + call mpas_log_write(' ') end subroutine physics_run_init diff --git a/src/core_atmosphere/physics/mpas_atmphys_packages.F b/src/core_atmosphere/physics/mpas_atmphys_packages.F index ebbaabda3d..6f4f87dfb7 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_packages.F +++ b/src/core_atmosphere/physics/mpas_atmphys_packages.F @@ -80,7 +80,8 @@ function atmphys_setup_packages(configs,packages,iocontext) result(ierr) if(config_microp_scheme == 'mp_kessler') then mp_kessler_in = .true. - elseif(config_microp_scheme == 'mp_thompson') then + elseif(config_microp_scheme == 'mp_thompson' .or. & + config_microp_scheme == 'mp_thompson_aerosols') then mp_thompson_in = .true. elseif(config_microp_scheme == 'mp_wsm6') then mp_wsm6_in = .true. From 8e0057689dc6b28be9df9a1937ea0f45f6886fb1 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Fri, 26 Apr 2024 13:58:04 -0600 Subject: [PATCH 033/115] * In ./src/core_atmosphere/Registry.xml, ./src/core_atmosphere/dynamics/mpas_atm_time_integration.F, and ./src/core_atmosphere/physics, finished the implementation of the Thompson cloud microphysics parameterization: -> in Registry.xml, added the prognostic variables and associated tendencies to run the aerosol- aware option, i.e. nifa, nwfa, and nc. also added surface emissions of nwfa (nwfa2d) and nifa (nifa2d). -> in mpas_atm_time_integration.F, added tend_physics to the argument list of the call to subroutine driver_microphysics to compute cloud microphysics tendencies. -> in all other modules, modified sourcecode to run the aerosol-aware option of the thompson cloud microphysics scheme when we use the option config_microp_scheme = "mp_thompson_aerosols". --- src/core_atmosphere/Registry.xml | 231 +++++++--- .../dynamics/mpas_atm_time_integration.F | 2 +- .../mpas_atmphys_driver_microphysics.F | 241 ++++++----- .../physics/mpas_atmphys_init.F | 134 +++--- .../physics/mpas_atmphys_init_microphysics.F | 243 ++++++++++- .../physics/mpas_atmphys_interface.F | 402 +++++++++++++----- .../physics/mpas_atmphys_packages.F | 23 +- .../physics/mpas_atmphys_vars.F | 18 +- 8 files changed, 940 insertions(+), 354 deletions(-) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index e6eefbfb47..2630d41605 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -397,6 +397,7 @@ + @@ -608,13 +609,15 @@ #ifdef DO_PHYSICS - - - - - - - + + + + + + + + + @@ -627,7 +630,9 @@ + + @@ -775,6 +780,18 @@ + + + + + + + + + + + + @@ -1521,31 +1538,43 @@ + packages="bl_mynn_in;bl_ysu_in;cu_ntiedtke_in;mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;bl_ysu_in;cu_ntiedtke_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;mp_thompson_in;mp_thompson_aers_in"/> + packages="mp_thompson_in;mp_thompson_aers_in"/> + + + + + + #endif @@ -1851,31 +1880,43 @@ + packages="bl_mynn_in;bl_ysu_in;cu_ntiedtke_in;mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;bl_ysu_in;cu_ntiedtke_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="bl_mynn_in;mp_thompson_in;mp_thompson_aers_in"/> + packages="mp_thompson_in;mp_thompson_aers_in"/> + + + + + + #endif @@ -1911,29 +1952,49 @@ description="Lateral boundary tendency of rho_zz-coupled theta_m"/> - - - - - - - - + + + + + + @@ -2289,71 +2350,79 @@ + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_kessler_in;mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in;mp_wsm6_in"/> + packages="mp_thompson_in;mp_thompson_aers_in"/> + packages="mp_thompson_in;mp_thompson_aers_in"/> + + + + @@ -3142,6 +3211,58 @@ persistence="scratch" /> #ifdef DO_PHYSICS + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3395,22 +3516,28 @@ description="Potential temperature increment"/> - - - - - - diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index 9098f4e658..e099333f58 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -1182,7 +1182,7 @@ subroutine atm_srk3(domain, dt, itimestep, exchange_halo_group) call mpas_timer_start('microphysics') !$OMP PARALLEL DO do thread=1,nThreads - call driver_microphysics ( block % configs, mesh, state, 2, diag, diag_physics, tend, itimestep, & + call driver_microphysics ( block % configs, mesh, state, 2, diag, diag_physics, tend_physics, tend, itimestep, & cellSolveThreadStart(thread), cellSolveThreadEnd(thread)) end do !$OMP END PARALLEL DO diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F index bdc5ac863d..cd11aca851 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_microphysics.F @@ -28,7 +28,7 @@ module mpas_atmphys_driver_microphysics public:: allocate_microphysics, & deallocate_microphysics, & driver_microphysics, & - microphysics_init + init_microphysics !MPAS driver for parameterization of cloud microphysics processes. @@ -109,30 +109,29 @@ subroutine allocate_microphysics(configs) call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme) !sounding variables: - if(.not.allocated(rho_p) ) allocate(rho_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(th_p) ) allocate(th_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(pi_p) ) allocate(pi_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(pres_p) ) allocate(pres_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(z_p) ) allocate(z_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(dz_p) ) allocate(dz_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(w_p) ) allocate(w_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(rho_p) ) allocate(rho_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(th_p) ) allocate(th_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(pi_p) ) allocate(pi_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(pres_p)) allocate(pres_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(z_p) ) allocate(z_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(dz_p) ) allocate(dz_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(w_p) ) allocate(w_p(ims:ime,kms:kme,jms:jme) ) !mass mixing ratios: - if(.not.allocated(qv_p) ) allocate(qv_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(qc_p) ) allocate(qc_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(qr_p) ) allocate(qr_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qv_p)) allocate(qv_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qc_p)) allocate(qc_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qr_p)) allocate(qr_p(ims:ime,kms:kme,jms:jme)) !surface precipitation: if(.not.allocated(rainnc_p) ) allocate(rainnc_p(ims:ime,jms:jme) ) if(.not.allocated(rainncv_p)) allocate(rainncv_p(ims:ime,jms:jme)) - microp_select: select case(microp_scheme) - - case ("mp_thompson","mp_wsm6") + microp_select: select case(trim(microp_scheme)) + case ("mp_thompson","mp_thompson_aerosols","mp_wsm6") !mass mixing ratios: - if(.not.allocated(qi_p) ) allocate(qi_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(qs_p) ) allocate(qs_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(qg_p) ) allocate(qg_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qi_p)) allocate(qi_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qs_p)) allocate(qs_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(qg_p)) allocate(qg_p(ims:ime,kms:kme,jms:jme)) !surface precipitation: if(.not.allocated(sr_p) ) allocate(sr_p(ims:ime,jms:jme) ) @@ -142,28 +141,36 @@ subroutine allocate_microphysics(configs) if(.not.allocated(graupelncv_p)) allocate(graupelncv_p(ims:ime,jms:jme)) !cloud water,cloud ice,and snow effective radii: - if(.not.allocated(recloud_p) ) allocate(recloud_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(reice_p) ) allocate(reice_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(resnow_p) ) allocate(resnow_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(recloud_p)) allocate(recloud_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(reice_p) ) allocate(reice_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(resnow_p) ) allocate(resnow_p(ims:ime,kms:kme,jms:jme) ) - microp2_select: select case(microp_scheme) + !precipitation flux: + if(.not.allocated(rainprod_p)) allocate(rainprod_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(evapprod_p)) allocate(evapprod_p(ims:ime,kms:kme,jms:jme)) - case("mp_thompson") - !number concentrations: + microp2_select: select case(trim(microp_scheme)) + case("mp_thompson","mp_thompson_aerosols") if(.not.allocated(ntc_p)) allocate(ntc_p(ims:ime,jms:jme)) if(.not.allocated(muc_p)) allocate(muc_p(ims:ime,jms:jme)) if(.not.allocated(ni_p) ) allocate(ni_p(ims:ime,kms:kme,jms:jme)) if(.not.allocated(nr_p) ) allocate(nr_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(rainprod_p)) allocate(rainprod_p(ims:ime,kms:kme,jms:jme)) - if(.not.allocated(evapprod_p)) allocate(evapprod_p(ims:ime,kms:kme,jms:jme)) + microp3_select: select case(trim(microp_scheme)) + case("mp_thompson_aerosols") + if(.not.allocated(nifa2d_p)) allocate(nifa2d_p(ims:ime,jms:jme)) + if(.not.allocated(nwfa2d_p)) allocate(nwfa2d_p(ims:ime,jms:jme)) + if(.not.allocated(nc_p) ) allocate(nc_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(nifa_p) ) allocate(nifa_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(nwfa_p) ) allocate(nwfa_p(ims:ime,kms:kme,jms:jme)) - case default + case default + end select microp3_select + case default end select microp2_select case default - end select microp_select end subroutine allocate_microphysics @@ -183,67 +190,74 @@ subroutine deallocate_microphysics(configs) call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme) !sounding variables: - if(allocated(rho_p) ) deallocate(rho_p ) - if(allocated(th_p) ) deallocate(th_p ) - if(allocated(pi_p) ) deallocate(pi_p ) - if(allocated(pres_p) ) deallocate(pres_p ) - if(allocated(z_p) ) deallocate(z_p ) - if(allocated(dz_p) ) deallocate(dz_p ) - if(allocated(w_p) ) deallocate(w_p ) + if(allocated(rho_p) ) deallocate(rho_p ) + if(allocated(th_p) ) deallocate(th_p ) + if(allocated(pi_p) ) deallocate(pi_p ) + if(allocated(pres_p)) deallocate(pres_p) + if(allocated(z_p) ) deallocate(z_p ) + if(allocated(dz_p) ) deallocate(dz_p ) + if(allocated(w_p) ) deallocate(w_p ) !mass mixing ratios: - if(allocated(qv_p) ) deallocate(qv_p ) - if(allocated(qc_p) ) deallocate(qc_p ) - if(allocated(qr_p) ) deallocate(qr_p ) + if(allocated(qv_p)) deallocate(qv_p) + if(allocated(qc_p)) deallocate(qc_p) + if(allocated(qr_p)) deallocate(qr_p) !surface precipitation: - if(allocated(rainnc_p) ) deallocate(rainnc_p ) - if(allocated(rainncv_p) ) deallocate(rainncv_p ) - - microp_select: select case(microp_scheme) + if(allocated(rainnc_p) ) deallocate(rainnc_p ) + if(allocated(rainncv_p)) deallocate(rainncv_p) - case ("mp_thompson","mp_wsm6") + microp_select: select case(trim(microp_scheme)) + case ("mp_thompson","mp_thompson_aerosols","mp_wsm6") !mass mixing ratios: - if(allocated(qi_p) ) deallocate(qi_p ) - if(allocated(qs_p) ) deallocate(qs_p ) - if(allocated(qg_p) ) deallocate(qg_p ) + if(allocated(qi_p)) deallocate(qi_p) + if(allocated(qs_p)) deallocate(qs_p) + if(allocated(qg_p)) deallocate(qg_p) !surface precipitation: - if(allocated(sr_p) ) deallocate(sr_p ) - if(allocated(snownc_p) ) deallocate(snownc_p ) - if(allocated(snowncv_p) ) deallocate(snowncv_p ) - if(allocated(graupelnc_p) ) deallocate(graupelnc_p ) - if(allocated(graupelncv_p) ) deallocate(graupelncv_p ) + if(allocated(sr_p) ) deallocate(sr_p ) + if(allocated(snownc_p) ) deallocate(snownc_p ) + if(allocated(snowncv_p) ) deallocate(snowncv_p ) + if(allocated(graupelnc_p) ) deallocate(graupelnc_p ) + if(allocated(graupelncv_p)) deallocate(graupelncv_p) !cloud water,cloud ice,and snow effective radii: - if(allocated(recloud_p) ) deallocate(recloud_p ) - if(allocated(reice_p) ) deallocate(reice_p ) - if(allocated(resnow_p) ) deallocate(resnow_p ) + if(allocated(recloud_p)) deallocate(recloud_p) + if(allocated(reice_p) ) deallocate(reice_p ) + if(allocated(resnow_p) ) deallocate(resnow_p ) - microp2_select: select case(microp_scheme) + !precipitation flux: + if(allocated(rainprod_p)) deallocate(rainprod_p) + if(allocated(evapprod_p)) deallocate(evapprod_p) - case("mp_thompson") - !number concentrations: + microp2_select: select case(trim(microp_scheme)) + case("mp_thompson","mp_thompson_aerosols") if(allocated(ntc_p)) deallocate(ntc_p) if(allocated(muc_p)) deallocate(muc_p) if(allocated(ni_p) ) deallocate(ni_p ) if(allocated(nr_p) ) deallocate(nr_p ) - if(allocated(rainprod_p)) deallocate(rainprod_p) - if(allocated(evapprod_p)) deallocate(evapprod_p) + microp3_select: select case(trim(microp_scheme)) + case("mp_thompson_aerosols") + if(allocated(nifa2d_p)) deallocate(nifa2d_p) + if(allocated(nwfa2d_p)) deallocate(nwfa2d_p) + if(allocated(nc_p) ) deallocate(nc_p ) + if(allocated(nifa_p) ) deallocate(nifa_p ) + if(allocated(nwfa_p) ) deallocate(nwfa_p ) - case default + case default + end select microp3_select + case default end select microp2_select case default - end select microp_select end subroutine deallocate_microphysics !================================================================================================================= - subroutine microphysics_init(dminfo,configs,mesh,sfc_input,diag_physics) + subroutine init_microphysics(dminfo,configs,mesh,state,time_lev,sfc_input,diag_physics) !================================================================================================================= !input arguments: @@ -251,11 +265,14 @@ subroutine microphysics_init(dminfo,configs,mesh,sfc_input,diag_physics) type(mpas_pool_type),intent(in):: configs type(mpas_pool_type),intent(in):: mesh type(mpas_pool_type),intent(in):: sfc_input + integer,intent(in):: time_lev !inout arguments: type(mpas_pool_type),intent(inout):: diag_physics + type(mpas_pool_type),intent(inout):: state !local pointer: + logical,pointer:: do_restart character(len=StrKIND),pointer:: microp_scheme !CCPP-compliant flags: @@ -263,31 +280,41 @@ subroutine microphysics_init(dminfo,configs,mesh,sfc_input,diag_physics) integer:: errflg !----------------------------------------------------------------------------------------------------------------- + call mpas_log_write(' ') + call mpas_log_write('--- enter subroutine init_microphysics:') !initialization of CCPP-compliant flags: errmsg = ' ' errflg = 0 call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme) + call mpas_pool_get_config(configs,'config_do_restart' ,do_restart ) + + microp_select: select case(trim(microp_scheme)) + case("mp_thompson","mp_thompson_aerosols") + call thompson_init(l_mp_tables) + call init_thompson_clouddroplets_forMPAS(mesh,sfc_input,diag_physics) - microp_select: select case(microp_scheme) + microp2_select: select case(trim(microp_scheme)) + case("mp_thompson_aerosols") + call init_thompson_aerosols_forMPAS(do_restart,dminfo,mesh,state,time_lev,diag_physics) - case("mp_thompson") - call thompson_init(l_mp_tables) - call init_thompson_clouddroplets_forMPAS(mesh,sfc_input,diag_physics) + case default + end select microp2_select - case("mp_wsm6") - call mp_wsm6_init(den0=rho_a,denr=rho_r,dens=rho_s,cl=cliq,cpv=cpv, & - hail_opt=hail_opt,errmsg=errmsg,errflg=errflg) + case("mp_wsm6") + call mp_wsm6_init(den0=rho_a,denr=rho_r,dens=rho_s,cl=cliq,cpv=cpv, & + hail_opt=hail_opt,errmsg=errmsg,errflg=errflg) - case default + case default + end select microp_select - end select microp_select + call mpas_log_write('--- end subroutine init_microphysics:') - end subroutine microphysics_init + end subroutine init_microphysics !================================================================================================================= - subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,tend,itimestep,its,ite) + subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,tend_physics,tend,itimestep,its,ite) !================================================================================================================= use mpas_constants, only : rvord @@ -304,6 +331,7 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten type(mpas_pool_type),intent(inout):: state type(mpas_pool_type),intent(inout):: diag type(mpas_pool_type),intent(inout):: diag_physics + type(mpas_pool_type),intent(inout):: tend_physics type(mpas_pool_type),intent(inout):: tend !local pointers: @@ -336,13 +364,12 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten call precip_from_MPAS(configs,diag_physics,its,ite) !... initialization of soundings for non-hydrostatic dynamical cores. - call microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,its,ite) + call microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend_physics,its,ite) !... call to different cloud microphysics schemes: - microp_select: select case(microp_scheme) - + microp_select: select case(trim(microp_scheme)) case ("mp_kessler") - call mpas_timer_start('Kessler') + call mpas_timer_start('mp_kessler') call kessler( & t = th_p , qv = qv_p , qc = qc_p , & qr = qr_p , rho = rho_p , pii = pi_p , & @@ -355,11 +382,11 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) - call mpas_timer_stop('Kessler') + call mpas_timer_stop('mp_kessler') case ("mp_thompson") + call mpas_timer_start('mp_thompson') istep = 1 - call mpas_timer_start('Thompson') do while (istep .le. n_microp) call mp_gt_driver( & th = th_p , qv = qv_p , qc = qc_p , & @@ -372,14 +399,40 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten sr = sr_p , rainprod = rainprod_p , evapprod = evapprod_p , & re_cloud = recloud_p , re_ice = reice_p , re_snow = resnow_p , & has_reqc = has_reqc , has_reqi = has_reqi , has_reqs = has_reqs , & - ntc = ntc_p , muc = muc_p , & + ntc = ntc_p , muc = muc_p , & ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) istep = istep + 1 enddo - call mpas_timer_stop('Thompson') + call mpas_timer_stop('mp_thompson') + + case ("mp_thompson_aerosols") + call mpas_timer_start('mp_thompson_aerosols') + istep = 1 + do while (istep .le. n_microp) + call mp_gt_driver( & + th = th_p , qv = qv_p , qc = qc_p , & + qr = qr_p , qi = qi_p , qs = qs_p , & + qg = qg_p , ni = ni_p , nr = nr_p , & + pii = pi_p , p = pres_p , dz = dz_p , & + w = w_p , dt_in = dt_microp , itimestep = itimestep , & + rainnc = rainnc_p , rainncv = rainncv_p , snownc = snownc_p , & + snowncv = snowncv_p , graupelnc = graupelnc_p , graupelncv = graupelncv_p , & + sr = sr_p , rainprod = rainprod_p , evapprod = evapprod_p , & + re_cloud = recloud_p , re_ice = reice_p , re_snow = resnow_p , & + has_reqc = has_reqc , has_reqi = has_reqi , has_reqs = has_reqs , & + nc = nc_p , nifa = nifa_p , nwfa = nwfa_p , & + nifa2d = nifa2d_p , nwfa2d = nwfa2d_p , ntc = ntc_p , & + muc = muc_p , & + ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & + ) + istep = istep + 1 + enddo + call mpas_timer_stop('mp_thompson_aerosols') case ("mp_wsm6") call mpas_timer_start('mp_wsm6') @@ -408,16 +461,15 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten call mpas_timer_stop('mp_wsm6') case default - end select microp_select !... calculate the 10cm radar reflectivity and relative humidity, if needed: if (l_diags) then - !ensure that we only call compute_radar_reflectivity() if we are using an MPS that supports !the computation of simulated radar reflectivity: if(trim(microp_scheme) == "mp_wsm6" .or. & - trim(microp_scheme) == "mp_thompson") then + trim(microp_scheme) == "mp_thompson" .or. & + trim(microp_scheme) == "mp_thompson_aerosols") then call compute_radar_reflectivity(configs,diag_physics,its,ite) else call mpas_log_write('*** NOTICE: NOT computing simulated radar reflectivity') @@ -427,7 +479,6 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten !calculate the relative humidity over water if the temperature is strictly greater than 0.C, !over ice otherwise. call compute_relhum(diag,its,ite) - end if !... copy updated precipitation from the wrf-physics grid back to the geodesic-dynamics grid: @@ -435,7 +486,7 @@ subroutine driver_microphysics(configs,mesh,state,time_lev,diag,diag_physics,ten !... copy updated cloud microphysics variables from the wrf-physics grid back to the geodesic- ! dynamics grid: - call microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend,itimestep,its,ite) + call microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend_physics,tend,its,ite) !... deallocation of all microphysics arrays: !$OMP BARRIER @@ -489,9 +540,8 @@ subroutine precip_from_MPAS(configs,diag_physics,its,ite) enddo !variables specific to different cloud microphysics schemes: - microp_select: select case(microp_scheme) - - case ("mp_thompson","mp_wsm6") + microp_select: select case(trim(microp_scheme)) + case ("mp_thompson","mp_thompson_aerosols","mp_wsm6") do j = jts, jte do i = its, ite snowncv_p(i,j) = 0._RKIND @@ -509,7 +559,6 @@ subroutine precip_from_MPAS(configs,diag_physics,its,ite) enddo case default - end select microp_select end subroutine precip_from_MPAS @@ -583,9 +632,8 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) enddo !variables specific to different cloud microphysics schemes: - microp_select_init: select case(microp_scheme) - - case ("mp_thompson","mp_wsm6") + microp_select: select case(trim(microp_scheme)) + case ("mp_thompson","mp_thompson_aerosols","mp_wsm6") do j = jts,jte do i = its,ite !time-step precipitation: @@ -600,8 +648,7 @@ subroutine precip_to_MPAS(configs,diag_physics,its,ite) enddo case default - - end select microp_select_init + end select microp_select end subroutine precip_to_MPAS @@ -633,8 +680,7 @@ subroutine compute_radar_reflectivity(configs,diag_physics,its,ite) call mpas_pool_get_array(diag_physics,'refl10cm_1km',refl10cm_1km) call mpas_pool_get_array(diag_physics,'refl10cm_1km_max',refl10cm_1km_max) - microp_select: select case(microp_scheme) - + microp_select: select case(trim(microp_scheme)) case ("mp_kessler") call physics_error_fatal('--- calculation of radar reflectivity is not available' // & 'with kessler cloud microphysics') @@ -686,7 +732,7 @@ subroutine compute_radar_reflectivity(configs,diag_physics,its,ite) if(allocated(dBz1d)) deallocate(dBZ1d) if(allocated(zp) ) deallocate(zp ) - case ("mp_thompson") + case ("mp_thompson","mp_thompson_aerosols") if(.not.allocated(p1d) ) allocate(p1d(kts:kte) ) if(.not.allocated(t1d) ) allocate(t1d(kts:kte) ) if(.not.allocated(qv1d) ) allocate(qv1d(kts:kte) ) @@ -740,7 +786,6 @@ subroutine compute_radar_reflectivity(configs,diag_physics,its,ite) if(allocated(zp) ) deallocate(zp ) case default - end select microp_select end subroutine compute_radar_reflectivity diff --git a/src/core_atmosphere/physics/mpas_atmphys_init.F b/src/core_atmosphere/physics/mpas_atmphys_init.F index 8145cdb98f..b53ee8334c 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_init.F +++ b/src/core_atmosphere/physics/mpas_atmphys_init.F @@ -11,13 +11,13 @@ module mpas_atmphys_init use mpas_pool_routines use mpas_timekeeping - use mpas_atmphys_driver_convection, only: init_convection + use mpas_atmphys_driver_convection,only: init_convection use mpas_atmphys_driver_lsm,only: init_lsm - use mpas_atmphys_driver_microphysics + use mpas_atmphys_driver_microphysics,only: init_microphysics use mpas_atmphys_driver_pbl,only: init_pbl - use mpas_atmphys_driver_radiation_lw, only: init_radiation_lw - use mpas_atmphys_driver_radiation_sw, only: init_radiation_sw - use mpas_atmphys_driver_sfclayer + use mpas_atmphys_driver_radiation_lw,only: init_radiation_lw + use mpas_atmphys_driver_radiation_sw,only: init_radiation_sw + use mpas_atmphys_driver_sfclayer,only: init_sfclayer use mpas_atmphys_vars,only: f_qc,f_qr,f_qi,f_qs,f_qg,f_qoz,f_nc,f_ni,f_nifa,f_nwfa,f_nbca use mpas_atmphys_landuse @@ -95,8 +95,9 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ type(mpas_pool_type),intent(inout):: sfc_input !local pointers: - logical,pointer:: config_do_restart, & - config_o3climatology + logical,pointer:: config_do_restart, & + config_o3climatology, & + config_oml1d character(len=StrKIND),pointer:: & config_convection_scheme, & @@ -108,39 +109,35 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ config_radt_sw_scheme integer,pointer:: nCellsSolve,nLags - integer,dimension(:),pointer :: i_rainc,i_rainnc - integer,dimension(:),pointer :: i_acswdnb,i_acswdnbc,i_acswdnt,i_acswdntc, & - i_acswupb,i_acswupbc,i_acswupt,i_acswuptc, & - i_aclwdnb,i_aclwdnbc,i_aclwdnt,i_aclwdntc, & - i_aclwupb,i_aclwupbc,i_aclwupt,i_aclwuptc - - real(kind=RKIND),dimension(:),pointer :: acswdnb,acswdnbc,acswdnt,acswdntc, & - acswupb,acswupbc,acswupt,acswuptc, & - aclwdnb,aclwdnbc,aclwdnt,aclwdntc, & - aclwupb,aclwupbc,aclwupt,aclwuptc - real(kind=RKIND),dimension(:),pointer :: nsteps_accum,ndays_accum,tday_accum, & - tyear_accum,tyear_mean - real(kind=RKIND),dimension(:),pointer :: sst,sstsk,tmn,xice,xicem + integer,dimension(:),pointer:: i_rainc,i_rainnc + integer,dimension(:),pointer:: i_acswdnb,i_acswdnbc,i_acswdnt,i_acswdntc, & + i_acswupb,i_acswupbc,i_acswupt,i_acswuptc, & + i_aclwdnb,i_aclwdnbc,i_aclwdnt,i_aclwdntc, & + i_aclwupb,i_aclwupbc,i_aclwupt,i_aclwuptc + + real(kind=RKIND),dimension(:),pointer:: acswdnb,acswdnbc,acswdnt,acswdntc, & + acswupb,acswupbc,acswupt,acswuptc, & + aclwdnb,aclwdnbc,aclwdnt,aclwdntc, & + aclwupb,aclwupbc,aclwupt,aclwuptc + real(kind=RKIND),dimension(:),pointer:: nsteps_accum,ndays_accum,tday_accum, & + tyear_accum,tyear_mean + real(kind=RKIND),dimension(:),pointer:: sst,sstsk,tmn,xice,xicem real(kind=RKIND),dimension(:,:),pointer:: tlag - real(kind=RKIND),dimension(:),pointer :: t_oml, t_oml_initial, t_oml_200m_initial - real(kind=RKIND),dimension(:),pointer :: h_oml, h_oml_initial, hu_oml, hv_oml - real(kind=RKIND), pointer :: config_oml_hml0 - integer,pointer:: nCells - logical,pointer:: config_oml1d - - + real(kind=RKIND),pointer:: config_oml_hml0 + real(kind=RKIND),dimension(:),pointer:: t_oml,t_oml_initial,t_oml_200m_initial + real(kind=RKIND),dimension(:),pointer:: h_oml,h_oml_initial,hu_oml,hv_oml !local variables and arrays: type(MPAS_Time_Type):: currTime logical:: init_done integer:: ierr,julday - integer:: iCell,iLag,iEdge,nEdges_m + integer:: iCell,iLag !----------------------------------------------------------------------------------------------------------------- -! call mpas_log_write('') -! call mpas_log_write('--- enter subroutine physics_init:') +!call mpas_log_write('') +!call mpas_log_write('--- enter subroutine physics_init:') call mpas_pool_get_config(configs,'config_do_restart' ,config_do_restart ) call mpas_pool_get_config(configs,'config_o3climatology' ,config_o3climatology ) @@ -211,7 +208,6 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ call mpas_pool_get_array(diag_physics,'hv_oml' ,hv_oml) call mpas_pool_get_config(configs,'config_oml1d' ,config_oml1d ) call mpas_pool_get_config(configs,'config_oml_hml0' ,config_oml_hml0 ) - call mpas_pool_get_dimension(mesh,'nCells',nCells) currTime = mpas_get_clock_time(clock,MPAS_NOW,ierr) call mpas_get_time(curr_time=currTime,DoY=julday,ierr=ierr) @@ -284,7 +280,7 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ !initialization of xicem: if(.not.config_do_restart) then -! call mpas_log_write('--- initialization of xicem:') +! call mpas_log_write('--- initialization of xicem:') do iCell = 1, nCellsSolve xicem(iCell) = xice(iCell) enddo @@ -294,47 +290,47 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ !sea-surface temperature is applied. This avoids having the array sstsk equal to !zero over land: if(.not. config_do_restart) then -! call mpas_log_write('--- initialization of sstsk:') +! call mpas_log_write('--- initialization of sstsk:') do iCell = 1, nCellsSolve sstsk(iCell) = sst(iCell) enddo endif -! initialized the 1D ocean mixed-layer model (code from wrf module_sf_oml) - if (config_oml1d) then - if (.not. config_do_restart) then - call mpas_log_write('--- initialization of 1D ocean mixed layer model ') - do iCell = 1, nCellsSolve - t_oml(iCell) = sst(iCell) - t_oml_initial(iCell) = sst(iCell) - end do - if (config_oml_hml0 .gt. 0) then - do iCell = 1, nCellsSolve - h_oml(iCell) = config_oml_hml0 - h_oml_initial(iCell) = config_oml_hml0 - hu_oml(iCell) = 0. - hv_oml(iCell) = 0. - t_oml_200m_initial(iCell) = sst(iCell) - 5. - end do - else if (config_oml_hml0 .eq. 0) then -! initializing with climatological mixed layer depth only - do iCell = 1, nCellsSolve - h_oml(iCell) = h_oml_initial(iCell) - hu_oml(iCell) = 0. - hv_oml(iCell) = 0. - t_oml_200m_initial(iCell) = sst(iCell) - 5. - end do - else - do iCell = 1, nCellsSolve - h_oml(iCell) = h_oml_initial(iCell) - ! WRF COMMENT: - ! fill in near coast area with SST: 200 K was set as missing value in ocean pre-processing code - if( (t_oml_200m_initial(iCell) > 200.) .and. (t_oml_200m_initial(iCell) <= 200.) ) & - t_oml_200m_initial(iCell) = sst(iCell) - end do - end if - end if - end if +!initialized the 1D ocean mixed-layer model (code from wrf module_sf_oml): + if(config_oml1d) then + if(.not. config_do_restart) then + call mpas_log_write('--- initialization of 1D ocean mixed layer model ') + do iCell = 1, nCellsSolve + t_oml(iCell) = sst(iCell) + t_oml_initial(iCell) = sst(iCell) + enddo + if(config_oml_hml0 .gt. 0) then + do iCell = 1, nCellsSolve + h_oml(iCell) = config_oml_hml0 + h_oml_initial(iCell) = config_oml_hml0 + hu_oml(iCell) = 0. + hv_oml(iCell) = 0. + t_oml_200m_initial(iCell) = sst(iCell) - 5. + enddo + elseif(config_oml_hml0 .eq. 0) then +! initializing with climatological mixed layer depth only: + do iCell = 1, nCellsSolve + h_oml(iCell) = h_oml_initial(iCell) + hu_oml(iCell) = 0. + hv_oml(iCell) = 0. + t_oml_200m_initial(iCell) = sst(iCell) - 5. + enddo + else + do iCell = 1, nCellsSolve + h_oml(iCell) = h_oml_initial(iCell) + ! WRF COMMENT: + ! fill in near coast area with SST: 200 K was set as missing value in ocean pre-processing code + if( (t_oml_200m_initial(iCell) > 200.) .and. (t_oml_200m_initial(iCell) <= 200.) ) & + t_oml_200m_initial(iCell) = sst(iCell) + enddo + endif + endif + endif !initialization of temperatures needed for updating the deep soil temperature: if(.not. config_do_restart) then @@ -363,7 +359,7 @@ subroutine physics_init(dminfo,clock,configs,mesh,diag,tend,state,time_lev,diag_ !initialization of cloud microphysics processes: if(config_microp_scheme .ne. 'off') & - call microphysics_init(dminfo,configs,mesh,sfc_input,diag_physics) + call init_microphysics(dminfo,configs,mesh,state,time_lev,sfc_input,diag_physics) !initialization of PBL processes: if(config_pbl_scheme .ne. 'off') call init_pbl(configs) diff --git a/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F index 99db47ced6..b834702005 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F @@ -5,20 +5,23 @@ ! Additional copyright and license information can be found in the LICENSE file ! distributed with this code, or at http://mpas-dev.github.com/license.html ! +#define DM_BCAST_MACRO(A) call mpas_dmpar_bcast_reals(dminfo,size(A),A) !================================================================================================================= module mpas_atmphys_init_microphysics use mpas_dmpar use mpas_kind_types + use mpas_log use mpas_pool_routines use mpas_atmphys_utilities -!use module_mp_thompson, only: is_aerosol_aware,naCCN0,naCCN1,naIN0,naIN1,ntb_arc,ntb_arw,ntb_art,ntb_arr, & -! ntb_ark,tnccn_act + use module_mp_thompson, only: is_aerosol_aware,naCCN0,naCCN1,naIN0,naIN1,ntb_arc,ntb_arw,ntb_art,ntb_arr, & + ntb_ark,tnccn_act implicit none private - public:: init_thompson_clouddroplets_forMPAS + public:: init_thompson_clouddroplets_forMPAS, & + init_thompson_aerosols_forMPAS !MPAS main initialization of the Thompson parameterization of cloud microphysics with nucleation of cloud !droplets based on distributions of CCNs and INs (aerosol-aware parameterization). @@ -29,6 +32,15 @@ module mpas_atmphys_init_microphysics ! ---------------------------------------- ! * added "use mpas_dmpar" at the top of the module. ! Laura D. Fowler (laura@ucar.edu) / 2016-04-04. +! * modified the initialization of nifa and nwfa.If nifa and nwfa are already available in the initial conditions +! using the climatological GOCART data,do not recalculate nifa and nwfa using an exponential profile of CCN and +! IN as a function of height. +! Laura D. Fowler (laura@ucar.edu) / 2016-05-27. +! * modified the subroutine init_thompson_aerosols_forMPAS for exact restartibility when using the microphysics +! option "mp_thompson_aerosols". +! Laura D. Fowler (laura@ucar.edu) / 2018-02-23. +! * changed the definition of DM_BCAST_MACRO to compile table_ccnAct with the default DOUBLE PRECISION. +! Laura D. Fowler (laura@ucar.edu) / 2018-03-07. contains @@ -80,8 +92,227 @@ subroutine init_thompson_clouddroplets_forMPAS(mesh,sfc_input,diag_physics) end subroutine init_thompson_clouddroplets_forMPAS !================================================================================================================= - end module mpas_atmphys_init_microphysics + subroutine init_thompson_aerosols_forMPAS(do_restart,dminfo,mesh,state,time_lev,diag_physics) +!================================================================================================================= + +!input variables: + type(dm_info),intent(in):: dminfo + type(mpas_pool_type),intent(in):: mesh + logical,intent(in):: do_restart + integer,intent(in):: time_lev + +!inout variables: + type(mpas_pool_type),intent(inout):: diag_physics + type(mpas_pool_type),intent(inout):: state + +!local variables and pointers: + integer,pointer:: nCellsSolve,nVertLevels + integer,pointer:: index_nifa,index_nwfa + + real(kind=RKIND),dimension(:),pointer :: areaCell + real(kind=RKIND),dimension(:),pointer :: nifa2d,nwfa2d + real(kind=RKIND),dimension(:,:),pointer :: zgrid,zz + real(kind=RKIND),dimension(:,:),pointer :: rho_zz,nifa,nwfa + real(kind=RKIND),dimension(:,:,:),pointer:: scalars + + character(len=StrKIND):: mess + + integer:: iCell, k + + real(kind=RKIND):: max_test + real(kind=RKIND):: airmass + real(kind=RKIND):: h_01 + real(kind=RKIND):: niIN3,niCCN3 + real(kind=RKIND):: nifa_max,nifa_min,global_nifa_max,global_nifa_min + real(kind=RKIND):: nwfa_max,nwfa_min,global_nwfa_max,global_nwfa_min + real(kind=RKIND),dimension(:,:),allocatable:: hgt + +!----------------------------------------------------------------------------------------------------------------- + call mpas_log_write('--- enter subroutine init_thompson_aerosols_forMPAS:') + + is_aerosol_aware = .true. + +!... read a static file containing CCN activation of aerosols. The data were created from a parcel model by +!... Feingold & Heymsfield with further changes by Eidhammer and Kriedenweis. + call table_ccnAct(dminfo) + call mpas_log_write('--- end read table_ccnAct:') + +!... if do_restart is true, then we do not need to check the initialization of nwfa, nifa, and nwfa2d. If false, +! then, we proceed with the initialization: + if(do_restart) return + + call mpas_pool_get_dimension(mesh,'nCellsSolve',nCellsSolve) + call mpas_pool_get_dimension(mesh,'nVertLevels',nVertLevels) + + call mpas_pool_get_array(mesh,'areaCell',areaCell) + call mpas_pool_get_array(mesh,'zgrid' ,zgrid ) + call mpas_pool_get_array(mesh,'zz' ,zz ) + + call mpas_pool_get_array(diag_physics,'nifa2d',nifa2d) + call mpas_pool_get_array(diag_physics,'nwfa2d',nwfa2d) + + call mpas_pool_get_dimension(state,'index_nifa' ,index_nifa ) + call mpas_pool_get_dimension(state,'index_nwfa' ,index_nwfa ) + + call mpas_pool_get_array(state,'scalars',scalars,time_lev) + nifa => scalars(index_nifa,:,:) + nwfa => scalars(index_nwfa,:,:) + + call mpas_pool_get_array(state,'rho_zz',rho_zz,time_lev) + + if(.not.allocated(hgt)) allocate(hgt(1:nVertLevels,1:nCellsSolve)) + do iCell = 1, nCellsSolve + do k = 1, nVertLevels + hgt(k,iCell) = 0.5_RKIND * (zgrid(k,iCell)+zgrid(k+1,iCell)) + enddo + enddo + +!... initialize the distribution of hygroscopic ("water friendly") aerosols if not already initialized using +! GOCART data: + global_nwfa_min = 0._RKIND + global_nwfa_max = 0._RKIND + nwfa_min = minval(nwfa(:,1:nCellsSolve)) + nwfa_max = maxval(nwfa(:,1:nCellsSolve)) + call mpas_dmpar_min_real(dminfo,nwfa_min,global_nwfa_min) + call mpas_dmpar_max_real(dminfo,nwfa_max,global_nwfa_max) + call mpas_log_write('--- global_nwfa_min = $r',realArgs=(/global_nwfa_min/)) + call mpas_log_write('--- global_nwfa_max = $r',realArgs=(/global_nwfa_max/)) + + if(global_nwfa_min == 0._RKIND .and. global_nwfa_max == 0._RKIND) then + call mpas_log_write('--- initialize nwfa using an exponential distribution of CCN as a function of height.') + do iCell = 1, nCellsSolve + if(hgt(1,iCell).le.1000.0) then + h_01 = 0.8 + elseif(hgt(1,iCell).ge.2500.0) then + h_01 = 0.01 + else + h_01 = 0.8*cos(hgt(1,iCell)*0.001 - 1.0) + endif + niCCN3 = -1.0*ALOG(naCCN1/naCCN0)/h_01 + nwfa(1,iCell) = naCCN1+naCCN0*exp(-((hgt(2,iCell)-hgt(1,iCell))/1000.)*niCCN3) + do k = 2, nVertLevels + nwfa(k,iCell) = naCCN1+naCCN0*exp(-((hgt(k,iCell)-hgt(1,iCell))/1000.)*niCCN3) + enddo + enddo + else + call mpas_log_write('--- initialize nwfa using the climatological GOCART data.') + endif + +!... initialize the distribution of nonhygroscopic ("ice friendly") aerosols if not already initialized using +! GOCART data: + global_nifa_min = 0._RKIND + global_nifa_max = 0._RKIND + nifa_min = minval(nifa(:,1:nCellsSolve)) + nifa_max = maxval(nifa(:,1:nCellsSolve)) + call mpas_dmpar_min_real(dminfo,nifa_min,global_nifa_min) + call mpas_dmpar_max_real(dminfo,nifa_max,global_nifa_max) + call mpas_log_write('--- global_nifa_min = $r',realArgs=(/global_nifa_min/)) + call mpas_log_write('--- global_nifa_max = $r',realArgs=(/global_nifa_max/)) + + if(global_nifa_min == 0._RKIND .and. global_nifa_max == 0._RKIND) then + call mpas_log_write('--- initialize nifa using an exponential distribution of IN as a function of height.') + do iCell = 1, nCellsSolve + if(hgt(1,iCell).le.1000.0) then + h_01 = 0.8 + elseif(hgt(1,iCell).ge.2500.0) then + h_01 = 0.01 + else + h_01 = 0.8*cos(hgt(1,iCell)*0.001 - 1.0) + endif + niIN3 = -1.0*ALOG(naIN1/naIN0)/h_01 + nifa(1,iCell) = naIN1+naIN0*exp(-((hgt(2,iCell)-hgt(1,iCell))/1000.)*niIN3) + do k = 2, nVertLevels + nifa(k,iCell) = naIN1+naIN0*exp(-((hgt(k,iCell)-hgt(1,iCell))/1000.)*niIN3) + enddo + enddo + else + call mpas_log_write('--- initialize nifa using the climatological GOCART data.') + endif + +!... scale the lowest level aerosol data into an emissions rate. This is very far from ideal, but +!... need higher emissions where larger amount of (climo) existing and lesser emissions where there +!... exists fewer to begin as a first-order simplistic approach. Later, proper connection to emission +!... inventory would be better, but, for now, scale like this: +!... where: Nwfa=50 per cc, emit 0.875E4 aerosols per second per grid box unit +!... that was tested as ~(20kmx20kmx50m = 2.E10 m**-3). + + k = 1 + do iCell = 1, nCellsSolve +! airmass = rho_zz(k,iCell)*zz(k,iCell) +! airmass = airmass*(zgrid(k+1,iCell)-zgrid(k,iCell))*areaCell(iCell) ! (in kg) +! nwfa2d(iCell) = nwfa(k,iCell)*0.000196*(airmass*2.E-10) + nwfa2d(iCell) = 0._RKIND + nifa2d(iCell) = 0._RKIND +! call mpas_log_write('$i $r $r $r $r',intArgs=(/iCell/),realArgs=(/airmass,nwfa2d(iCell), & +! nwfa2d(iCell)*450.,nifa2d(iCell)/)) + enddo + +!... deallocate local arrays: + if(allocated(hgt)) deallocate(hgt) + + call mpas_log_write('--- end subroutine init_thompson_aerosols_forMPAS.') + + end subroutine init_thompson_aerosols_forMPAS + !================================================================================================================= + subroutine table_ccnAct(dminfo) +!================================================================================================================= + +!input variables: + type(dm_info),intent(in):: dminfo - - +!local variables: + logical:: opened + integer:: ccn_unit,i,istat + character(len=StrKIND):: errmess +!----------------------------------------------------------------------------------------------------------------- + + if(.not.allocated(tnccn_act)) allocate(tnccn_act(ntb_arc,ntb_arw,ntb_art,ntb_arr,ntb_ark)) + +!get a unit to open binary file: + istat = -999 + if(dminfo % my_proc_id == IO_NODE) then + do i = 10,99 + inquire(i,opened = opened,iostat=istat) + if(.not. opened ) then + ccn_unit = i + exit + endif + enddo + if(istat /= 0) & + call physics_error_fatal('mpas_atmphys_init_microphysics table_ccnAct: Can not '// & + 'find unused fortran unit to read in lookup table.' ) + endif + +!distribute unit to other processors: + call mpas_dmpar_bcast_int(dminfo,ccn_unit) + +!open binary file: + istat = -999 + if(dminfo % my_proc_id == IO_NODE) then + open(ccn_unit,file='CCN_ACTIVATE_DATA',form='UNFORMATTED',status='OLD',iostat=istat) + if(istat /= 0) then + write(errmess,'(A,I4)') 'mpas_atmphys_init_microphysics table_ccnAct:: '// & + 'error opening CCN_ACTIVATE_DATA on unit', ccn_unit + call physics_error_fatal(errmess) + endif + endif + +!read and broadcast data to all nodes: + istat = -999 + if(dminfo % my_proc_id == IO_NODE) then + read(ccn_unit,iostat=istat) tnccn_act + if(istat /= 0) then + write(errmess,'(A,I4)') 'mpas_atmphys_init_microphysics table_ccnAct:: '// & + 'error reading tnccn_act on unit', ccn_unit + call physics_error_fatal(errmess) + endif + endif + + DM_BCAST_MACRO(tnccn_act) + + end subroutine table_ccnAct + +!================================================================================================================= + end module mpas_atmphys_init_microphysics +!================================================================================================================= diff --git a/src/core_atmosphere/physics/mpas_atmphys_interface.F b/src/core_atmosphere/physics/mpas_atmphys_interface.F index 5da88ebc29..76fcc20e25 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_interface.F +++ b/src/core_atmosphere/physics/mpas_atmphys_interface.F @@ -114,7 +114,7 @@ subroutine allocate_forall_physics(configs) if(.not.allocated(qs_p) ) allocate(qs_p(ims:ime,kms:kme,jms:jme) ) if(.not.allocated(qg_p) ) allocate(qg_p(ims:ime,kms:kme,jms:jme) ) - pbl_select: select case (trim(pbl_scheme)) + pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") if(.not.allocated(ni_p)) allocate(ni_p(ims:ime,kms:kme,jms:jme)) @@ -178,7 +178,7 @@ subroutine deallocate_forall_physics(configs) if(allocated(qs_p) ) deallocate(qs_p ) if(allocated(qg_p) ) deallocate(qg_p ) - pbl_select: select case (trim(pbl_scheme)) + pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") if(allocated(ni_p)) deallocate(ni_p) @@ -318,7 +318,7 @@ subroutine MPAS_to_physics(configs,mesh,state,time_lev,diag,diag_physics,its,ite enddo enddo - pbl_select: select case (trim(pbl_scheme)) + pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") call mpas_pool_get_dimension(state,'index_ni',index_ni) ni => scalars(index_ni,:,:) @@ -470,7 +470,7 @@ subroutine MPAS_to_physics(configs,mesh,state,time_lev,diag,diag_physics,its,ite end subroutine MPAS_to_physics !================================================================================================================= - subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,its,ite) + subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend_physics,its,ite) !================================================================================================================= !input variables: @@ -483,18 +483,23 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics, integer,intent(in):: its,ite integer:: time_lev +!inout variables: + type(mpas_pool_type),intent(inout):: tend_physics + !local pointers: - character(len=StrKIND),pointer:: microp_scheme + character(len=StrKIND),pointer:: mp_scheme integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg - integer,pointer:: index_ni,index_nr - real(kind=RKIND),dimension(:),pointer :: nt_c,mu_c + integer,pointer:: index_nc,index_ni,index_nr,index_nifa,index_nwfa + real(kind=RKIND),dimension(:),pointer :: nifa2d,nwfa2d,nt_c,mu_c real(kind=RKIND),dimension(:,:),pointer :: zgrid,w real(kind=RKIND),dimension(:,:),pointer :: zz,exner,pressure_b real(kind=RKIND),dimension(:,:),pointer :: rho_zz,theta_m,pressure_p real(kind=RKIND),dimension(:,:),pointer :: qv,qc,qr,qi,qs,qg - real(kind=RKIND),dimension(:,:),pointer :: ni,nr + real(kind=RKIND),dimension(:,:),pointer :: nc,ni,nr,nifa,nwfa real(kind=RKIND),dimension(:,:),pointer :: rainprod,evapprod real(kind=RKIND),dimension(:,:),pointer :: re_cloud,re_ice,re_snow + real(kind=RKIND),dimension(:,:),pointer :: rthmpten,rqvmpten,rqcmpten,rqrmpten,rqimpten,rqsmpten,rqgmpten + real(kind=RKIND),dimension(:,:),pointer :: rncmpten,rnimpten,rnrmpten,rnifampten,rnwfampten real(kind=RKIND),dimension(:,:,:),pointer:: scalars !local variables: @@ -502,7 +507,7 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics, !----------------------------------------------------------------------------------------------------------------- - call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme) + call mpas_pool_get_config(configs,'config_microp_scheme',mp_scheme) call mpas_pool_get_array(mesh,'zgrid',zgrid) call mpas_pool_get_array(mesh,'zz' ,zz ) @@ -511,31 +516,17 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics, call mpas_pool_get_array(diag,'pressure_base',pressure_b) call mpas_pool_get_array(diag,'pressure_p' ,pressure_p) - call mpas_pool_get_array(diag_physics,'nt_c' ,nt_c ) - call mpas_pool_get_array(diag_physics,'mu_c' ,mu_c ) - call mpas_pool_get_array(diag_physics,'rainprod',rainprod) - call mpas_pool_get_array(diag_physics,'evapprod',evapprod) - call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) - call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) - call mpas_pool_get_array(diag_physics,'re_snow' ,re_snow ) - call mpas_pool_get_array(state,'rho_zz' ,rho_zz ,time_lev) call mpas_pool_get_array(state,'theta_m',theta_m,time_lev) call mpas_pool_get_array(state,'w' ,w ,time_lev) - call mpas_pool_get_dimension(state,'index_qv' ,index_qv ) - call mpas_pool_get_dimension(state,'index_qc' ,index_qc ) - call mpas_pool_get_dimension(state,'index_qr' ,index_qr ) - call mpas_pool_get_dimension(state,'index_qi' ,index_qi ) - call mpas_pool_get_dimension(state,'index_qs' ,index_qs ) - call mpas_pool_get_dimension(state,'index_qg' ,index_qg ) - call mpas_pool_get_dimension(state,'index_ni' ,index_ni ) - call mpas_pool_get_dimension(state,'index_nr' ,index_nr ) - + call mpas_pool_get_dimension(state,'index_qv',index_qv) + call mpas_pool_get_dimension(state,'index_qc',index_qc) + call mpas_pool_get_dimension(state,'index_qr',index_qr) call mpas_pool_get_array(state,'scalars',scalars,time_lev) - qv => scalars(index_qv,:,:) - qc => scalars(index_qc,:,:) - qr => scalars(index_qr,:,:) + qv => scalars(index_qv,:,:) + qc => scalars(index_qc,:,:) + qr => scalars(index_qr,:,:) !initialize variables needed in the cloud microphysics schemes: do j = jts, jte @@ -558,13 +549,21 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics, enddo enddo -!additional initialization as function of cloud microphysics scheme: - microp_select_init: select case(microp_scheme) - - case ("mp_thompson","mp_wsm6") - qi => scalars(index_qi,:,:) - qs => scalars(index_qs,:,:) - qg => scalars(index_qg,:,:) +!initialize cloud water species and aerosols as function of cloud microphysics scheme: + mp_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") + call mpas_pool_get_dimension(state,'index_qi',index_qi) + call mpas_pool_get_dimension(state,'index_qs',index_qs) + call mpas_pool_get_dimension(state,'index_qg',index_qg) + qi => scalars(index_qi,:,:) + qs => scalars(index_qs,:,:) + qg => scalars(index_qg,:,:) + + call mpas_pool_get_array(diag_physics,'rainprod',rainprod) + call mpas_pool_get_array(diag_physics,'evapprod',evapprod) + call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) + call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) + call mpas_pool_get_array(diag_physics,'re_snow' ,re_snow ) do j = jts, jte do k = kts, kte @@ -572,77 +571,168 @@ subroutine microphysics_from_MPAS(configs,mesh,state,time_lev,diag,diag_physics, qi_p(i,k,j) = qi(k,i) qs_p(i,k,j) = qs(k,i) qg_p(i,k,j) = qg(k,i) - recloud_p(i,k,j) = re_cloud(k,i) - reice_p(i,k,j) = re_ice(k,i) - resnow_p(i,k,j) = re_snow(k,i) + + rainprod_p(i,k,j) = rainprod(k,i) + evapprod_p(i,k,j) = evapprod(k,k) + recloud_p(i,k,j) = re_cloud(k,i) + reice_p(i,k,j) = re_ice(k,i) + resnow_p(i,k,j) = re_snow(k,i) enddo enddo enddo - microp2_select: select case(microp_scheme) - - case("mp_thompson") - ni => scalars(index_ni,:,:) - nr => scalars(index_nr,:,:) - - do j = jts,jte - do i = its,ite - muc_p(i,j) = mu_c(i) - ntc_p(i,j) = nt_c(i) - enddo - enddo - do j = jts, jte - do k = kts, kte - do i = its, ite - ni_p(i,k,j) = ni(k,i) - nr_p(i,k,j) = nr(k,i) - rainprod_p(i,k,j) = rainprod(k,i) - evapprod_p(i,k,j) = evapprod(k,i) - enddo - enddo - enddo - - case default - - end select microp2_select + mp2_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols") + call mpas_pool_get_dimension(state,'index_ni',index_ni) + call mpas_pool_get_dimension(state,'index_nr',index_nr) + ni => scalars(index_ni,:,:) + nr => scalars(index_nr,:,:) + + call mpas_pool_get_array(diag_physics,'nt_c',nt_c) + call mpas_pool_get_array(diag_physics,'mu_c',mu_c) + do j = jts,jte + do i = its,ite + muc_p(i,j) = mu_c(i) + ntc_p(i,j) = nt_c(i) + enddo + do k = kts, kte + do i = its, ite + ni_p(i,k,j) = ni(k,i) + nr_p(i,k,j) = nr(k,i) + enddo + enddo + enddo + + mp3_select: select case(trim(mp_scheme)) + case("mp_thompson_aerosols") + call mpas_pool_get_dimension(state,'index_nc' ,index_nc ) + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) + nc => scalars(index_nc,:,:) + nifa => scalars(index_nifa,:,:) + nwfa => scalars(index_nwfa,:,:) + + call mpas_pool_get_array(diag_physics,'nifa2d',nifa2d) + call mpas_pool_get_array(diag_physics,'nwfa2d',nwfa2d) + do j = jts,jte + do i = its,ite + nifa2d_p(i,j) = nifa2d(i) + nwfa2d_p(i,j) = nwfa2d(i) + enddo + do k = kts, kte + do i = its, ite + nc_p(i,k,j) = nc(k,i) + nifa_p(i,k,j) = nifa(k,i) + nwfa_p(i,k,j) = nwfa(k,i) + enddo + enddo + enddo + + case default + end select mp3_select + + case default + end select mp2_select case default + end select mp_select + +!begin calculation of cloud microphysics tendencies: + mp_tend_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") + call mpas_pool_get_array(tend_physics,'rthmpten',rthmpten) + call mpas_pool_get_array(tend_physics,'rqvmpten',rqvmpten) + call mpas_pool_get_array(tend_physics,'rqcmpten',rqcmpten) + call mpas_pool_get_array(tend_physics,'rqrmpten',rqrmpten) + call mpas_pool_get_array(tend_physics,'rqimpten',rqimpten) + call mpas_pool_get_array(tend_physics,'rqsmpten',rqsmpten) + call mpas_pool_get_array(tend_physics,'rqgmpten',rqgmpten) + + do k = kts,kte + do i = its,ite + rthmpten(k,i) = theta_m(k,i)/(1._RKIND+R_v/R_d*max(0._RKIND,qv(k,i))) + rqvmpten(k,i) = qv(k,i) + rqcmpten(k,i) = qc(k,i) + rqrmpten(k,i) = qr(k,i) + rqimpten(k,i) = qi(k,i) + rqsmpten(k,i) = qs(k,i) + rqgmpten(k,i) = qg(k,i) + enddo + enddo - end select microp_select_init + mp2_tend_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols") + call mpas_pool_get_array(tend_physics,'rnimpten',rnimpten) + call mpas_pool_get_array(tend_physics,'rnrmpten',rnrmpten) + + do k = kts,kte + do i = its,ite + rnimpten(k,i) = ni(k,i) + rnrmpten(k,i) = nr(k,i) + enddo + enddo + + mp3_tend_select: select case(trim(mp_scheme)) + case("mp_thompson_aerosols") + call mpas_pool_get_array(tend_physics,'rncmpten',rncmpten) + call mpas_pool_get_array(tend_physics,'rnifampten',rnifampten) + call mpas_pool_get_array(tend_physics,'rnwfampten',rnwfampten) + + do k = kts,kte + do i = its,ite + rncmpten(k,i) = nc(k,i) + rnifampten(k,i) = nifa(k,i) + rnwfampten(k,i) = nwfa(k,i) + enddo + enddo + + case default + end select mp3_tend_select + + case default + end select mp2_tend_select + + case default + end select mp_tend_select end subroutine microphysics_from_MPAS !================================================================================================================= - subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend,itimestep,its,ite) + subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,tend_physics,tend,its,ite) !================================================================================================================= !input variables: type(mpas_pool_type),intent(in):: configs type(mpas_pool_type),intent(in):: mesh - integer,intent(in):: itimestep,time_lev + integer,intent(in):: time_lev integer,intent(in):: its,ite -!output variables: +!inout variables: type(mpas_pool_type),intent(inout):: state type(mpas_pool_type),intent(inout):: diag type(mpas_pool_type),intent(inout):: tend type(mpas_pool_type),intent(inout):: diag_physics + type(mpas_pool_type),intent(inout):: tend_physics + !local pointers: - character(len=StrKIND),pointer:: microp_scheme + character(len=StrKIND),pointer:: mp_scheme integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg - integer,pointer:: index_ni,index_nr + integer,pointer:: index_nc,index_ni,index_nr,index_nifa,index_nwfa real(kind=RKIND),dimension(:),pointer :: surface_pressure,tend_sfc_pressure + real(kind=RKIND),dimension(:),pointer :: nifa2d,nwfa2d real(kind=RKIND),dimension(:,:),pointer :: zgrid real(kind=RKIND),dimension(:,:),pointer :: zz,exner,exner_b,pressure_b,rtheta_p,rtheta_b real(kind=RKIND),dimension(:,:),pointer :: rho_zz,theta_m,pressure_p real(kind=RKIND),dimension(:,:),pointer :: rt_diabatic_tend real(kind=RKIND),dimension(:,:),pointer :: dtheta_dt_mp real(kind=RKIND),dimension(:,:),pointer :: qv,qc,qr,qi,qs,qg - real(kind=RKIND),dimension(:,:),pointer :: ni,nr + real(kind=RKIND),dimension(:,:),pointer :: nc,ni,nr,nifa,nwfa real(kind=RKIND),dimension(:,:),pointer :: rainprod,evapprod real(kind=RKIND),dimension(:,:),pointer :: re_cloud,re_ice,re_snow + real(kind=RKIND),dimension(:,:),pointer :: rthmpten,rqvmpten,rqcmpten,rqrmpten,rqimpten,rqsmpten,rqgmpten + real(kind=RKIND),dimension(:,:),pointer :: rncmpten,rnimpten,rnrmpten,rnifampten,rnwfampten real(kind=RKIND),dimension(:,:,:),pointer:: scalars !local variables: @@ -652,7 +742,7 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te !----------------------------------------------------------------------------------------------------------------- - call mpas_pool_get_config(configs,'config_microp_scheme',microp_scheme) + call mpas_pool_get_config(configs,'config_microp_scheme',mp_scheme) call mpas_pool_get_array(mesh,'zz' ,zz ) call mpas_pool_get_array(mesh,'zgrid',zgrid) @@ -666,12 +756,6 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te call mpas_pool_get_array(diag,'surface_pressure',surface_pressure) call mpas_pool_get_array(diag,'dtheta_dt_mp' ,dtheta_dt_mp ) - call mpas_pool_get_array(diag_physics,'rainprod',rainprod) - call mpas_pool_get_array(diag_physics,'evapprod',evapprod) - call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) - call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) - call mpas_pool_get_array(diag_physics,'re_snow' ,re_snow ) - call mpas_pool_get_array(tend,'tend_sfc_pressure',tend_sfc_pressure) call mpas_pool_get_array(state,'rho_zz' ,rho_zz ,time_lev) @@ -680,12 +764,6 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te call mpas_pool_get_dimension(state,'index_qv' ,index_qv ) call mpas_pool_get_dimension(state,'index_qc' ,index_qc ) call mpas_pool_get_dimension(state,'index_qr' ,index_qr ) - call mpas_pool_get_dimension(state,'index_qi' ,index_qi ) - call mpas_pool_get_dimension(state,'index_qs' ,index_qs ) - call mpas_pool_get_dimension(state,'index_qg' ,index_qg ) - call mpas_pool_get_dimension(state,'index_ni' ,index_ni ) - call mpas_pool_get_dimension(state,'index_nr' ,index_nr ) - call mpas_pool_get_array(state,'scalars',scalars,time_lev) qv => scalars(index_qv,:,:) qc => scalars(index_qc,:,:) @@ -727,7 +805,7 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te enddo enddo -!updates the surface pressure and calculates the surface pressure tendency: +!update surface pressure and calculates the surface pressure tendency: do j = jts,jte do i = its,ite tem1 = zgrid(2,i)-zgrid(1,i) @@ -745,20 +823,31 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te enddo enddo -!variables specific to different cloud microphysics schemes: - microp_select_init: select case(microp_scheme) - - case ("mp_thompson","mp_wsm6") - qi => scalars(index_qi,:,:) - qs => scalars(index_qs,:,:) - qg => scalars(index_qg,:,:) +!update cloud water species and aerosols as functions of cloud microphysics schemes: + mp_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") + call mpas_pool_get_dimension(state,'index_qi',index_qi) + call mpas_pool_get_dimension(state,'index_qs',index_qs) + call mpas_pool_get_dimension(state,'index_qg',index_qg) + qi => scalars(index_qi,:,:) + qs => scalars(index_qs,:,:) + qg => scalars(index_qg,:,:) + + call mpas_pool_get_array(diag_physics,'rainprod',rainprod) + call mpas_pool_get_array(diag_physics,'evapprod',evapprod) + call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) + call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) + call mpas_pool_get_array(diag_physics,'re_snow' ,re_snow ) - do j = jts, jte - do k = kts, kte - do i = its, ite + do j = jts,jte + do k = kts,kte + do i = its,ite qi(k,i) = qi_p(i,k,j) qs(k,i) = qs_p(i,k,j) qg(k,i) = qg_p(i,k,j) + + rainprod(k,i) = rainprod_p(i,k,j) + evapprod(k,i) = evapprod_p(i,k,j) re_cloud(k,i) = recloud_p(i,k,j) re_ice(k,i) = reice_p(i,k,j) re_snow(k,i) = resnow_p(i,k,j) @@ -766,30 +855,113 @@ subroutine microphysics_to_MPAS(configs,mesh,state,time_lev,diag,diag_physics,te enddo enddo - microp2_select: select case(microp_scheme) - - case("mp_thompson") - ni => scalars(index_ni,:,:) - nr => scalars(index_nr,:,:) + mp2_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols") + call mpas_pool_get_dimension(state,'index_ni',index_ni) + call mpas_pool_get_dimension(state,'index_nr',index_nr) + ni => scalars(index_ni,:,:) + nr => scalars(index_nr,:,:) + + do j = jts,jte + do k = kts,kte + do i = its,ite + ni(k,i) = ni_p(i,k,j) + nr(k,i) = nr_p(i,k,j) + enddo + enddo + enddo + + mp3_select: select case(trim(mp_scheme)) + case("mp_thompson_aerosols") + call mpas_pool_get_dimension(state,'index_nc' ,index_nc ) + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) + nc => scalars(index_nc,:,:) + nifa => scalars(index_nifa,:,:) + nwfa => scalars(index_nwfa,:,:) + + call mpas_pool_get_array(diag_physics,'nifa2d',nifa2d) + call mpas_pool_get_array(diag_physics,'nwfa2d',nwfa2d) + do j = jts,jte + do i = its,ite + nifa2d(i) = nifa2d_p(i,j) + nwfa2d(i) = nwfa2d_p(i,j) + enddo + do k = kts, kte + do i = its, ite + nc(k,i) = nc_p(i,k,j) + nifa(k,i) = nifa_p(i,k,j) + nwfa(k,i) = nwfa_p(i,k,j) + enddo + enddo + enddo + + case default + end select mp3_select + + case default + end select mp2_select - do j = jts, jte - do k = kts, kte - do i = its, ite - ni(k,i) = ni_p(i,k,j) - nr(k,i) = nr_p(i,k,j) - rainprod(k,i) = rainprod_p(i,k,j) - evapprod(k,i) = evapprod_p(i,k,j) - enddo - enddo - enddo + case default + end select mp_select + +!end calculation of cloud microphysics tendencies: + mp_tend_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") + call mpas_pool_get_array(tend_physics,'rthmpten',rthmpten) + call mpas_pool_get_array(tend_physics,'rqvmpten',rqvmpten) + call mpas_pool_get_array(tend_physics,'rqcmpten',rqcmpten) + call mpas_pool_get_array(tend_physics,'rqrmpten',rqrmpten) + call mpas_pool_get_array(tend_physics,'rqimpten',rqimpten) + call mpas_pool_get_array(tend_physics,'rqsmpten',rqsmpten) + call mpas_pool_get_array(tend_physics,'rqgmpten',rqgmpten) - case default + do k = kts,kte + do i = its,ite + rthmpten(k,i) = (theta_m(k,i)/(1._RKIND+R_v/R_d*max(0._RKIND,qv(k,i)))-rthmpten(k,i))/dt_dyn + rqvmpten(k,i) = (qv(k,i)-rqvmpten(k,i))/dt_dyn + rqcmpten(k,i) = (qc(k,i)-rqcmpten(k,i))/dt_dyn + rqrmpten(k,i) = (qr(k,i)-rqrmpten(k,i))/dt_dyn + rqimpten(k,i) = (qi(k,i)-rqimpten(k,i))/dt_dyn + rqsmpten(k,i) = (qs(k,i)-rqsmpten(k,i))/dt_dyn + rqgmpten(k,i) = (qg(k,i)-rqgmpten(k,i))/dt_dyn + enddo + enddo - end select microp2_select + mp2_tend_select: select case(trim(mp_scheme)) + case("mp_thompson","mp_thompson_aerosols") + call mpas_pool_get_array(tend_physics,'rnimpten',rnimpten) + call mpas_pool_get_array(tend_physics,'rnrmpten',rnrmpten) + + do k = kts,kte + do i = its,ite + rnimpten(k,i) = (ni(k,i)-rnimpten(k,i))/dt_dyn + rnrmpten(k,i) = (nr(k,i)-rnrmpten(k,i))/dt_dyn + enddo + enddo + + mp3_tend_select: select case(trim(mp_scheme)) + case("mp_thompson_aerosols") + call mpas_pool_get_array(tend_physics,'rncmpten',rncmpten) + call mpas_pool_get_array(tend_physics,'rnifampten',rnifampten) + call mpas_pool_get_array(tend_physics,'rnwfampten',rnwfampten) + + do k = kts,kte + do i = its,ite + rncmpten(k,i) = (nc(k,i)-rncmpten(k,i))/dt_dyn + rnifampten(k,i) = (nifa(k,i)-rnifampten(k,i))/dt_dyn + rnwfampten(k,i) = (nwfa(k,i)-rnwfampten(k,i))/dt_dyn + enddo + enddo + + case default + end select mp3_tend_select + + case default + end select mp2_tend_select case default - - end select microp_select_init + end select mp_tend_select end subroutine microphysics_to_MPAS diff --git a/src/core_atmosphere/physics/mpas_atmphys_packages.F b/src/core_atmosphere/physics/mpas_atmphys_packages.F index 6f4f87dfb7..b9e34d27d2 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_packages.F +++ b/src/core_atmosphere/physics/mpas_atmphys_packages.F @@ -36,7 +36,7 @@ function atmphys_setup_packages(configs,packages,iocontext) result(ierr) character(len=StrKIND),pointer:: config_microp_scheme character(len=StrKIND),pointer:: config_convection_scheme character(len=StrKIND),pointer:: config_pbl_scheme - logical,pointer:: mp_kessler_in,mp_thompson_in,mp_wsm6_in + logical,pointer:: mp_kessler_in,mp_thompson_in,mp_thompson_aers_in,mp_wsm6_in logical,pointer:: cu_grell_freitas_in,cu_kain_fritsch_in,cu_ntiedtke_in logical,pointer:: bl_mynn_in,bl_ysu_in @@ -61,11 +61,15 @@ function atmphys_setup_packages(configs,packages,iocontext) result(ierr) nullify(mp_thompson_in) call mpas_pool_get_package(packages,'mp_thompson_inActive',mp_thompson_in) + nullify(mp_thompson_aers_in) + call mpas_pool_get_package(packages,'mp_thompson_aers_inActive',mp_thompson_aers_in) + nullify(mp_wsm6_in) call mpas_pool_get_package(packages,'mp_wsm6_inActive',mp_wsm6_in) - if(.not.associated(mp_kessler_in) .or. & - .not.associated(mp_thompson_in) .or. & + if(.not.associated(mp_kessler_in ) .or. & + .not.associated(mp_thompson_in ) .or. & + .not.associated(mp_thompson_aers_in) .or. & .not.associated(mp_wsm6_in)) then call mpas_log_write('====================================================================================',messageType=MPAS_LOG_ERR) call mpas_log_write('* Error while setting up packages for cloud microphysics options in atmosphere core.',messageType=MPAS_LOG_ERR) @@ -74,21 +78,24 @@ function atmphys_setup_packages(configs,packages,iocontext) result(ierr) return endif - mp_kessler_in = .false. - mp_thompson_in = .false. - mp_wsm6_in = .false. + mp_kessler_in = .false. + mp_thompson_in = .false. + mp_thompson_aers_in = .false. + mp_wsm6_in = .false. if(config_microp_scheme == 'mp_kessler') then mp_kessler_in = .true. - elseif(config_microp_scheme == 'mp_thompson' .or. & - config_microp_scheme == 'mp_thompson_aerosols') then + elseif(config_microp_scheme == 'mp_thompson') then mp_thompson_in = .true. + elseif(config_microp_scheme == 'mp_thompson_aerosols') then + mp_thompson_aers_in = .true. elseif(config_microp_scheme == 'mp_wsm6') then mp_wsm6_in = .true. endif call mpas_log_write(' mp_kessler_in = $l', logicArgs=(/mp_kessler_in/)) call mpas_log_write(' mp_thompson_in = $l', logicArgs=(/mp_thompson_in/)) + call mpas_log_write(' mp_thompson_aers_in = $l', logicArgs=(/mp_thompson_aers_in/)) call mpas_log_write(' mp_wsm6_in = $l', logicArgs=(/mp_wsm6_in/)) !--- initialization of all packages for parameterizations of convection: diff --git a/src/core_atmosphere/physics/mpas_atmphys_vars.F b/src/core_atmosphere/physics/mpas_atmphys_vars.F index 159bef2fca..6ee24da38e 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_vars.F +++ b/src/core_atmosphere/physics/mpas_atmphys_vars.F @@ -204,6 +204,7 @@ module mpas_atmphys_vars qg_p !graupel mixing ratio [kg/kg] real(kind=RKIND),dimension(:,:,:),allocatable:: & + nc_p, &!cloud water droplet number concentration [#/kg] ni_p, &!cloud ice crystal number concentration [#/kg] nr_p !rain drop number concentration [#/kg] @@ -247,7 +248,7 @@ module mpas_atmphys_vars f_qc, &!parameter set to true to include the cloud water mixing ratio. f_qr, &!parameter set to true to include the rain mixing ratio. f_qi, &!parameter set to true to include the cloud ice mixing ratio. - f_qs, &!parameter set to true to include the snow minxg ratio. + f_qs, &!parameter set to true to include the snow mixing ratio. f_qg, &!parameter set to true to include the graupel mixing ratio. f_qoz !parameter set to true to include the ozone mixing ratio. @@ -271,15 +272,11 @@ module mpas_atmphys_vars graupelncv_p, &! sr_p -!... added for the thompson and wsm6 cloud microphysics: integer:: & has_reqc, &! has_reqi, &! has_reqs - real(kind=RKIND),dimension(:,:),allocatable:: & - ntc_p, &! - muc_p ! real(kind=RKIND),dimension(:,:,:),allocatable:: & rainprod_p, &! evapprod_p, &! @@ -288,6 +285,17 @@ module mpas_atmphys_vars resnow_p, &! refl10cm_p ! +!... for Thompson cloud microphysics parameterization, including aerosol-aware option: + real(kind=RKIND),dimension(:,:),allocatable:: & + ntc_p, &! + muc_p, &! + nifa2d_p, &!surface emission of "ice-friendly" aerosols [#/kg-1/s] + nwfa2d_p !surface emission of "water-friendly" aerosols [#/kg-1/s] + + real(kind=RKIND),dimension(:,:,:),allocatable:: & + nifa_p, &!"ice-friendly" number concentration [#/kg] + nwfa_p !"water-friendly" number concentration [#/kg] + !================================================================================================================= !... variables and arrays related to parameterization of convection: !================================================================================================================= From 797bc7bc19ea90dc0b2c42b303d15818c8ec1232 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Tue, 14 May 2024 10:30:19 -0600 Subject: [PATCH 034/115] * In ./src/core_atmosphere/physics, added the option "mp_thompson_aerosols" to compute the radiative effective radii of cloud liquid water, cloud ice, and snow in modules mpas_atmphys_driver_radiation_lw.F and mpas_atmphys_driver_radiation_sw.F. --- .../physics/mpas_atmphys_driver_radiation_lw.F | 4 ++-- .../physics/mpas_atmphys_driver_radiation_sw.F | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F index 60dbebb3e5..99123ca249 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F @@ -418,7 +418,7 @@ subroutine radiation_lw_from_MPAS(xtime_s,configs,mesh,state,time_lev,diag_physi case("rrtmg_lw") microp_select: select case(microp_scheme) - case("mp_thompson","mp_wsm6") + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") if(config_microp_re) then call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) @@ -690,7 +690,7 @@ subroutine radiation_lw_to_MPAS(configs,diag_physics,tend_physics,its,ite) case("rrtmg_lw") microp_select: select case(microp_scheme) - case("mp_thompson","mp_wsm6") + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") call mpas_pool_get_array(diag_physics,'rre_cloud',rre_cloud) call mpas_pool_get_array(diag_physics,'rre_ice' ,rre_ice ) call mpas_pool_get_array(diag_physics,'rre_snow' ,rre_snow ) diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F index f4b76d8fe8..fc1ec2bf91 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F @@ -433,7 +433,7 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i case("rrtmg_sw") microp_select: select case(microp_scheme) - case("mp_thompson","mp_wsm6") + case("mp_thompson","mp_thompson_aerosols","mp_wsm6") if(config_microp_re) then call mpas_pool_get_array(diag_physics,'re_cloud',re_cloud) call mpas_pool_get_array(diag_physics,'re_ice' ,re_ice ) From e0fca2857c391bc361a0ca29f329df2af6012d6d Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Thu, 16 May 2024 10:21:02 -0600 Subject: [PATCH 035/115] * In ./src/core_atmosphere/physics, cleaned-up mpas_atmphys_todynamics.F. --- .../physics/mpas_atmphys_todynamics.F | 685 +++++++++--------- 1 file changed, 326 insertions(+), 359 deletions(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_todynamics.F b/src/core_atmosphere/physics/mpas_atmphys_todynamics.F index f8a04066c4..fa7955830e 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_todynamics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_todynamics.F @@ -10,6 +10,7 @@ module mpas_atmphys_todynamics use mpas_kind_types use mpas_pool_routines use mpas_dmpar + use mpas_atm_dimensions use mpas_atmphys_constants, only: R_d,R_v,degrad @@ -21,37 +22,26 @@ module mpas_atmphys_todynamics !Interface between the physics parameterizations and the non-hydrostatic dynamical core. !Laura D. Fowler (send comments to laura@ucar.edu). !2013-05-01. -! -! + + ! subroutines in mpas_atmphys_todynamics: ! --------------------------------------- -! physics_get_tend: add and mass-weigh tendencies before being added to dynamics tendencies. -! tend_toEdges : interpolate wind-tendencies from centers to edges of grid-cells. +! physics_get_tend : intermediate subroutine between the dynamical core and calculation of the total +! physics tendencies. +! physics_get_tend_work: add and mass-weigh physics tendencies before being added to dynamics tendencies. +! tend_toEdges : interpolate wind-tendencies from centers to edges of grid-cells. ! ! add-ons and modifications to sourcecode: ! ---------------------------------------- -! * added calculation of the advective tendency of the potential temperature due to horizontal -! and vertical advection, and horizontal mixing (diffusion). -! Laura D. Fowler (birch.mmm.ucar.edu) / 2013-11-19. -! * throughout the sourcecode, replaced all "var_struct" defined arrays by local pointers. -! Laura D. Fowler (laura@ucar.edu) / 2014-04-22. -! * modified sourcecode to use pools. -! Laura D. Fowler (laura@ucar.edu) / 2014-05-15. -! * renamed config_conv_deep_scheme to config_convection_scheme. -! Laura D. Fowler (laura@ucar.edu) / 2014-09-18. -! * renamed "tiedtke" with "cu_tiedtke". -! Laura D. Fowler (laura@ucar.edu) / 2016-03-22. -! * modified the sourcecode to accomodate the packages "cu_kain_fritsch_in" and "cu_ntiedtke_in". -! Laura D. Fowler (laura@ucar.edu) / 2016-03-24. -! * added the option bl_mynn for the calculation of the tendency for the cloud ice number concentration. -! Laura D. Fowler (laura@ucar.edu) / 2016-04-11. -! * in subroutine physics_get_tend_work, added the option cu_ntiedtke in the calculation of rucuten_Edge. -! Laura D. Fowler (laura@ucar.edu) / 2016-10-28. - - ! - ! Abstract interface for routine used to communicate halos of fields - ! in a named group - ! +! * cleaned-up subroutines physics_get_tend and physics_get_tend_work. +! Laura D. Fowler (laura@ucar.edu) / 2018-01-23. +! * removed the option bl_mynn_wrf390. +! Laura D. Fowler (laura@ucar.edu) / 2018-01-24. + +! +! Abstract interface for routine used to communicate halos of fields +! in a named group +! abstract interface subroutine halo_exchange_routine(domain, halo_group, ierr) @@ -69,34 +59,34 @@ end subroutine halo_exchange_routine !================================================================================================================= - subroutine physics_get_tend( block, mesh, state, diag, tend, tend_physics, configs, rk_step, dynamics_substep, & - tend_ru_physics, tend_rtheta_physics, tend_rho_physics, exchange_halo_group ) + subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_step,dynamics_substep, & + tend_ru_physics,tend_rtheta_physics,tend_rho_physics,exchange_halo_group) !================================================================================================================= - - use mpas_atm_dimensions !input variables: type(block_type),intent(in),target:: block type(mpas_pool_type),intent(in):: mesh type(mpas_pool_type),intent(in):: state type(mpas_pool_type),intent(in):: configs - integer, intent(in):: rk_step - integer, intent(in):: dynamics_substep - procedure (halo_exchange_routine) :: exchange_halo_group + integer,intent(in):: rk_step + integer,intent(in):: dynamics_substep + procedure(halo_exchange_routine):: exchange_halo_group !inout variables: type(mpas_pool_type),intent(inout):: diag type(mpas_pool_type),intent(inout):: tend type(mpas_pool_type),intent(inout):: tend_physics - real(kind=RKIND),dimension(:,:) :: tend_ru_physics, tend_rtheta_physics, tend_rho_physics + real(kind=RKIND),intent(inout),dimension(:,:):: tend_ru_physics,tend_rtheta_physics,tend_rho_physics !local variables: - character(len=StrKIND), pointer :: config_pbl_scheme, config_convection_scheme, & - config_radt_lw_scheme, config_radt_sw_scheme + character(len=StrKIND),pointer:: pbl_scheme, & + convection_scheme, & + radt_lw_scheme, & + radt_sw_scheme integer:: i,iCell,k,n - integer,pointer:: index_qv, index_qc, index_qr, index_qi, index_qs, index_qg + integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg integer,pointer:: index_ni integer,pointer:: nCells,nCellsSolve,nEdges,nEdgesSolve @@ -104,6 +94,7 @@ subroutine physics_get_tend( block, mesh, state, diag, tend, tend_physics, confi real(kind=RKIND),dimension(:,:),pointer:: mass_edge ! diag rho_edge real(kind=RKIND),dimension(:,:),pointer:: theta_m ! time level 1 real(kind=RKIND),dimension(:,:,:),pointer:: scalars + real(kind=RKIND),dimension(:,:),pointer:: rthblten,rqvblten,rqcblten, & rqiblten,rqsblten,rublten,rvblten real(kind=RKIND),dimension(:,:),pointer:: rniblten @@ -113,336 +104,313 @@ subroutine physics_get_tend( block, mesh, state, diag, tend, tend_physics, confi real(kind=RKIND),dimension(:,:),pointer:: rthratenlw,rthratensw real(kind=RKIND),dimension(:,:),pointer:: tend_u_phys !nick - real(kind=RKIND),dimension(:,:),pointer :: tend_theta,tend_theta_euler,tend_u real(kind=RKIND),dimension(:,:,:),pointer:: tend_scalars - real(kind=RKIND):: coeff - real(kind=RKIND):: tem real(kind=RKIND),dimension(:,:),pointer:: rublten_Edge,rucuten_Edge - real(kind=RKIND),dimension(:,:),allocatable:: theta,tend_th - + real(kind=RKIND),dimension(:,:),allocatable:: tend_th !================================================================================================================= - call mpas_pool_get_dimension(mesh, 'nCells', nCells) - call mpas_pool_get_dimension(mesh, 'nCellsSolve', nCellsSolve) - call mpas_pool_get_dimension(mesh, 'nEdges', nEdges) - call mpas_pool_get_dimension(mesh, 'nEdgesSolve', nEdgesSolve) - - call mpas_pool_get_config(configs, 'config_pbl_scheme', config_pbl_scheme) - call mpas_pool_get_config(configs, 'config_convection_scheme', config_convection_scheme) - call mpas_pool_get_config(configs, 'config_radt_lw_scheme', config_radt_lw_scheme) - call mpas_pool_get_config(configs, 'config_radt_sw_scheme', config_radt_sw_scheme) - - call mpas_pool_get_array(state, 'theta_m', theta_m, 1) - call mpas_pool_get_array(state, 'scalars', scalars, 1) - call mpas_pool_get_array(state, 'rho_zz', mass, 2) - call mpas_pool_get_array(diag , 'rho_edge', mass_edge) - - call mpas_pool_get_array(diag , 'tend_u_phys', tend_u_phys) !nick - - call mpas_pool_get_dimension(state, 'index_qv', index_qv) - call mpas_pool_get_dimension(state, 'index_qc', index_qc) - call mpas_pool_get_dimension(state, 'index_qr', index_qr) - call mpas_pool_get_dimension(state, 'index_qi', index_qi) - call mpas_pool_get_dimension(state, 'index_qs', index_qs) - call mpas_pool_get_dimension(state, 'index_qg', index_qg) - call mpas_pool_get_dimension(state, 'index_ni', index_ni) - - call mpas_pool_get_array(tend_physics, 'rublten', rublten) - call mpas_pool_get_array(tend_physics, 'rvblten', rvblten) - call mpas_pool_get_array(tend_physics, 'rublten_Edge', rublten_Edge) - call mpas_pool_get_array(tend_physics, 'rthblten', rthblten) - call mpas_pool_get_array(tend_physics, 'rqvblten', rqvblten) - call mpas_pool_get_array(tend_physics, 'rqcblten', rqcblten) - call mpas_pool_get_array(tend_physics, 'rqiblten', rqiblten) - call mpas_pool_get_array(tend_physics, 'rqsblten', rqsblten) - call mpas_pool_get_array(tend_physics, 'rniblten', rniblten) - - call mpas_pool_get_array(tend_physics, 'rucuten', rucuten) - call mpas_pool_get_array(tend_physics, 'rvcuten', rvcuten) - call mpas_pool_get_array(tend_physics, 'rucuten_Edge', rucuten_Edge) - call mpas_pool_get_array(tend_physics, 'rthcuten', rthcuten) - call mpas_pool_get_array(tend_physics, 'rqvcuten', rqvcuten) - call mpas_pool_get_array(tend_physics, 'rqccuten', rqccuten) - call mpas_pool_get_array(tend_physics, 'rqrcuten', rqrcuten) - call mpas_pool_get_array(tend_physics, 'rqicuten', rqicuten) - call mpas_pool_get_array(tend_physics, 'rqscuten', rqscuten) - - call mpas_pool_get_array(tend_physics, 'rthratenlw', rthratenlw) - call mpas_pool_get_array(tend_physics, 'rthratensw', rthratensw) - - call mpas_pool_get_array(tend,'u' , tend_u ) - call mpas_pool_get_array(tend,'theta_m' , tend_theta ) - call mpas_pool_get_array(tend,'theta_euler' ,tend_theta_euler) - call mpas_pool_get_array(tend,'scalars_tend',tend_scalars ) + + call mpas_pool_get_dimension(mesh,'nCells',nCells) + call mpas_pool_get_dimension(mesh,'nEdges',nEdges) + call mpas_pool_get_dimension(mesh,'nCellsSolve',nCellsSolve) + call mpas_pool_get_dimension(mesh,'nEdgesSolve',nEdgesSolve) + + call mpas_pool_get_config(configs,'config_pbl_scheme' ,pbl_scheme ) + call mpas_pool_get_config(configs,'config_convection_scheme',convection_scheme) + call mpas_pool_get_config(configs,'config_radt_lw_scheme' ,radt_lw_scheme ) + call mpas_pool_get_config(configs,'config_radt_sw_scheme' ,radt_sw_scheme ) + + call mpas_pool_get_array(state,'theta_m' ,theta_m,1) + call mpas_pool_get_array(state,'scalars' ,scalars,1) + call mpas_pool_get_array(state,'rho_zz' ,mass,2 ) + call mpas_pool_get_array(diag ,'rho_edge',mass_edge) + call mpas_pool_get_array(diag ,'tend_u_phys',tend_u_phys) + + call mpas_pool_get_dimension(state,'index_qv',index_qv) + call mpas_pool_get_dimension(state,'index_qc',index_qc) + call mpas_pool_get_dimension(state,'index_qr',index_qr) + call mpas_pool_get_dimension(state,'index_qi',index_qi) + call mpas_pool_get_dimension(state,'index_qs',index_qs) + call mpas_pool_get_dimension(state,'index_qg',index_qg) + call mpas_pool_get_dimension(state,'index_ni',index_ni) + + call mpas_pool_get_array(tend_physics,'rublten',rublten) + call mpas_pool_get_array(tend_physics,'rvblten',rvblten) + call mpas_pool_get_array(tend_physics,'rthblten',rthblten) + call mpas_pool_get_array(tend_physics,'rqvblten',rqvblten) + call mpas_pool_get_array(tend_physics,'rqcblten',rqcblten) + call mpas_pool_get_array(tend_physics,'rqiblten',rqiblten) + call mpas_pool_get_array(tend_physics,'rqsblten',rqsblten) + call mpas_pool_get_array(tend_physics,'rniblten',rniblten) + call mpas_pool_get_array(tend_physics,'rublten_Edge',rublten_Edge) + + call mpas_pool_get_array(tend_physics,'rucuten',rucuten) + call mpas_pool_get_array(tend_physics,'rvcuten',rvcuten) + call mpas_pool_get_array(tend_physics,'rthcuten',rthcuten) + call mpas_pool_get_array(tend_physics,'rqvcuten',rqvcuten) + call mpas_pool_get_array(tend_physics,'rqccuten',rqccuten) + call mpas_pool_get_array(tend_physics,'rqrcuten',rqrcuten) + call mpas_pool_get_array(tend_physics,'rqicuten',rqicuten) + call mpas_pool_get_array(tend_physics,'rqscuten',rqscuten) + call mpas_pool_get_array(tend_physics,'rucuten_Edge',rucuten_Edge) + + call mpas_pool_get_array(tend_physics,'rthratenlw',rthratenlw) + call mpas_pool_get_array(tend_physics,'rthratensw',rthratensw) + + call mpas_pool_get_array(tend,'scalars_tend',tend_scalars) + !initialize the tendency for the potential temperature and all scalars due to PBL, convection, !and longwave and shortwave radiation: -! allocate(theta(nVertLevels,nCellsSolve) ) allocate(tend_th(nVertLevels,nCellsSolve)) tend_th = 0._RKIND - tend_scalars(:,:,:) = 0._RKIND - - tend_ru_physics(:,:) = 0._RKIND + tend_scalars(:,:,:) = 0._RKIND + tend_ru_physics(:,:) = 0._RKIND tend_rtheta_physics(:,:) = 0._RKIND - tend_rho_physics(:,:) = 0._RKIND ! NB: rho tendency is not currently supplied by physics, but this - ! field may be later filled with IAU or other tendencies - - ! - ! In case some variables are not allocated due to their associated packages, - ! we need to make their pointers associated here to avoid triggering run-time - ! checks when calling physics_get_tend_work - ! - if (.not. associated(rublten)) allocate(rublten(0,0) ) - if (.not. associated(rvblten)) allocate(rvblten(0,0) ) - if (.not. associated(rthblten)) allocate(rthblten(0,0)) - if (.not. associated(rqvblten)) allocate(rqvblten(0,0)) - if (.not. associated(rqcblten)) allocate(rqcblten(0,0)) - if (.not. associated(rqiblten)) allocate(rqiblten(0,0)) - if (.not. associated(rqsblten)) allocate(rqsblten(0,0)) - if (.not. associated(rniblten)) allocate(rniblten(0,0)) - if (.not. associated(rucuten)) allocate(rucuten(0,0) ) - if (.not. associated(rvcuten)) allocate(rvcuten(0,0) ) - if (.not. associated(rthcuten)) allocate(rthcuten(0,0)) - if (.not. associated(rqvcuten)) allocate(rqvcuten(0,0)) - if (.not. associated(rqccuten)) allocate(rqccuten(0,0)) - if (.not. associated(rqicuten)) allocate(rqicuten(0,0)) - if (.not. associated(rqrcuten)) allocate(rqrcuten(0,0)) - if (.not. associated(rqscuten)) allocate(rqscuten(0,0)) - - call physics_get_tend_work(block, mesh, nCells, nEdges, nCellsSolve, nEdgesSolve, & - rk_step, dynamics_substep, & - config_pbl_scheme, config_convection_scheme, config_radt_lw_scheme, config_radt_sw_scheme, & - index_qv, index_qc, index_qr, index_qi, index_qs, index_ni, & - rublten, rvblten, mass_edge, rublten_Edge, & - tend_ru_physics, & - rucuten, rvcuten, rucuten_Edge, & - tend_th, tend_scalars, mass, rthblten, rqvblten, rqcblten, rqiblten, rqsblten, rniblten, & - rthcuten, rqvcuten, rqccuten, rqrcuten, rqicuten, rqscuten, & - rthratenlw, rthratensw, & - tend_u_phys, & - theta_m, scalars, & - tend_rtheta_physics, & - tend_theta_euler, & - exchange_halo_group & - ) - - ! - ! Clean up any pointers that were allocated with zero size before the call to - ! physics_get_tend_work - ! - if (size(rublten) == 0) deallocate(rublten ) - if (size(rvblten) == 0) deallocate(rvblten ) - if (size(rthblten) == 0) deallocate(rthblten) - if (size(rqvblten) == 0) deallocate(rqvblten) - if (size(rqcblten) == 0) deallocate(rqcblten) - if (size(rqiblten) == 0) deallocate(rqiblten) - if (size(rqsblten) == 0) deallocate(rqsblten) - if (size(rniblten) == 0) deallocate(rniblten) - if (size(rucuten) == 0) deallocate(rucuten ) - if (size(rvcuten) == 0) deallocate(rvcuten ) - if (size(rthcuten) == 0) deallocate(rthcuten) - if (size(rqvcuten) == 0) deallocate(rqvcuten) - if (size(rqccuten) == 0) deallocate(rqccuten) - if (size(rqicuten) == 0) deallocate(rqicuten) - if (size(rqrcuten) == 0) deallocate(rqrcuten) - if (size(rqscuten) == 0) deallocate(rqscuten) - -! deallocate(theta) - deallocate(tend_th) + tend_rho_physics(:,:) = 0._RKIND + + +!in case some variables are not allocated due to their associated packages. We need to make their pointers +!associated here to avoid triggering run-time. checks when calling physics_get_tend_work: + if(.not. associated(rucuten) ) allocate(rucuten(0,0) ) + if(.not. associated(rvcuten) ) allocate(rvcuten(0,0) ) + if(.not. associated(rthcuten)) allocate(rthcuten(0,0)) + if(.not. associated(rqvcuten)) allocate(rqvcuten(0,0)) + if(.not. associated(rqccuten)) allocate(rqccuten(0,0)) + if(.not. associated(rqicuten)) allocate(rqicuten(0,0)) + if(.not. associated(rqrcuten)) allocate(rqrcuten(0,0)) + if(.not. associated(rqscuten)) allocate(rqscuten(0,0)) + + if(.not. associated(rublten) ) allocate(rublten(0,0) ) + if(.not. associated(rvblten) ) allocate(rvblten(0,0) ) + if(.not. associated(rthblten)) allocate(rthblten(0,0)) + if(.not. associated(rqvblten)) allocate(rqvblten(0,0)) + if(.not. associated(rqcblten)) allocate(rqcblten(0,0)) + if(.not. associated(rqiblten)) allocate(rqiblten(0,0)) + if(.not. associated(rqsblten)) allocate(rqsblten(0,0)) + if(.not. associated(rniblten)) allocate(rniblten(0,0)) + + call physics_get_tend_work( & + block,mesh,nCells,nEdges,nCellsSolve,nEdgesSolve,rk_step,dynamics_substep, & + pbl_scheme,convection_scheme,radt_lw_scheme,radt_sw_scheme, & + index_qv,index_qc,index_qr,index_qi,index_qs, & + index_ni, & + mass,mass_edge,theta_m,scalars, & + rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten, & + rqsblten, & + rniblten, & + rucuten,rvcuten,rthcuten,rqvcuten,rqccuten,rqrcuten,rqicuten,rqscuten, & + rthratenlw,rthratensw,rublten_Edge,rucuten_Edge, & + tend_th,tend_rtheta_physics,tend_scalars,tend_ru_physics,tend_u_phys, & + exchange_halo_group) + +!clean up any pointers that were allocated with zero size before the call to physics_get_tend_work: + if(size(rucuten) == 0 ) deallocate(rucuten ) + if(size(rvcuten) == 0 ) deallocate(rvcuten ) + if(size(rthcuten) == 0) deallocate(rthcuten) + if(size(rqvcuten) == 0) deallocate(rqvcuten) + if(size(rqccuten) == 0) deallocate(rqccuten) + if(size(rqicuten) == 0) deallocate(rqicuten) + if(size(rqrcuten) == 0) deallocate(rqrcuten) + if(size(rqscuten) == 0) deallocate(rqscuten) + + if(size(rublten) == 0 ) deallocate(rublten ) + if(size(rvblten) == 0 ) deallocate(rvblten ) + if(size(rthblten) == 0) deallocate(rthblten) + if(size(rqvblten) == 0) deallocate(rqvblten) + if(size(rqcblten) == 0) deallocate(rqcblten) + if(size(rqiblten) == 0) deallocate(rqiblten) + if(size(rqsblten) == 0) deallocate(rqsblten) + if(size(rniblten) == 0) deallocate(rniblten) -! if(rk_step .eq. 3) then -! call mpas_log_write('') -! call mpas_log_write('--- enter subroutine physics_get_tend:') -! call mpas_log_write('max rthblten = $r',realArgs=(/maxval(rthblten(:,1:nCellsSolve))/)) -! call mpas_log_write('min rthblten = $r',realArgs=(/minval(rthblten(:,1:nCellsSolve))/)) -! call mpas_log_write('max rthcuten = $r',realArgs=(/maxval(rthcuten(:,1:nCellsSolve))/)) -! call mpas_log_write('min rthcuten = $r',realArgs=(/minval(rthcuten(:,1:nCellsSolve))/)) -! call mpas_log_write('max rthratenlw = $r',realArgs=(/maxval(rthratenlw(:,1:nCellsSolve))/)) -! call mpas_log_write('min rthratenlw = $r',realArgs=(/minval(rthratenlw(:,1:nCellsSolve))/)) -! call mpas_log_write('max rthratensw = $r',realArgs=(/maxval(rthratensw(:,1:nCellsSolve))/)) -! call mpas_log_write('min rthratensw = $r',realArgs=(/minval(rthratensw(:,1:nCellsSolve))/)) -! call mpas_log_write('--- end subroutine physics_get_tend') -! call mpas_log_write('') -! endif + deallocate(tend_th) end subroutine physics_get_tend - !================================================================================================== - subroutine physics_get_tend_work(block, mesh, nCells, nEdges, nCellsSolve, nEdgesSolve, & - rk_step, dynamics_substep, & - config_pbl_scheme, config_convection_scheme, config_radt_lw_scheme, config_radt_sw_scheme, & - index_qv, index_qc, index_qr, index_qi, index_qs, index_ni, & - rublten, rvblten, mass_edge, rublten_Edge, tend_u, & - rucuten, rvcuten, rucuten_Edge, & - tend_th, tend_scalars, mass, rthblten, rqvblten, rqcblten, rqiblten, rqsblten, rniblten, & - rthcuten, rqvcuten, rqccuten, rqrcuten, rqicuten, rqscuten, & - rthratenlw, rthratensw, & - tend_u_phys, & - theta_m, scalars, tend_theta, tend_theta_euler, & - exchange_halo_group & - ) -!================================================================================================== - - use mpas_atm_dimensions - - implicit none - - type(block_type), intent(in) :: block - type(mpas_pool_type), intent(in) :: mesh - integer, intent(in) :: nCells, nEdges, nCellsSolve, nEdgesSolve - integer, intent(in) :: rk_step, dynamics_substep - character(len=StrKIND), intent(in) :: config_pbl_scheme - character(len=StrKIND), intent(in) :: config_convection_scheme - character(len=StrKIND), intent(in) :: config_radt_lw_scheme - character(len=StrKIND), intent(in) :: config_radt_sw_scheme - integer, intent(in) :: index_qv, index_qc, index_qr, index_qi, index_qs, index_ni - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rublten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rvblten - real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(in) :: mass_edge - real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: rublten_Edge - real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: tend_u - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rucuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rvcuten - real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: rucuten_Edge - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(inout) :: tend_th - real (kind=RKIND), dimension(num_scalars,nVertLevels,nCells+1), intent(inout) :: tend_scalars - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: mass - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rthblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqvblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqcblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqiblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqsblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rniblten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rthcuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqvcuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqccuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqrcuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqicuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rqscuten - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rthratenlw - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: rthratensw - real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: tend_u_phys - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: theta_m - real (kind=RKIND), dimension(num_scalars,nVertLevels,nCells+1), intent(in) :: scalars - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(inout) :: tend_theta - real (kind=RKIND), dimension(nVertLevels,nCells+1), intent(in) :: tend_theta_euler - procedure (halo_exchange_routine) :: exchange_halo_group - - integer :: i, k - real (kind=RKIND) :: coeff - - !add coupled tendencies due to PBL processes: - if (config_pbl_scheme .ne. 'off') then - if (rk_step == 1 .and. dynamics_substep == 1) then - call exchange_halo_group(block % domain, 'physics:blten') - call tend_toEdges(block,mesh,rublten,rvblten,rublten_Edge) - - !MGD for PV budget? should a similar line be in the cumulus section below? - tend_u_phys(1:nVertLevels,1:nEdges) = rublten_Edge(1:nVertLevels,1:nEdges) - end if - - do i = 1, nEdgesSolve - do k = 1, nVertLevels - tend_u(k,i)=tend_u(k,i)+rublten_Edge(k,i)*mass_edge(k,i) - enddo - enddo - - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_th(k,i) = tend_th(k,i) + rthblten(k,i)*mass(k,i) - tend_scalars(index_qv,k,i) = tend_scalars(index_qv,k,i) + rqvblten(k,i)*mass(k,i) - tend_scalars(index_qc,k,i) = tend_scalars(index_qc,k,i) + rqcblten(k,i)*mass(k,i) - tend_scalars(index_qi,k,i) = tend_scalars(index_qi,k,i) + rqiblten(k,i)*mass(k,i) - enddo - enddo - - pbl_select: select case (trim(config_pbl_scheme)) - - case("bl_mynn") - - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_scalars(index_qs,k,i) = tend_scalars(index_qs,k,i) + rqsblten(k,i)*mass(k,i) - tend_scalars(index_ni,k,i) = tend_scalars(index_ni,k,i) + rniblten(k,i)*mass(k,i) - enddo - enddo - - case default - - end select pbl_select - endif - - !add coupled tendencies due to convection: - if (config_convection_scheme .ne. 'off') then - - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_th(k,i) = tend_th(k,i) + rthcuten(k,i)*mass(k,i) - tend_scalars(index_qv,k,i) = tend_scalars(index_qv,k,i) + rqvcuten(k,i)*mass(k,i) - tend_scalars(index_qc,k,i) = tend_scalars(index_qc,k,i) + rqccuten(k,i)*mass(k,i) - tend_scalars(index_qi,k,i) = tend_scalars(index_qi,k,i) + rqicuten(k,i)*mass(k,i) - enddo - enddo - - convection_select: select case(config_convection_scheme) - - case('cu_kain_fritsch') - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_scalars(index_qr,k,i) = tend_scalars(index_qr,k,i) + rqrcuten(k,i)*mass(k,i) - tend_scalars(index_qs,k,i) = tend_scalars(index_qs,k,i) + rqscuten(k,i)*mass(k,i) - enddo - enddo - - case('cu_tiedtke','cu_ntiedtke') - if (rk_step == 1 .and. dynamics_substep == 1) then - call exchange_halo_group(block % domain, 'physics:cuten') - call tend_toEdges(block,mesh,rucuten,rvcuten,rucuten_Edge) - - tend_u_phys(1:nVertLevels,1:nEdges) = tend_u_phys(1:nVertLevels,1:nEdges) & - + rucuten_Edge(1:nVertLevels,1:nEdges) - end if - do i = 1, nEdgesSolve - do k = 1, nVertLevels - tend_u(k,i)=tend_u(k,i)+rucuten_Edge(k,i)*mass_edge(k,i) - enddo - enddo - - case default - end select convection_select - endif - - !add coupled tendencies due to longwave radiation: - if (config_radt_lw_scheme .ne. 'off') then - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_th(k,i) = tend_th(k,i) + rthratenlw(k,i)*mass(k,i) - enddo - enddo - endif - - !add coupled tendencies due to shortwave radiation: - if (config_radt_sw_scheme .ne. 'off') then - do i = 1, nCellsSolve - do k = 1, nVertLevels - tend_th(k,i) = tend_th(k,i) + rthratensw(k,i)*mass(k,i) - enddo - enddo - endif - - !if non-hydrostatic core, convert the tendency for the potential temperature to a - !tendency for the modified potential temperature: +!================================================================================================================= + subroutine physics_get_tend_work( & + block,mesh,nCells,nEdges,nCellsSolve,nEdgesSolve,rk_step,dynamics_substep, & + pbl_scheme,convection_scheme,radt_lw_scheme,radt_sw_scheme, & + index_qv,index_qc,index_qr,index_qi,index_qs, & + index_ni, & + mass,mass_edge,theta_m,scalars, & + rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten,rqsblten, & + rniblten, & + rucuten,rvcuten,rthcuten,rqvcuten,rqccuten,rqrcuten,rqicuten,rqscuten, & + rthratenlw,rthratensw,rublten_Edge,rucuten_Edge, & + tend_th,tend_theta,tend_scalars,tend_u,tend_u_phys, & + exchange_halo_group) +!================================================================================================================= + +!input arguments: + procedure(halo_exchange_routine):: exchange_halo_group + + type(block_type),intent(in) :: block + type(mpas_pool_type),intent(in):: mesh + + character(len=StrKIND),intent(in):: pbl_scheme + character(len=StrKIND),intent(in):: convection_scheme + character(len=StrKIND),intent(in):: radt_lw_scheme + character(len=StrKIND),intent(in):: radt_sw_scheme + + integer,intent(in):: nCells,nEdges,nCellsSolve,nEdgesSolve + integer,intent(in):: rk_step,dynamics_substep + integer,intent(in):: index_qv,index_qc,index_qr,index_qi,index_qs + integer,intent(in):: index_ni + + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: mass + real(kind=RKIND),intent(in),dimension(nVertLevels,nEdges+1):: mass_edge + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: theta_m + real(kind=RKIND),intent(in),dimension(num_scalars,nVertLevels,nCells+1):: scalars + + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rublten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rvblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rthblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqvblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqcblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqiblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqsblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rniblten + + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rucuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rvcuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rthcuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqvcuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqccuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqrcuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqicuten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqscuten + + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rthratenlw + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rthratensw + +!inout arguments: + real(kind=RKIND),intent(inout),dimension(nVertLevels,nEdges+1):: rublten_Edge + real(kind=RKIND),intent(inout),dimension(nVertLevels,nEdges+1):: rucuten_Edge + real(kind=RKIND),intent(inout),dimension(nVertLevels,nEdges+1):: tend_u + real(kind=RKIND),intent(inout),dimension(nVertLevels,nEdges+1):: tend_u_phys + + real(kind=RKIND),intent(inout),dimension(nVertLevels,nCells+1):: tend_th + real(kind=RKIND),intent(inout),dimension(nVertLevels,nCells+1):: tend_theta + + real(kind=RKIND),intent(inout),dimension(num_scalars,nVertLevels,nCells+1):: tend_scalars + +!local variables: + integer:: i,k + real(kind=RKIND):: coeff + +!----------------------------------------------------------------------------------------------------------------- + +!add coupled tendencies due to PBL processes: + if(pbl_scheme .ne. 'off') then + if(rk_step == 1 .and. dynamics_substep == 1) then + call exchange_halo_group(block%domain,'physics:blten') + call tend_toEdges(block,mesh,rublten,rvblten,rublten_Edge) + + tend_u_phys(1:nVertLevels,1:nEdges) = rublten_Edge(1:nVertLevels,1:nEdges) + end if + + do i = 1, nEdgesSolve + do k = 1, nVertLevels + tend_u(k,i)=tend_u(k,i)+rublten_Edge(k,i)*mass_edge(k,i) + enddo + enddo + + do i = 1, nCellsSolve + do k = 1, nVertLevels + tend_th(k,i) = tend_th(k,i) + rthblten(k,i)*mass(k,i) + tend_scalars(index_qv,k,i) = tend_scalars(index_qv,k,i) + rqvblten(k,i)*mass(k,i) + tend_scalars(index_qc,k,i) = tend_scalars(index_qc,k,i) + rqcblten(k,i)*mass(k,i) + tend_scalars(index_qi,k,i) = tend_scalars(index_qi,k,i) + rqiblten(k,i)*mass(k,i) + enddo + enddo + + pbl_select: select case(trim(pbl_scheme)) + case('bl_mynn') + do i = 1, nCellsSolve + do k = 1, nVertLevels + tend_scalars(index_qs,k,i) = tend_scalars(index_qs,k,i) + rqsblten(k,i)*mass(k,i) + tend_scalars(index_ni,k,i) = tend_scalars(index_ni,k,i) + rniblten(k,i)*mass(k,i) + enddo + enddo + + case default + end select pbl_select + endif + + +!add coupled tendencies due to convection: + if(convection_scheme .ne. 'off') then do i = 1, nCellsSolve do k = 1, nVertLevels - coeff = (1. + R_v/R_d * scalars(index_qv,k,i)) - tend_th(k,i) = coeff * tend_th(k,i) + R_v/R_d * theta_m(k,i) * tend_scalars(index_qv,k,i) / coeff - tend_theta(k,i) = tend_theta(k,i) + tend_th(k,i) + tend_th(k,i) = tend_th(k,i) + rthcuten(k,i)*mass(k,i) + tend_scalars(index_qv,k,i) = tend_scalars(index_qv,k,i) + rqvcuten(k,i)*mass(k,i) + tend_scalars(index_qc,k,i) = tend_scalars(index_qc,k,i) + rqccuten(k,i)*mass(k,i) + tend_scalars(index_qi,k,i) = tend_scalars(index_qi,k,i) + rqicuten(k,i)*mass(k,i) enddo enddo + cu_select: select case(trim(convection_scheme)) + case('cu_kain_fritsch') + do i = 1, nCellsSolve + do k = 1, nVertLevels + tend_scalars(index_qr,k,i) = tend_scalars(index_qr,k,i) + rqrcuten(k,i)*mass(k,i) + tend_scalars(index_qs,k,i) = tend_scalars(index_qs,k,i) + rqscuten(k,i)*mass(k,i) + enddo + enddo + + case('cu_tiedtke','cu_ntiedtke') + if(rk_step == 1 .and. dynamics_substep == 1) then + call exchange_halo_group(block%domain,'physics:cuten') + call tend_toEdges(block,mesh,rucuten,rvcuten,rucuten_Edge) + + tend_u_phys(1:nVertLevels,1:nEdges) = tend_u_phys(1:nVertLevels,1:nEdges) & + + rucuten_Edge(1:nVertLevels,1:nEdges) + endif + do i = 1, nEdgesSolve + do k = 1, nVertLevels + tend_u(k,i)=tend_u(k,i)+rucuten_Edge(k,i)*mass_edge(k,i) + enddo + enddo + + case default + end select cu_select + endif + + +!add coupled tendencies due to longwave radiation: + if(radt_lw_scheme .ne. 'off') then + do i = 1, nCellsSolve + do k = 1, nVertLevels + tend_th(k,i) = tend_th(k,i) + rthratenlw(k,i)*mass(k,i) + enddo + enddo + endif + + +!add coupled tendencies due to shortwave radiation: + if(radt_sw_scheme .ne. 'off') then + do i = 1, nCellsSolve + do k = 1, nVertLevels + tend_th(k,i) = tend_th(k,i) + rthratensw(k,i)*mass(k,i) + enddo + enddo + endif + + +!convert the tendency for the potential temperature to tendency for the modified potential temperature: + do i = 1, nCellsSolve + do k = 1, nVertLevels + coeff = (1. + R_v/R_d * scalars(index_qv,k,i)) + tend_th(k,i) = coeff * tend_th(k,i) + R_v/R_d * theta_m(k,i) * tend_scalars(index_qv,k,i) / coeff + tend_theta(k,i) = tend_theta(k,i) + tend_th(k,i) + enddo + enddo + + end subroutine physics_get_tend_work !================================================================================================================= @@ -465,20 +433,19 @@ subroutine tend_toEdges(block,mesh,Ux_tend,Uy_tend,U_tend) integer,pointer:: nCells,nCellsSolve,nEdges integer,dimension(:,:),pointer:: cellsOnEdge - real(kind=RKIND), dimension(:,:), pointer :: east, north, edgeNormalVectors - + real(kind=RKIND),dimension(:,:),pointer:: east,north,edgeNormalVectors !----------------------------------------------------------------------------------------------------------------- - call mpas_pool_get_dimension(mesh, 'nCells', nCells) - call mpas_pool_get_dimension(mesh, 'nCellsSolve', nCellsSolve) - call mpas_pool_get_dimension(mesh, 'nEdges', nEdges) + call mpas_pool_get_dimension(mesh,'nCells',nCells) + call mpas_pool_get_dimension(mesh,'nCellsSolve',nCellsSolve) + call mpas_pool_get_dimension(mesh,'nEdges',nEdges) - call mpas_pool_get_array(mesh, 'east', east) - call mpas_pool_get_array(mesh, 'north', north) - call mpas_pool_get_array(mesh, 'edgeNormalVectors', edgeNormalVectors) + call mpas_pool_get_array(mesh,'east',east) + call mpas_pool_get_array(mesh,'north',north) + call mpas_pool_get_array(mesh,'edgeNormalVectors',edgeNormalVectors) - call mpas_pool_get_array(mesh, 'cellsOnEdge', cellsOnEdge) + call mpas_pool_get_array(mesh,'cellsOnEdge',cellsOnEdge) do iEdge = 1, nEdges cell1 = cellsOnEdge(1,iEdge) @@ -487,14 +454,14 @@ subroutine tend_toEdges(block,mesh,Ux_tend,Uy_tend,U_tend) U_tend(:,iEdge) = Ux_tend(:,cell1) * 0.5 * (edgeNormalVectors(1,iEdge) * east(1,cell1) & + edgeNormalVectors(2,iEdge) * east(2,cell1) & + edgeNormalVectors(3,iEdge) * east(3,cell1)) & - + Uy_tend(:,cell1) * 0.5 * (edgeNormalVectors(1,iEdge) * north(1,cell1) & - + edgeNormalVectors(2,iEdge) * north(2,cell1) & - + edgeNormalVectors(3,iEdge) * north(3,cell1)) & + + Uy_tend(:,cell1) * 0.5 * (edgeNormalVectors(1,iEdge) * north(1,cell1) & + + edgeNormalVectors(2,iEdge) * north(2,cell1) & + + edgeNormalVectors(3,iEdge) * north(3,cell1)) & + Ux_tend(:,cell2) * 0.5 * (edgeNormalVectors(1,iEdge) * east(1,cell2) & + edgeNormalVectors(2,iEdge) * east(2,cell2) & + edgeNormalVectors(3,iEdge) * east(3,cell2)) & - + Uy_tend(:,cell2) * 0.5 * (edgeNormalVectors(1,iEdge) * north(1,cell2) & - + edgeNormalVectors(2,iEdge) * north(2,cell2) & + + Uy_tend(:,cell2) * 0.5 * (edgeNormalVectors(1,iEdge) * north(1,cell2) & + + edgeNormalVectors(2,iEdge) * north(2,cell2) & + edgeNormalVectors(3,iEdge) * north(3,cell2)) end do From 47a10c3fce6d1fe6e691cec3eba406b0b8458e61 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Sat, 18 May 2024 11:27:15 -0600 Subject: [PATCH 036/115] * In ./src/core_atmosphere/physics, added the PBL and free-tropospheric mixing of the cloud liquid water number concentration, and water-friendly and ice-friendly Thompson_aerosols when the option mp_thompson_aerosols is set to true. --- src/core_atmosphere/Registry.xml | 27 +- .../physics/mpas_atmphys_driver_pbl.F | 345 ++++++++++-------- .../physics/mpas_atmphys_init.F | 21 +- .../physics/mpas_atmphys_interface.F | 65 +++- .../physics/mpas_atmphys_todynamics.F | 52 ++- .../physics/mpas_atmphys_vars.F | 5 +- 6 files changed, 315 insertions(+), 200 deletions(-) diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index 2630d41605..f7f78468dc 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -809,7 +809,10 @@ + + + @@ -1566,15 +1569,15 @@ + packages="bl_mynn_in;mp_thompson_aers_in"/> + packages="bl_mynn_in;mp_thompson_aers_in"/> + packages="bl_mynn_in;mp_thompson_aers_in"/> #endif @@ -1908,15 +1911,15 @@ + packages="bl_mynn_in;mp_thompson_aers_in"/> + packages="bl_mynn_in;mp_thompson_aers_in"/> + packages="bl_mynn_in;mp_thompson_aers_in"/> #endif @@ -3342,10 +3345,22 @@ description="tendency of snow mixing ratio due to pbl processes" packages="bl_mynn_in"/> + + + + + + diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F b/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F index ead98e82fd..72a411aeba 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_pbl.F @@ -127,60 +127,61 @@ subroutine allocate_pbl(configs) case("bl_ysu") !from surface-layer model: - if(.not.allocated(br_p) ) allocate(br_p(ims:ime,jms:jme) ) - if(.not.allocated(ctopo_p) ) allocate(ctopo_p(ims:ime,jms:jme) ) - if(.not.allocated(ctopo2_p) ) allocate(ctopo2_p(ims:ime,jms:jme) ) - if(.not.allocated(delta_p) ) allocate(delta_p(ims:ime,jms:jme) ) - if(.not.allocated(psih_p) ) allocate(psih_p(ims:ime,jms:jme) ) - if(.not.allocated(psim_p) ) allocate(psim_p(ims:ime,jms:jme) ) - if(.not.allocated(u10_p) ) allocate(u10_p(ims:ime,jms:jme) ) - if(.not.allocated(v10_p) ) allocate(v10_p(ims:ime,jms:jme) ) - if(.not.allocated(exch_p) ) allocate(exch_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(wstar_p) ) allocate(wstar_p(ims:ime,jms:jme) ) + if(.not.allocated(br_p) ) allocate(br_p(ims:ime,jms:jme) ) + if(.not.allocated(ctopo_p) ) allocate(ctopo_p(ims:ime,jms:jme) ) + if(.not.allocated(ctopo2_p)) allocate(ctopo2_p(ims:ime,jms:jme) ) + if(.not.allocated(delta_p) ) allocate(delta_p(ims:ime,jms:jme) ) + if(.not.allocated(psih_p) ) allocate(psih_p(ims:ime,jms:jme) ) + if(.not.allocated(psim_p) ) allocate(psim_p(ims:ime,jms:jme) ) + if(.not.allocated(u10_p) ) allocate(u10_p(ims:ime,jms:jme) ) + if(.not.allocated(v10_p) ) allocate(v10_p(ims:ime,jms:jme) ) + if(.not.allocated(exch_p) ) allocate(exch_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(wstar_p) ) allocate(wstar_p(ims:ime,jms:jme) ) case("bl_mynn") - if(.not.allocated(kbl_plume_p) ) allocate(kbl_plume_p(ims:ime,jms:jme) ) - - if(.not.allocated(dx_p) ) allocate(dx_p(ims:ime,jms:jme) ) - if(.not.allocated(ch_p) ) allocate(ch_p(ims:ime,jms:jme) ) - if(.not.allocated(qsfc_p) ) allocate(qsfc_p(ims:ime,jms:jme) ) - if(.not.allocated(rmol_p) ) allocate(rmol_p(ims:ime,jms:jme) ) - if(.not.allocated(tsk_p) ) allocate(tsk_p(ims:ime,jms:jme) ) - if(.not.allocated(maxwidthbl_p) ) allocate(maxwidthbl_p(ims:ime,jms:jme) ) - if(.not.allocated(maxmfbl_p) ) allocate(maxmfbl_p(ims:ime,jms:jme) ) - if(.not.allocated(zbl_plume_p) ) allocate(zbl_plume_p(ims:ime,jms:jme) ) - - if(.not.allocated(cov_p) ) allocate(cov_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qke_p) ) allocate(qke_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qsq_p) ) allocate(qsq_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(tsq_p) ) allocate(tsq_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qkeadv_p) ) allocate(qkeadv_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(elpbl_p) ) allocate(elpbl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(tkepbl_p) ) allocate(tkepbl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(sh3d_p) ) allocate(sh3d_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(sm3d_p) ) allocate(sm3d_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(dqke_p) ) allocate(dqke_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qbuoy_p) ) allocate(qbuoy_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qdiss_p) ) allocate(qdiss_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qshear_p) ) allocate(qshear_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qwt_p) ) allocate(qwt_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qcbl_p) ) allocate(qcbl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(qibl_p) ) allocate(qibl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(cldfrabl_p) ) allocate(cldfrabl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfa_p) ) allocate(edmfa_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfw_p) ) allocate(edmfw_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfqt_p) ) allocate(edmfqt_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfthl_p) ) allocate(edmfthl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfent_p) ) allocate(edmfent_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(edmfqc_p) ) allocate(edmfqc_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(subthl_p) ) allocate(subthl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(subqv_p) ) allocate(subqv_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(detthl_p) ) allocate(detthl_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(detqv_p) ) allocate(detqv_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(kbl_plume_p) ) allocate(kbl_plume_p(ims:ime,jms:jme) ) + if(.not.allocated(dx_p) ) allocate(dx_p(ims:ime,jms:jme) ) + if(.not.allocated(ch_p) ) allocate(ch_p(ims:ime,jms:jme) ) + if(.not.allocated(qsfc_p) ) allocate(qsfc_p(ims:ime,jms:jme) ) + if(.not.allocated(rmol_p) ) allocate(rmol_p(ims:ime,jms:jme) ) + if(.not.allocated(tsk_p) ) allocate(tsk_p(ims:ime,jms:jme) ) + if(.not.allocated(maxwidthbl_p)) allocate(maxwidthbl_p(ims:ime,jms:jme) ) + if(.not.allocated(maxmfbl_p) ) allocate(maxmfbl_p(ims:ime,jms:jme) ) + if(.not.allocated(zbl_plume_p) ) allocate(zbl_plume_p(ims:ime,jms:jme) ) + if(.not.allocated(cov_p) ) allocate(cov_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qke_p) ) allocate(qke_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qsq_p) ) allocate(qsq_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(tsq_p) ) allocate(tsq_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qkeadv_p) ) allocate(qkeadv_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(elpbl_p) ) allocate(elpbl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(tkepbl_p) ) allocate(tkepbl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(sh3d_p) ) allocate(sh3d_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(sm3d_p) ) allocate(sm3d_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(dqke_p) ) allocate(dqke_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qbuoy_p) ) allocate(qbuoy_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qdiss_p) ) allocate(qdiss_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qshear_p) ) allocate(qshear_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qwt_p) ) allocate(qwt_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qcbl_p) ) allocate(qcbl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(qibl_p) ) allocate(qibl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(cldfrabl_p) ) allocate(cldfrabl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfa_p) ) allocate(edmfa_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfw_p) ) allocate(edmfw_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfqt_p) ) allocate(edmfqt_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfthl_p) ) allocate(edmfthl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfent_p) ) allocate(edmfent_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(edmfqc_p) ) allocate(edmfqc_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(subthl_p) ) allocate(subthl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(subqv_p) ) allocate(subqv_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(detthl_p) ) allocate(detthl_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(detqv_p) ) allocate(detqv_p(ims:ime,kms:kme,jms:jme) ) !additional tendencies: - if(.not.allocated(rqsblten_p) ) allocate(rqsblten_p(ims:ime,kms:kme,jms:jme) ) - if(.not.allocated(rniblten_p) ) allocate(rniblten_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(rqsblten_p) ) allocate(rqsblten_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(rncblten_p) ) allocate(rncblten_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(rniblten_p) ) allocate(rniblten_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(rnifablten_p)) allocate(rnifablten_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(rnwfablten_p)) allocate(rnwfablten_p(ims:ime,kms:kme,jms:jme)) !allocation of additional arrays: if(.not.allocated(pattern_spp_pbl)) allocate(pattern_spp_pbl(ims:ime,kms:kme,jms:jme)) @@ -235,60 +236,62 @@ subroutine deallocate_pbl(configs) case("bl_ysu") !from surface-layer model: - if(allocated(br_p) ) deallocate(br_p ) - if(allocated(ctopo_p) ) deallocate(ctopo_p ) - if(allocated(ctopo2_p) ) deallocate(ctopo2_p ) - if(allocated(delta_p) ) deallocate(delta_p ) - if(allocated(psih_p) ) deallocate(psih_p ) - if(allocated(psim_p) ) deallocate(psim_p ) - if(allocated(u10_p) ) deallocate(u10_p ) - if(allocated(v10_p) ) deallocate(v10_p ) - if(allocated(exch_p) ) deallocate(exch_p ) - if(allocated(wstar_p) ) deallocate(wstar_p ) + if(allocated(br_p) ) deallocate(br_p ) + if(allocated(ctopo_p) ) deallocate(ctopo_p ) + if(allocated(ctopo2_p)) deallocate(ctopo2_p) + if(allocated(delta_p) ) deallocate(delta_p ) + if(allocated(psih_p) ) deallocate(psih_p ) + if(allocated(psim_p) ) deallocate(psim_p ) + if(allocated(u10_p) ) deallocate(u10_p ) + if(allocated(v10_p) ) deallocate(v10_p ) + if(allocated(exch_p) ) deallocate(exch_p ) + if(allocated(wstar_p) ) deallocate(wstar_p ) case("bl_mynn") - if(allocated(kbl_plume_p) ) deallocate(kbl_plume_p ) - - if(allocated(dx_p) ) deallocate(dx_p ) - if(allocated(ch_p) ) deallocate(ch_p ) - if(allocated(qsfc_p) ) deallocate(qsfc_p ) - if(allocated(rmol_p) ) deallocate(rmol_p ) - if(allocated(tsk_p) ) deallocate(tsk_p ) - if(allocated(maxwidthbl_p) ) deallocate(maxwidthbl_p ) - if(allocated(maxmfbl_p) ) deallocate(maxmfbl_p ) - if(allocated(zbl_plume_p) ) deallocate(zbl_plume_p ) - - if(allocated(cov_p) ) deallocate(cov_p ) - if(allocated(qke_p) ) deallocate(qke_p ) - if(allocated(qsq_p) ) deallocate(qsq_p ) - if(allocated(tsq_p) ) deallocate(tsq_p ) - if(allocated(qkeadv_p) ) deallocate(qkeadv_p ) - if(allocated(elpbl_p) ) deallocate(elpbl_p ) - if(allocated(tkepbl_p) ) deallocate(tkepbl_p ) - if(allocated(sh3d_p) ) deallocate(sh3d_p ) - if(allocated(sm3d_p) ) deallocate(sm3d_p ) - if(allocated(dqke_p) ) deallocate(dqke_p ) - if(allocated(qbuoy_p) ) deallocate(qbuoy_p ) - if(allocated(qdiss_p) ) deallocate(qdiss_p ) - if(allocated(qshear_p) ) deallocate(qshear_p ) - if(allocated(qwt_p) ) deallocate(qwt_p ) - if(allocated(qcbl_p) ) deallocate(qcbl_p ) - if(allocated(qibl_p) ) deallocate(qibl_p ) - if(allocated(cldfrabl_p) ) deallocate(cldfrabl_p ) - if(allocated(edmfa_p) ) deallocate(edmfa_p ) - if(allocated(edmfw_p) ) deallocate(edmfw_p ) - if(allocated(edmfqt_p) ) deallocate(edmfqt_p ) - if(allocated(edmfthl_p) ) deallocate(edmfthl_p ) - if(allocated(edmfent_p) ) deallocate(edmfent_p ) - if(allocated(edmfqc_p) ) deallocate(edmfqc_p ) - if(allocated(subthl_p) ) deallocate(subthl_p ) - if(allocated(subqv_p) ) deallocate(subqv_p ) - if(allocated(detthl_p) ) deallocate(detthl_p ) - if(allocated(detqv_p) ) deallocate(detqv_p ) + if(allocated(kbl_plume_p) ) deallocate(kbl_plume_p ) + if(allocated(dx_p) ) deallocate(dx_p ) + if(allocated(ch_p) ) deallocate(ch_p ) + if(allocated(qsfc_p) ) deallocate(qsfc_p ) + if(allocated(rmol_p) ) deallocate(rmol_p ) + if(allocated(tsk_p) ) deallocate(tsk_p ) + if(allocated(maxwidthbl_p)) deallocate(maxwidthbl_p) + if(allocated(maxmfbl_p) ) deallocate(maxmfbl_p ) + if(allocated(zbl_plume_p) ) deallocate(zbl_plume_p ) + + if(allocated(cov_p) ) deallocate(cov_p ) + if(allocated(qke_p) ) deallocate(qke_p ) + if(allocated(qsq_p) ) deallocate(qsq_p ) + if(allocated(tsq_p) ) deallocate(tsq_p ) + if(allocated(qkeadv_p) ) deallocate(qkeadv_p ) + if(allocated(elpbl_p) ) deallocate(elpbl_p ) + if(allocated(tkepbl_p) ) deallocate(tkepbl_p ) + if(allocated(sh3d_p) ) deallocate(sh3d_p ) + if(allocated(sm3d_p) ) deallocate(sm3d_p ) + if(allocated(dqke_p) ) deallocate(dqke_p ) + if(allocated(qbuoy_p) ) deallocate(qbuoy_p ) + if(allocated(qdiss_p) ) deallocate(qdiss_p ) + if(allocated(qshear_p) ) deallocate(qshear_p ) + if(allocated(qwt_p) ) deallocate(qwt_p ) + if(allocated(qcbl_p) ) deallocate(qcbl_p ) + if(allocated(qibl_p) ) deallocate(qibl_p ) + if(allocated(cldfrabl_p) ) deallocate(cldfrabl_p ) + if(allocated(edmfa_p) ) deallocate(edmfa_p ) + if(allocated(edmfw_p) ) deallocate(edmfw_p ) + if(allocated(edmfqt_p) ) deallocate(edmfqt_p ) + if(allocated(edmfthl_p) ) deallocate(edmfthl_p ) + if(allocated(edmfent_p) ) deallocate(edmfent_p ) + if(allocated(edmfqc_p) ) deallocate(edmfqc_p ) + if(allocated(subthl_p) ) deallocate(subthl_p ) + if(allocated(subqv_p) ) deallocate(subqv_p ) + if(allocated(detthl_p) ) deallocate(detthl_p ) + if(allocated(detqv_p) ) deallocate(detqv_p ) !additional tendencies: - if(allocated(rqsblten_p) ) deallocate(rqsblten_p ) - if(allocated(rniblten_p) ) deallocate(rniblten_p ) + if(allocated(rqsblten_p) ) deallocate(rqsblten_p ) + if(allocated(rncblten_p) ) deallocate(rncblten_p ) + if(allocated(rniblten_p) ) deallocate(rniblten_p ) + if(allocated(rnifablten_p)) deallocate(rnifablten_p) + if(allocated(rnwfablten_p)) deallocate(rnwfablten_p) !deallocation of additional arrays: if(allocated(pattern_spp_pbl)) deallocate(pattern_spp_pbl) @@ -485,8 +488,11 @@ subroutine pbl_from_MPAS(configs,mesh,sfc_input,diag_physics,tend_physics,its,it qshear_p(i,k,j) = 0._RKIND qwt_p(i,k,j) = 0._RKIND - rqsblten_p(i,k,j) = 0._RKIND - rniblten_p(i,k,j) = 0._RKIND + rqsblten_p(i,k,j) = 0._RKIND + rncblten_p(i,k,j) = 0._RKIND + rniblten_p(i,k,j) = 0._RKIND + rnifablten_p(i,k,j) = 0._RKIND + rnwfablten_p(i,k,j) = 0._RKIND pattern_spp_pbl(i,k,j) = 0._RKIND enddo @@ -546,7 +552,7 @@ subroutine pbl_to_MPAS(configs,diag_physics,tend_physics,its,ite) real(kind=RKIND),dimension(:),pointer :: hpbl real(kind=RKIND),dimension(:,:),pointer:: kzh,kzm,kzq real(kind=RKIND),dimension(:,:),pointer:: rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten,rqsblten - real(kind=RKIND),dimension(:,:),pointer:: rniblten + real(kind=RKIND),dimension(:,:),pointer:: rncblten,rniblten,rnifablten,rnwfablten !local pointers for YSU scheme: real(kind=RKIND),dimension(:,:),pointer:: exch_h @@ -649,7 +655,6 @@ subroutine pbl_to_MPAS(configs,diag_physics,tend_physics,its,ite) call mpas_pool_get_array(diag_physics,'det_qv' ,det_qv ) call mpas_pool_get_array(tend_physics,'rqsblten' ,rqsblten ) - call mpas_pool_get_array(tend_physics,'rniblten' ,rniblten ) do j = jts,jte do k = kts,kte @@ -683,11 +688,35 @@ subroutine pbl_to_MPAS(configs,diag_physics,tend_physics,its,ite) qwt(k,i) = qwt_p(i,k,j) rqsblten(k,i) = rqsblten_p(i,k,j) - rniblten(k,i) = rniblten_p(i,k,j) enddo enddo enddo + if(f_ni) then + call mpas_pool_get_array(tend_physics,'rniblten',rniblten) + do j = jts,jte + do k = kts,kte + do i = its,ite + rniblten(k,i) = rniblten_p(i,k,j) + enddo + enddo + enddo + endif + if(f_nc .and. f_nifa .and. f_nwfa) then + call mpas_pool_get_array(tend_physics,'rncblten' ,rncblten ) + call mpas_pool_get_array(tend_physics,'rnifablten',rnifablten) + call mpas_pool_get_array(tend_physics,'rnwfablten',rnwfablten) + do j = jts,jte + do k = kts,kte + do i = its,ite + rncblten(k,i) = rncblten_p(i,k,j) + rnifablten(k,i) = rnifablten_p(i,k,j) + rnwfablten(k,i) = rnwfablten_p(i,k,j) + enddo + enddo + enddo + endif + case default end select pbl_select @@ -873,58 +902,60 @@ subroutine driver_pbl(itimestep,configs,mesh,sfc_input,diag_physics,tend_physics call mpas_timer_start('bl_mynn') call mynn_bl_driver( & - f_qc = f_qc , f_qi = f_qi , f_qs = f_qs , & - f_qoz = f_qoz , f_nc = f_nc , f_ni = f_ni , & - f_nifa = f_nifa , f_nwfa = f_nwfa , f_nbca = f_nbca , & - icloud_bl = icloud_bl , delt = dt_pbl , dx = dx_p , & - xland = xland_p , ps = psfc_p , ts = tsk_p , & - qsfc = qsfc_p , ust = ust_p , ch = ch_p , & - hfx = hfx_p , qfx = qfx_p , rmol = rmol_p , & - wspd = wspd_p , znt = znt_p , uoce = uoce_p , & - voce = voce_p , dz = dz_p , u = u_p , & - v = v_p , w = w_p , th = th_p , & - tt = t_p , p = pres_hyd_p , exner = pi_p , & - rho = rho_p , qv = qv_p , qc = qc_p , & - qi = qi_p , qs = qs_p , ni = ni_p , & - rthraten = rthraten_p , pblh = hpbl_p , kpbl = kpbl_p , & - cldfra_bl = cldfrabl_p , qc_bl = qcbl_p , qi_bl = qibl_p , & - maxwidth = maxwidthbl_p , maxmf = maxmfbl_p , ktop_plume = kbl_plume_p , & - ztop_plume = zbl_plume_p , dqke = dqke_p , qke_adv = qkeadv_p , & - tsq = tsq_p , qsq = qsq_p , cov = cov_p , & - el_pbl = elpbl_p , rublten = rublten_p , rvblten = rvblten_p , & - rthblten = rthblten_p , rqvblten = rqvblten_p , rqcblten = rqcblten_p , & - rqiblten = rqiblten_p , rqsblten = rqsblten_p , rniblten = rniblten_p , & - edmf_a = edmfa_p , edmf_w = edmfw_p , edmf_qt = edmfqt_p , & - edmf_thl = edmfthl_p , edmf_ent = edmfent_p , edmf_qc = edmfqc_p , & - sub_thl = subthl_p , sub_sqv = subqv_p , det_thl = detthl_p , & - det_sqv = detqv_p , exch_h = kzh_p , exch_m = kzm_p , & - qke = qke_p , qwt = qwt_p , qshear = qshear_p , & - qbuoy = qbuoy_p , qdiss = qdiss_p , sh3d = sh3d_p , & - sm3d = sm3d_p , spp_pbl = spp_pbl , pattern_spp = pattern_spp_pbl , & - do_restart = config_do_restart , & - do_DAcycling = config_do_DAcycling , & - initflag = initflag , & - bl_mynn_tkeadvect = bl_mynn_tkeadvect , & - bl_mynn_tkebudget = bl_mynn_tkebudget , & - bl_mynn_cloudpdf = bl_mynn_cloudpdf , & - bl_mynn_mixlength = bl_mynn_mixlength , & - bl_mynn_closure = bl_mynn_closure , & - bl_mynn_stfunc = bl_mynn_stfunc , & - bl_mynn_topdown = bl_mynn_topdown , & - bl_mynn_scaleaware = bl_mynn_scaleaware , & - bl_mynn_dheat_opt = bl_mynn_dheat_opt , & - bl_mynn_edmf = bl_mynn_edmf , & - bl_mynn_edmf_dd = bl_mynn_edmf_dd , & - bl_mynn_edmf_mom = bl_mynn_edmf_mom , & - bl_mynn_edmf_tke = bl_mynn_edmf_tke , & - bl_mynn_output = bl_mynn_edmf_output , & - bl_mynn_mixscalars = bl_mynn_mixscalars , & - bl_mynn_cloudmix = bl_mynn_cloudmix , & - bl_mynn_mixqt = bl_mynn_mixqt , & - ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & - ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & - its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte , & - errmsg = errmsg , errflg = errflg & + f_qc = f_qc , f_qi = f_qi , f_qs = f_qs , & + f_qoz = f_qoz , f_nc = f_nc , f_ni = f_ni , & + f_nifa = f_nifa , f_nwfa = f_nwfa , f_nbca = f_nbca , & + icloud_bl = icloud_bl , delt = dt_pbl , dx = dx_p , & + xland = xland_p , ps = psfc_p , ts = tsk_p , & + qsfc = qsfc_p , ust = ust_p , ch = ch_p , & + hfx = hfx_p , qfx = qfx_p , rmol = rmol_p , & + wspd = wspd_p , znt = znt_p , uoce = uoce_p , & + voce = voce_p , dz = dz_p , u = u_p , & + v = v_p , w = w_p , th = th_p , & + tt = t_p , p = pres_hyd_p , exner = pi_p , & + rho = rho_p , qv = qv_p , qc = qc_p , & + qi = qi_p , qs = qs_p , nc = nc_p , & + ni = ni_p , nifa = nifa_p , nwfa = nwfa_p , & + rthraten = rthraten_p , pblh = hpbl_p , kpbl = kpbl_p , & + cldfra_bl = cldfrabl_p , qc_bl = qcbl_p , qi_bl = qibl_p , & + maxwidth = maxwidthbl_p , maxmf = maxmfbl_p , ktop_plume = kbl_plume_p , & + ztop_plume = zbl_plume_p , dqke = dqke_p , qke_adv = qkeadv_p , & + tsq = tsq_p , qsq = qsq_p , cov = cov_p , & + el_pbl = elpbl_p , rublten = rublten_p , rvblten = rvblten_p , & + rthblten = rthblten_p , rqvblten = rqvblten_p , rqcblten = rqcblten_p , & + rqiblten = rqiblten_p , rqsblten = rqsblten_p , rncblten = rncblten_p , & + rniblten = rniblten_p , rnifablten = rnifablten_p , rnwfablten = rnwfablten_p , & + edmf_a = edmfa_p , edmf_w = edmfw_p , edmf_qt = edmfqt_p , & + edmf_thl = edmfthl_p , edmf_ent = edmfent_p , edmf_qc = edmfqc_p , & + sub_thl = subthl_p , sub_sqv = subqv_p , det_thl = detthl_p , & + det_sqv = detqv_p , exch_h = kzh_p , exch_m = kzm_p , & + qke = qke_p , qwt = qwt_p , qshear = qshear_p , & + qbuoy = qbuoy_p , qdiss = qdiss_p , sh3d = sh3d_p , & + sm3d = sm3d_p , spp_pbl = spp_pbl , pattern_spp = pattern_spp_pbl , & + do_restart = config_do_restart , & + do_DAcycling = config_do_DAcycling , & + initflag = initflag , & + bl_mynn_tkeadvect = bl_mynn_tkeadvect , & + bl_mynn_tkebudget = bl_mynn_tkebudget , & + bl_mynn_cloudpdf = bl_mynn_cloudpdf , & + bl_mynn_mixlength = bl_mynn_mixlength , & + bl_mynn_closure = bl_mynn_closure , & + bl_mynn_stfunc = bl_mynn_stfunc , & + bl_mynn_topdown = bl_mynn_topdown , & + bl_mynn_scaleaware = bl_mynn_scaleaware , & + bl_mynn_dheat_opt = bl_mynn_dheat_opt , & + bl_mynn_edmf = bl_mynn_edmf , & + bl_mynn_edmf_dd = bl_mynn_edmf_dd , & + bl_mynn_edmf_mom = bl_mynn_edmf_mom , & + bl_mynn_edmf_tke = bl_mynn_edmf_tke , & + bl_mynn_output = bl_mynn_edmf_output , & + bl_mynn_mixscalars = bl_mynn_mixscalars , & + bl_mynn_cloudmix = bl_mynn_cloudmix , & + bl_mynn_mixqt = bl_mynn_mixqt , & + ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte , & + errmsg = errmsg , errflg = errflg & ) call mpas_timer_stop('bl_mynn') ! call mpas_log_write('--- exit subroutine mynn_bl_driver:') diff --git a/src/core_atmosphere/physics/mpas_atmphys_init.F b/src/core_atmosphere/physics/mpas_atmphys_init.F index b53ee8334c..36ac2c0aa8 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_init.F +++ b/src/core_atmosphere/physics/mpas_atmphys_init.F @@ -419,7 +419,7 @@ subroutine init_physics_flags(state,f_qc,f_qr,f_qi,f_qs,f_qg,f_qoz,f_nc,f_ni,f_n !local pointers: integer,pointer:: index_qc,index_qr,index_qi,index_qs,index_qg - integer,pointer:: index_ni + integer,pointer:: index_nc,index_ni,index_nifa,index_nwfa !----------------------------------------------------------------------------------------------------------------- @@ -443,15 +443,20 @@ subroutine init_physics_flags(state,f_qc,f_qr,f_qi,f_qs,f_qg,f_qoz,f_nc,f_ni,f_n if(index_qg .gt. -1) f_qg = .true. !initializes the logical assigned to number concentrations: - f_nc = .false. !nc is not defined in Registry.xml - therefore f_nc is initialized to false. + f_nc = .false. f_ni = .false. - f_nifa = .false. !nifa is not defined in Registry.xml - therefore f_nc is initialized to false. - f_nwfa = .false. !nwfa is not defined in Registry.xml - therefore f_nc is initialized to false. + f_nifa = .false. + f_nwfa = .false. f_nbca = .false. !nbca is not defined in Registry.xml - therefore f_nc is initialized to false. - - call mpas_pool_get_dimension(state,'index_ni',index_ni) - - if(index_ni .gt. -1) f_ni = .true. + call mpas_pool_get_dimension(state,'index_nc' ,index_nc ) + call mpas_pool_get_dimension(state,'index_ni' ,index_ni ) + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) + + if(index_nc .gt. -1) f_nc = .true. + if(index_ni .gt. -1) f_ni = .true. + if(index_nifa .gt. -1) f_nifa = .true. + if(index_nwfa .gt. -1) f_nwfa = .true. end subroutine init_physics_flags diff --git a/src/core_atmosphere/physics/mpas_atmphys_interface.F b/src/core_atmosphere/physics/mpas_atmphys_interface.F index 76fcc20e25..7edd01f703 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_interface.F +++ b/src/core_atmosphere/physics/mpas_atmphys_interface.F @@ -116,7 +116,10 @@ subroutine allocate_forall_physics(configs) pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") - if(.not.allocated(ni_p)) allocate(ni_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(nc_p) ) allocate(nc_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(ni_p) ) allocate(ni_p(ims:ime,kms:kme,jms:jme) ) + if(.not.allocated(nifa_p)) allocate(nifa_p(ims:ime,kms:kme,jms:jme)) + if(.not.allocated(nwfa_p)) allocate(nwfa_p(ims:ime,kms:kme,jms:jme)) case default @@ -180,7 +183,10 @@ subroutine deallocate_forall_physics(configs) pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") - if(allocated(ni_p)) deallocate(ni_p) + if(allocated(nc_p) ) deallocate(nc_p ) + if(allocated(ni_p) ) deallocate(ni_p ) + if(allocated(nifa_p)) deallocate(nifa_p) + if(allocated(nwfa_p)) deallocate(nwfa_p) case default @@ -216,7 +222,7 @@ subroutine MPAS_to_physics(configs,mesh,state,time_lev,diag,diag_physics,its,ite character(len=StrKIND),pointer:: pbl_scheme integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg - integer,pointer:: index_ni + integer,pointer:: index_nc,index_ni,index_nifa,index_nwfa real(kind=RKIND),dimension(:),pointer :: latCell,lonCell real(kind=RKIND),dimension(:),pointer :: fzm,fzp,rdzw @@ -225,7 +231,7 @@ subroutine MPAS_to_physics(configs,mesh,state,time_lev,diag,diag_physics,its,ite real(kind=RKIND),dimension(:,:),pointer :: zz,exner,pressure_b,rtheta_p,rtheta_b real(kind=RKIND),dimension(:,:),pointer :: rho_zz,theta_m,pressure_p,u,v,w real(kind=RKIND),dimension(:,:),pointer :: qv,qc,qr,qi,qs,qg - real(kind=RKIND),dimension(:,:),pointer :: ni + real(kind=RKIND),dimension(:,:),pointer :: nc,ni,nifa,nwfa real(kind=RKIND),dimension(:,:,:),pointer:: scalars !local variables: @@ -320,19 +326,52 @@ subroutine MPAS_to_physics(configs,mesh,state,time_lev,diag,diag_physics,its,ite pbl_select: select case(trim(pbl_scheme)) case("bl_mynn") - call mpas_pool_get_dimension(state,'index_ni',index_ni) - ni => scalars(index_ni,:,:) - do j = jts,jte - do k = kts,kte - do i = its,ite - ni_p(i,k,j) = max(0.,ni(k,i)) - enddo - enddo + do k = kts,kte + do i = its,ite + nc_p(i,k,j) = 0._RKIND + ni_p(i,k,j) = 0._RKIND + nifa_p(i,k,j) = 0._RKIND + nwfa_p(i,k,j) = 0._RKIND + enddo + enddo enddo + !initializes ni_p when running the options "mp_thompson" or "mp_thompson_aerosols": + if(f_ni) then + nullify(ni) + call mpas_pool_get_dimension(state,'index_ni',index_ni) + ni => scalars(index_ni,:,:) + do j = jts,jte + do k = kts,kte + do i = its,ite + ni_p(i,k,j) = max(0.,ni(k,i)) + enddo + enddo + enddo + endif + !initializes nc_p, nifa_p, and nwfa_p when running the option "mp_thompson_aerosols": + if(f_nc .and. f_nifa .and. f_nwfa) then + nullify(nc) + nullify(nifa) + nullify(nwfa) + call mpas_pool_get_dimension(state,'index_nc' ,index_nc ) + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) + nc => scalars(index_nc,:,:) + nifa => scalars(index_nifa,:,:) + nwfa => scalars(index_nwfa,:,:) + do j = jts,jte + do k = kts,kte + do i = its,ite + nc_p(i,k,j) = max(0.,nc(k,i) ) + nifa_p(i,k,j) = max(0.,nifa(k,i)) + nwfa_p(i,k,j) = max(0.,nwfa(k,i)) + enddo + enddo + enddo + endif case default - end select pbl_select !calculation of the surface pressure using hydrostatic assumption down to the surface:: diff --git a/src/core_atmosphere/physics/mpas_atmphys_todynamics.F b/src/core_atmosphere/physics/mpas_atmphys_todynamics.F index fa7955830e..81100225a0 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_todynamics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_todynamics.F @@ -37,6 +37,9 @@ module mpas_atmphys_todynamics ! Laura D. Fowler (laura@ucar.edu) / 2018-01-23. ! * removed the option bl_mynn_wrf390. ! Laura D. Fowler (laura@ucar.edu) / 2018-01-24. +! * added tendencies of cloud liquid water number concentration, and water-friendly and ice-friendly aerosol +! number concentrations due to PBL processes. +! Laura D. Fowler (laura@ucar.edu) / 2024-05-16. ! ! Abstract interface for routine used to communicate halos of fields @@ -82,12 +85,13 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s !local variables: character(len=StrKIND),pointer:: pbl_scheme, & convection_scheme, & + microp_scheme, & radt_lw_scheme, & radt_sw_scheme integer:: i,iCell,k,n - integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs,index_qg - integer,pointer:: index_ni + integer,pointer:: index_qv,index_qc,index_qr,index_qi,index_qs + integer,pointer:: index_nc,index_ni,index_nifa,index_nwfa integer,pointer:: nCells,nCellsSolve,nEdges,nEdgesSolve real(kind=RKIND),dimension(:,:),pointer:: mass ! time level 2 rho_zz @@ -97,7 +101,7 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s real(kind=RKIND),dimension(:,:),pointer:: rthblten,rqvblten,rqcblten, & rqiblten,rqsblten,rublten,rvblten - real(kind=RKIND),dimension(:,:),pointer:: rniblten + real(kind=RKIND),dimension(:,:),pointer:: rncblten,rniblten,rnifablten,rnwfablten real(kind=RKIND),dimension(:,:),pointer:: rthcuten,rqvcuten,rqccuten, & rqrcuten,rqicuten,rqscuten, & rucuten,rvcuten @@ -117,8 +121,9 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s call mpas_pool_get_dimension(mesh,'nCellsSolve',nCellsSolve) call mpas_pool_get_dimension(mesh,'nEdgesSolve',nEdgesSolve) - call mpas_pool_get_config(configs,'config_pbl_scheme' ,pbl_scheme ) call mpas_pool_get_config(configs,'config_convection_scheme',convection_scheme) + call mpas_pool_get_config(configs,'config_microp_scheme' ,microp_scheme ) + call mpas_pool_get_config(configs,'config_pbl_scheme' ,pbl_scheme ) call mpas_pool_get_config(configs,'config_radt_lw_scheme' ,radt_lw_scheme ) call mpas_pool_get_config(configs,'config_radt_sw_scheme' ,radt_sw_scheme ) @@ -133,8 +138,10 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s call mpas_pool_get_dimension(state,'index_qr',index_qr) call mpas_pool_get_dimension(state,'index_qi',index_qi) call mpas_pool_get_dimension(state,'index_qs',index_qs) - call mpas_pool_get_dimension(state,'index_qg',index_qg) + call mpas_pool_get_dimension(state,'index_nc',index_nc) call mpas_pool_get_dimension(state,'index_ni',index_ni) + call mpas_pool_get_dimension(state,'index_nifa',index_nifa) + call mpas_pool_get_dimension(state,'index_nwfa',index_nwfa) call mpas_pool_get_array(tend_physics,'rublten',rublten) call mpas_pool_get_array(tend_physics,'rvblten',rvblten) @@ -143,7 +150,10 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s call mpas_pool_get_array(tend_physics,'rqcblten',rqcblten) call mpas_pool_get_array(tend_physics,'rqiblten',rqiblten) call mpas_pool_get_array(tend_physics,'rqsblten',rqsblten) + call mpas_pool_get_array(tend_physics,'rncblten',rncblten) call mpas_pool_get_array(tend_physics,'rniblten',rniblten) + call mpas_pool_get_array(tend_physics,'rnifablten',rnifablten) + call mpas_pool_get_array(tend_physics,'rnwfablten',rnwfablten) call mpas_pool_get_array(tend_physics,'rublten_Edge',rublten_Edge) call mpas_pool_get_array(tend_physics,'rucuten',rucuten) @@ -191,17 +201,19 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s if(.not. associated(rqcblten)) allocate(rqcblten(0,0)) if(.not. associated(rqiblten)) allocate(rqiblten(0,0)) if(.not. associated(rqsblten)) allocate(rqsblten(0,0)) + if(.not. associated(rncblten)) allocate(rncblten(0,0)) if(.not. associated(rniblten)) allocate(rniblten(0,0)) + if(.not. associated(rnifablten)) allocate(rnifablten(0,0)) + if(.not. associated(rnwfablten)) allocate(rnwfablten(0,0)) call physics_get_tend_work( & block,mesh,nCells,nEdges,nCellsSolve,nEdgesSolve,rk_step,dynamics_substep, & - pbl_scheme,convection_scheme,radt_lw_scheme,radt_sw_scheme, & + pbl_scheme,convection_scheme,microp_scheme,radt_lw_scheme,radt_sw_scheme, & index_qv,index_qc,index_qr,index_qi,index_qs, & - index_ni, & + index_nc,index_ni,index_nifa,index_nwfa, & mass,mass_edge,theta_m,scalars, & - rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten, & - rqsblten, & - rniblten, & + rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten,rqsblten, & + rncblten,rniblten,rnifablten,rnwfablten, & rucuten,rvcuten,rthcuten,rqvcuten,rqccuten,rqrcuten,rqicuten,rqscuten, & rthratenlw,rthratensw,rublten_Edge,rucuten_Edge, & tend_th,tend_rtheta_physics,tend_scalars,tend_ru_physics,tend_u_phys, & @@ -224,7 +236,10 @@ subroutine physics_get_tend(block,mesh,state,diag,tend,tend_physics,configs,rk_s if(size(rqcblten) == 0) deallocate(rqcblten) if(size(rqiblten) == 0) deallocate(rqiblten) if(size(rqsblten) == 0) deallocate(rqsblten) + if(size(rncblten) == 0) deallocate(rncblten) if(size(rniblten) == 0) deallocate(rniblten) + if(size(rnifablten) == 0) deallocate(rnifablten) + if(size(rnwfablten) == 0) deallocate(rnwfablten) deallocate(tend_th) @@ -233,12 +248,12 @@ end subroutine physics_get_tend !================================================================================================================= subroutine physics_get_tend_work( & block,mesh,nCells,nEdges,nCellsSolve,nEdgesSolve,rk_step,dynamics_substep, & - pbl_scheme,convection_scheme,radt_lw_scheme,radt_sw_scheme, & + pbl_scheme,convection_scheme,microp_scheme,radt_lw_scheme,radt_sw_scheme, & index_qv,index_qc,index_qr,index_qi,index_qs, & - index_ni, & + index_nc,index_ni,index_nifa,index_nwfa, & mass,mass_edge,theta_m,scalars, & rublten,rvblten,rthblten,rqvblten,rqcblten,rqiblten,rqsblten, & - rniblten, & + rncblten,rniblten,rnifablten,rnwfablten, & rucuten,rvcuten,rthcuten,rqvcuten,rqccuten,rqrcuten,rqicuten,rqscuten, & rthratenlw,rthratensw,rublten_Edge,rucuten_Edge, & tend_th,tend_theta,tend_scalars,tend_u,tend_u_phys, & @@ -251,15 +266,16 @@ subroutine physics_get_tend_work( & type(block_type),intent(in) :: block type(mpas_pool_type),intent(in):: mesh - character(len=StrKIND),intent(in):: pbl_scheme character(len=StrKIND),intent(in):: convection_scheme + character(len=StrKIND),intent(in):: microp_scheme + character(len=StrKIND),intent(in):: pbl_scheme character(len=StrKIND),intent(in):: radt_lw_scheme character(len=StrKIND),intent(in):: radt_sw_scheme integer,intent(in):: nCells,nEdges,nCellsSolve,nEdgesSolve integer,intent(in):: rk_step,dynamics_substep integer,intent(in):: index_qv,index_qc,index_qr,index_qi,index_qs - integer,intent(in):: index_ni + integer,intent(in):: index_nc,index_ni,index_nifa,index_nwfa real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: mass real(kind=RKIND),intent(in),dimension(nVertLevels,nEdges+1):: mass_edge @@ -273,7 +289,10 @@ subroutine physics_get_tend_work( & real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqcblten real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqiblten real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rqsblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rncblten real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rniblten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rnifablten + real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rnwfablten real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rucuten real(kind=RKIND),intent(in),dimension(nVertLevels,nCells+1):: rvcuten @@ -333,7 +352,10 @@ subroutine physics_get_tend_work( & do i = 1, nCellsSolve do k = 1, nVertLevels tend_scalars(index_qs,k,i) = tend_scalars(index_qs,k,i) + rqsblten(k,i)*mass(k,i) + tend_scalars(index_nc,k,i) = tend_scalars(index_nc,k,i) + rncblten(k,i)*mass(k,i) tend_scalars(index_ni,k,i) = tend_scalars(index_ni,k,i) + rniblten(k,i)*mass(k,i) + tend_scalars(index_nifa,k,i) = tend_scalars(index_nifa,k,i) + rnifablten(k,i)*mass(k,i) + tend_scalars(index_nwfa,k,i) = tend_scalars(index_nwfa,k,i) + rnwfablten(k,i)*mass(k,i) enddo enddo diff --git a/src/core_atmosphere/physics/mpas_atmphys_vars.F b/src/core_atmosphere/physics/mpas_atmphys_vars.F index 6ee24da38e..02ba4cf9ce 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_vars.F +++ b/src/core_atmosphere/physics/mpas_atmphys_vars.F @@ -451,7 +451,10 @@ module mpas_atmphys_vars real(kind=RKIND),dimension(:,:,:),allocatable:: & rqsblten_p, &!tendency of snow mixing ratio due to PBL processes. - rniblten_p !tendency of cloud ice number concentration due to PBL processes. + rncblten_p, &!tendency of cloud liquid water number concentration due to PBL processes. + rniblten_p, &!tendency of cloud ice number concentration due to PBL processes. + rnifablten_p, &!tendency of ice-friendly aerosol number concentration due to PBL processes. + rnwfablten_p !tendency of water-friendly aerosol number concentration due to PBL processes. real(kind=RKIND),dimension(:,:,:),allocatable:: & pattern_spp_pbl !stochastic forcing for the MYMM PBL and surface layer schemes. From 2e2dd22b9341ca2d15ddc65f4fa0fc0814d91719 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Sat, 18 May 2024 12:02:20 -0600 Subject: [PATCH 037/115] * In ./src/core_atmosphere/physics, added the RRTMG shortwave aerosol optical properties of the Thompson water-friendly and ice-friendly aerosols. -> in ./physics_wrf, added module_mp_thompson_aerosols.F and module_ra_rrtmg_sw_aerosols.F to compute the RRTMG aerosol optical properties (AOPs)of the Thompson aerosols. added the aerosol effects in module_ra_rrtmg_sw.F. -> in mpas_atmphys_vars.F, added local variables of the AOPs of the Thompson aerosols. -> in mpas_atmphys_driver_radiation_sw.F, added calls to subroutine gt_aod and subroutine calc_aerosol_rrtmg_sw to compute the AOPs of the Thompson aerosols. --- src/core_atmosphere/Registry.xml | 15 +- .../mpas_atmphys_driver_radiation_lw.F | 26 +- .../mpas_atmphys_driver_radiation_sw.F | 152 ++- .../physics/mpas_atmphys_vars.F | 29 + .../physics/physics_wrf/Makefile | 2 + .../physics_wrf/module_mp_thompson_aerosols.F | 214 ++++ .../physics/physics_wrf/module_ra_rrtmg_sw.F | 36 +- .../physics_wrf/module_ra_rrtmg_sw_aerosols.F | 924 ++++++++++++++++++ 8 files changed, 1353 insertions(+), 45 deletions(-) create mode 100644 src/core_atmosphere/physics/physics_wrf/module_mp_thompson_aerosols.F create mode 100644 src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw_aerosols.F diff --git a/src/core_atmosphere/Registry.xml b/src/core_atmosphere/Registry.xml index f7f78468dc..d29712f43c 100644 --- a/src/core_atmosphere/Registry.xml +++ b/src/core_atmosphere/Registry.xml @@ -3073,13 +3073,26 @@ - + + + + + + + + + + diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F index 99123ca249..d4d271e50d 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_lw.F @@ -9,7 +9,7 @@ module mpas_atmphys_driver_radiation_lw use mpas_kind_types use mpas_pool_routines - use mpas_timer, only : mpas_timer_start, mpas_timer_stop + use mpas_timer,only: mpas_timer_start,mpas_timer_stop use mpas_atmphys_driver_radiation_sw, only: radconst use mpas_atmphys_constants @@ -138,7 +138,6 @@ subroutine allocate_radiation_lw(configs,xtime_s) if(.not.allocated(rthratenlw_p) ) allocate(rthratenlw_p(ims:ime,kms:kme,jms:jme) ) radiation_lw_select: select case (trim(radt_lw_scheme)) - case("rrtmg_lw") if(.not.allocated(recloud_p) ) allocate(recloud_p(ims:ime,kms:kme,jms:jme) ) @@ -202,7 +201,6 @@ subroutine allocate_radiation_lw(configs,xtime_s) endif case default - end select radiation_lw_select end subroutine allocate_radiation_lw @@ -243,7 +241,6 @@ subroutine deallocate_radiation_lw(configs) if(allocated(rthratenlw_p) ) deallocate(rthratenlw_p ) radiation_lw_select: select case (trim(radt_lw_scheme)) - case("rrtmg_lw") if(allocated(recloud_p) ) deallocate(recloud_p ) if(allocated(reice_p) ) deallocate(reice_p ) @@ -292,7 +289,6 @@ subroutine deallocate_radiation_lw(configs) if(allocated(aerosolcp_p) ) deallocate(aerosolcp_p ) case default - end select radiation_lw_select end subroutine deallocate_radiation_lw @@ -320,9 +316,9 @@ subroutine radiation_lw_from_MPAS(xtime_s,configs,mesh,state,time_lev,diag_physi !local pointers: logical,pointer:: config_o3climatology + logical,pointer:: config_microp_re character(len=StrKIND),pointer:: radt_lw_scheme character(len=StrKIND),pointer:: microp_scheme - logical,pointer:: config_microp_re real(kind=RKIND),dimension(:),pointer :: latCell,lonCell real(kind=RKIND),dimension(:),pointer :: skintemp,snow,xice,xland @@ -339,10 +335,10 @@ subroutine radiation_lw_from_MPAS(xtime_s,configs,mesh,state,time_lev,diag_physi !----------------------------------------------------------------------------------------------------------------- + call mpas_pool_get_config(configs,'config_microp_re' ,config_microp_re ) call mpas_pool_get_config(configs,'config_o3climatology' ,config_o3climatology) call mpas_pool_get_config(configs,'config_radt_lw_scheme',radt_lw_scheme ) call mpas_pool_get_config(configs,'config_microp_scheme' ,microp_scheme ) - call mpas_pool_get_config(configs,'config_microp_re' ,config_microp_re ) call mpas_pool_get_array(mesh,'latCell',latCell) call mpas_pool_get_array(mesh,'lonCell',lonCell) @@ -415,7 +411,6 @@ subroutine radiation_lw_from_MPAS(xtime_s,configs,mesh,state,time_lev,diag_physi enddo radiation_lw_select: select case (trim(radt_lw_scheme)) - case("rrtmg_lw") microp_select: select case(microp_scheme) case("mp_thompson","mp_thompson_aerosols","mp_wsm6") @@ -610,7 +605,6 @@ subroutine radiation_lw_from_MPAS(xtime_s,configs,mesh,state,time_lev,diag_physi enddo case default - end select radiation_lw_select end subroutine radiation_lw_from_MPAS @@ -629,9 +623,9 @@ subroutine radiation_lw_to_MPAS(configs,diag_physics,tend_physics,its,ite) integer,intent(in):: its,ite !local pointers: + logical,pointer:: config_microp_re character(len=StrKIND),pointer:: radt_lw_scheme character(len=StrKIND),pointer:: microp_scheme - logical,pointer:: config_microp_re real(kind=RKIND),dimension(:),pointer :: glw,lwcf,lwdnb,lwdnbc,lwdnt,lwdntc,lwupb,lwupbc, & lwupt,lwuptc,olrtoa @@ -645,9 +639,9 @@ subroutine radiation_lw_to_MPAS(configs,diag_physics,tend_physics,its,ite) !----------------------------------------------------------------------------------------------------------------- - call mpas_pool_get_config(configs,'config_radt_lw_scheme',radt_lw_scheme ) - call mpas_pool_get_config(configs,'config_microp_scheme' ,microp_scheme ) call mpas_pool_get_config(configs,'config_microp_re' ,config_microp_re) + call mpas_pool_get_config(configs,'config_microp_scheme' ,microp_scheme ) + call mpas_pool_get_config(configs,'config_radt_lw_scheme',radt_lw_scheme ) call mpas_pool_get_array(diag_physics,'glw' ,glw ) call mpas_pool_get_array(diag_physics,'lwcf' ,lwcf ) @@ -795,7 +789,6 @@ subroutine init_radiation_lw(dminfo,configs,mesh,atm_input,diag,diag_physics,sta call mpas_pool_get_config(configs,'config_radt_lw_scheme',radt_lw_scheme) radiation_lw_select: select case (trim(radt_lw_scheme)) - case ("rrtmg_lw") call rrtmg_initlw_forMPAS(dminfo) @@ -803,7 +796,6 @@ subroutine init_radiation_lw(dminfo,configs,mesh,atm_input,diag,diag_physics,sta call camradinit(dminfo,mesh,atm_input,diag,diag_physics,state,time_lev) case default - end select radiation_lw_select end subroutine init_radiation_lw @@ -847,12 +839,11 @@ subroutine driver_radiation_lw(xtime_s,configs,mesh,state,time_lev,diag_physics, !call to longwave radiation scheme: radiation_lw_select: select case (trim(radt_lw_scheme)) - case ("rrtmg_lw") o3input = 0 if(config_o3climatology) o3input = 2 - call mpas_timer_start('RRTMG_lw') + call mpas_timer_start('rrtmg_lwrad') call rrtmg_lwrad( & p3d = pres_hyd_p , p8w = pres2_hyd_p , pi3d = pi_p , & t3d = t_p , t8w = t2_p , dz8w = dz_p , & @@ -874,7 +865,7 @@ subroutine driver_radiation_lw(xtime_s,configs,mesh,state,time_lev,diag_physics, ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) - call mpas_timer_stop('RRTMG_lw') + call mpas_timer_stop('rrtmg_lwrad') case ("cam_lw") xtime_m = xtime_s/60. @@ -941,7 +932,6 @@ subroutine driver_radiation_lw(xtime_s,configs,mesh,state,time_lev,diag_physics, call mpas_timer_stop('CAMRAD_lw') case default - end select radiation_lw_select !copy local arrays to MPAS grid: diff --git a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F index fc1ec2bf91..0b5353481a 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F +++ b/src/core_atmosphere/physics/mpas_atmphys_driver_radiation_sw.F @@ -9,7 +9,7 @@ module mpas_atmphys_driver_radiation_sw use mpas_kind_types use mpas_pool_routines - use mpas_timer, only : mpas_timer_start, mpas_timer_stop + use mpas_timer,only: mpas_timer_start,mpas_timer_stop use mpas_atmphys_constants use mpas_atmphys_manager, only: gmt,curr_julday,julday,year @@ -18,6 +18,8 @@ module mpas_atmphys_driver_radiation_sw use mpas_atmphys_vars !wrf physics: + use module_mp_thompson_aerosols + use module_ra_rrtmg_sw_aerosols use module_ra_cam use module_ra_rrtmg_sw @@ -87,6 +89,14 @@ module mpas_atmphys_driver_radiation_sw ! Laura D. Fowler (laura@ucar.edu) / 2023-04-21. ! * removed the variables f_qv and f_qg in the call to subroutine camrad. ! Laura D. Fowler (laura@ucar.edu) / 2024-02-13. +! * in subroutine radiation_sw_from_MPAS, added the calculation of the optical properties of "water-friendly" and +! "ice-friendly" aerosols from the Thompson cloud microphysics scheme for use in the RRTMG short-wave radiation +! code. +! Laura D. Fowler (laura@ucar.edu) / 2024-05-16. +! * in subroutine driver_radiation_sw, modified the argument list in the call to subroutine rrtmg_sw to include +! the optical properties of "water-friendly" and "ice-friendly" aerosols from the Thompson cloud microphysics +! scheme. +! Laura D. Fowler (laura@ucar.edu) / 2024-05-16. contains @@ -101,10 +111,12 @@ subroutine allocate_radiation_sw(configs,xtime_s) real(kind=RKIND),intent(in):: xtime_s !local pointers: - character(len=StrKIND),pointer:: radt_sw_scheme + character(len=StrKIND),pointer:: mp_scheme, & + radt_sw_scheme !----------------------------------------------------------------------------------------------------------------- + call mpas_pool_get_config(configs,'config_microp_scheme' ,mp_scheme ) call mpas_pool_get_config(configs,'config_radt_sw_scheme',radt_sw_scheme) if(.not.allocated(f_ice) ) allocate(f_ice(ims:ime,kms:kme,jms:jme) ) @@ -134,7 +146,6 @@ subroutine allocate_radiation_sw(configs,xtime_s) if(.not.allocated(rthratensw_p) ) allocate(rthratensw_p(ims:ime,kms:kme,jms:jme) ) radiation_sw_select: select case (trim(radt_sw_scheme)) - case("rrtmg_sw") if(.not.allocated(recloud_p) ) allocate(recloud_p(ims:ime,kms:kme,jms:jme) ) if(.not.allocated(reice_p) ) allocate(reice_p(ims:ime,kms:kme,jms:jme) ) @@ -161,6 +172,20 @@ subroutine allocate_radiation_sw(configs,xtime_s) if(.not.allocated(pin_p) ) allocate(pin_p(num_oznlevels) ) if(.not.allocated(o3clim_p) ) allocate(o3clim_p(ims:ime,1:num_oznlevels,jms:jme)) + if(.not.allocated(tauaer_p) ) allocate(tauaer_p(ims:ime,kms:kme,jms:jme,nbndsw) ) + if(.not.allocated(ssaaer_p) ) allocate(ssaaer_p(ims:ime,kms:kme,jms:jme,nbndsw) ) + if(.not.allocated(asyaer_p) ) allocate(asyaer_p(ims:ime,kms:kme,jms:jme,nbndsw) ) + + aerosol_select: select case(mp_scheme) + case("mp_thompson_aerosols") + if(.not.allocated(ht_p) ) allocate(ht_p(ims:ime,jms:jme) ) + if(.not.allocated(taer_type_p)) allocate(taer_type_p(ims:ime,jms:jme)) + if(.not.allocated(taod5502d_p)) allocate(taod5502d_p(ims:ime,jms:jme)) + if(.not.allocated(taod5503d_p)) allocate(taod5503d_p(ims:ime,kms:kme,jms:jme)) + + case default + end select aerosol_select + case("cam_sw") if(.not.allocated(glw_p) ) allocate(glw_p(ims:ime,jms:jme) ) if(.not.allocated(lwcf_p) ) allocate(lwcf_p(ims:ime,jms:jme) ) @@ -217,10 +242,12 @@ subroutine deallocate_radiation_sw(configs) type(mpas_pool_type),intent(in):: configs !local pointers: - character(len=StrKIND),pointer:: radt_sw_scheme + character(len=StrKIND),pointer:: mp_scheme, & + radt_sw_scheme !----------------------------------------------------------------------------------------------------------------- + call mpas_pool_get_config(configs,'config_microp_scheme' ,mp_scheme ) call mpas_pool_get_config(configs,'config_radt_sw_scheme',radt_sw_scheme) if(allocated(f_ice) ) deallocate(f_ice ) @@ -247,7 +274,6 @@ subroutine deallocate_radiation_sw(configs) if(allocated(rthratensw_p) ) deallocate(rthratensw_p ) radiation_sw_select: select case (trim(radt_sw_scheme)) - case("rrtmg_sw") if(allocated(recloud_p) ) deallocate(recloud_p ) if(allocated(reice_p) ) deallocate(reice_p ) @@ -274,6 +300,21 @@ subroutine deallocate_radiation_sw(configs) if(allocated(pin_p) ) deallocate(pin_p ) if(allocated(o3clim_p) ) deallocate(o3clim_p ) + if(allocated(taod5503d_p) ) deallocate(taod5503d_p ) + if(allocated(tauaer_p) ) deallocate(tauaer_p ) + if(allocated(ssaaer_p) ) deallocate(ssaaer_p ) + if(allocated(asyaer_p) ) deallocate(asyaer_p ) + + aerosol_select: select case(mp_scheme) + case("mp_thompson","mp_thompson_aerosols") + if(allocated(ht_p) ) deallocate(ht_p ) + if(allocated(taer_type_p)) deallocate(taer_type_p) + if(allocated(taod5502d_p)) deallocate(taod5502d_p) + if(allocated(taod5503d_p)) deallocate(taod5503d_p) + + case default + end select aerosol_select + case("cam_sw") if(allocated(pin_p) ) deallocate(pin_p ) if(allocated(m_hybi_p) ) deallocate(m_hybi_p ) @@ -334,24 +375,27 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i !local pointers: logical,pointer:: config_o3climatology + logical,pointer:: config_microp_re character(len=StrKIND),pointer:: radt_sw_scheme character(len=StrKIND),pointer:: microp_scheme - logical,pointer:: config_microp_re real(kind=RKIND),dimension(:),pointer :: latCell,lonCell real(kind=RKIND),dimension(:),pointer :: skintemp,snow,xice,xland real(kind=RKIND),dimension(:),pointer :: m_ps,pin real(kind=RKIND),dimension(:),pointer :: sfc_albedo,sfc_emiss + real(kind=RKIND),dimension(:),pointer :: taod5502d + real(kind=RKIND),dimension(:,:),pointer :: zgrid real(kind=RKIND),dimension(:,:),pointer :: cldfrac,m_hybi,o3clim real(kind=RKIND),dimension(:,:),pointer :: re_cloud,re_ice,re_snow + real(kind=RKIND),dimension(:,:),pointer :: taod5503d real(kind=RKIND),dimension(:,:,:),pointer:: aerosols,ozmixm !----------------------------------------------------------------------------------------------------------------- + call mpas_pool_get_config(configs,'config_microp_re' ,config_microp_re ) call mpas_pool_get_config(configs,'config_o3climatology' ,config_o3climatology) call mpas_pool_get_config(configs,'config_radt_sw_scheme',radt_sw_scheme ) call mpas_pool_get_config(configs,'config_microp_scheme' ,microp_scheme ) - call mpas_pool_get_config(configs,'config_microp_re' ,config_microp_re ) call mpas_pool_get_array(mesh,'latCell',latCell) call mpas_pool_get_array(mesh,'lonCell',lonCell) @@ -428,10 +472,22 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i enddo enddo + aer_opt = 0 + do n = 1,nbndsw + do j = jts,jte + do k = kts,kte + do i = its,ite + tauaer_p(i,k,j,n) = 0._RKIND + ssaaer_p(i,k,j,n) = 1._RKIND + asyaer_p(i,k,j,n) = 0._RKIND + enddo + enddo + enddo + enddo + radiation_sw_select: select case (trim(radt_sw_scheme)) case("rrtmg_sw") - microp_select: select case(microp_scheme) case("mp_thompson","mp_thompson_aerosols","mp_wsm6") if(config_microp_re) then @@ -467,6 +523,63 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i case default end select microp_select + aerosol_select: select case(microp_scheme) + case("mp_thompson_aerosols") + call mpas_pool_get_array(mesh,'zgrid',zgrid) + call mpas_pool_get_array(diag_physics,'taod5502d',taod5502d) + call mpas_pool_get_array(diag_physics,'taod5503d',taod5503d) + + aer_opt = 3 + do j = jts,jte + do i = its,ite + ht_p(i,j) = zgrid(1,i) + if(xland_p(i,j)==1._RKIND) then + taer_type_p(i,j) = 1 + elseif(xland_p(i,j)==2._RKIND) then + taer_type_p(i,j) = 3 + endif + enddo + enddo + + !--- calculation of the 550 nm optical depth of the water- and ice-friendly aerosols: + call gt_aod( & + p_phy = pres_hyd_p , dz8w = dz_p , t_phy = t_p , qvapor = qv_p , & + nwfa = nwfa_p , nifa = nifa_p , taod5503d = taod5503d_p , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & + ) + + do j = jts,jte + do i = its,ite + taod5502d_p(i,j) = 0._RKIND + do k = kts,kte + taod5502d_p(i,j) = taod5502d_p(i,j) + taod5503d_p(i,k,j) + taod5503d(k,i) = taod5503d_p(i,k,j) + enddo + taod5502d(i) = taod5502d_p(i,j) + enddo + enddo + + !--- calculation of the spectral optical depth, single-scattering albedo, and asymmetry factor + !as a function of the 550 nm optical depth of the water- and ice-friendly aerosols: + call calc_aerosol_rrtmg_sw( & + ht = ht_p , dz8w = dz_p , & + p = pres_hyd_p , t3d = t_p , & + qv3d = qv_p , tauaer = tauaer_p , & + ssaaer = ssaaer_p , asyaer = asyaer_p , & + aod5502d = taod5502d_p , aod5503d = taod5503d_p , & + aer_type = taer_type_p , & + aer_aod550_opt = taer_aod550_opt , aer_angexp_opt = taer_angexp_opt , & + aer_ssa_opt = taer_ssa_opt , aer_asy_opt = taer_asy_opt , & + aer_aod550_val = aer_aod550_val , aer_angexp_val = aer_angexp_val , & + aer_ssa_val = aer_ssa_val , aer_asy_val = aer_asy_val , & + ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & + its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & + ) + + case default + end select aerosol_select + do j = jts,jte do k = kts,kte+2 do i = its,ite @@ -588,7 +701,6 @@ subroutine radiation_sw_from_MPAS(configs,mesh,state,time_lev,diag_physics,atm_i enddo case default - end select radiation_sw_select end subroutine radiation_sw_from_MPAS @@ -690,7 +802,6 @@ subroutine init_radiation_sw(dminfo,configs,mesh,atm_input,diag,diag_physics,sta !call to shortwave radiation scheme: radiation_sw_select: select case (trim(radt_sw_scheme)) - case ("rrtmg_sw") call rrtmg_initsw_forMPAS(dminfo) @@ -698,7 +809,6 @@ subroutine init_radiation_sw(dminfo,configs,mesh,atm_input,diag,diag_physics,sta call camradinit(dminfo,mesh,atm_input,diag,diag_physics,state,time_lev) case default - end select radiation_sw_select end subroutine init_radiation_sw @@ -766,12 +876,11 @@ subroutine driver_radiation_sw(itimestep,configs,mesh,state,time_lev,diag_physic !call to shortwave radiation scheme: radiation_sw_select: select case (trim(radt_sw_scheme)) - case ("rrtmg_sw") o3input = 0 if(config_o3climatology) o3input = 2 - call mpas_timer_start('RRTMG_sw') + call mpas_timer_start('rrtmg_swrad') call rrtmg_swrad( & p3d = pres_hyd_p , p8w = pres2_hyd_p , pi3d = pi_p , & t3d = t_p , t8w = t2_p , dz8w = dz_p , & @@ -788,18 +897,20 @@ subroutine driver_radiation_sw(itimestep,configs,mesh,state,time_lev,diag_physic o3clim = o3clim_p , gsw = gsw_p , swcf = swcf_p , & rthratensw = rthratensw_p , has_reqc = has_reqc , has_reqi = has_reqi , & has_reqs = has_reqs , re_cloud = recloud_p , re_ice = reice_p , & - re_snow = resnow_p , swupt = swupt_p , swuptc = swuptc_p , & - swdnt = swdnt_p , swdntc = swdntc_p , swupb = swupb_p , & - swupbc = swupbc_p , swdnb = swdnb_p , swdnbc = swdnbc_p , & - swddir = swddir_p , swddni = swddni_p , swddif = swddif_p , & + re_snow = resnow_p , aer_opt = aer_opt , tauaer3d = tauaer_p , & + ssaaer3d = ssaaer_p , asyaer3d = asyaer_p , swupt = swupt_p , & + swuptc = swuptc_p , swdnt = swdnt_p , swdntc = swdntc_p , & + swupb = swupb_p , swupbc = swupbc_p , swdnb = swdnb_p , & + swdnbc = swdnbc_p , swddir = swddir_p , swddni = swddni_p , & + swddif = swddif_p , & ids = ids , ide = ide , jds = jds , jde = jde , kds = kds , kde = kde , & ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) - call mpas_timer_stop('RRTMG_sw') + call mpas_timer_stop('rrtmg_swrad') case ("cam_sw") - call mpas_timer_start('CAMRAD_sw') + call mpas_timer_start('camrad_sw') call camrad( dolw = .false. , dosw = .true. , & p_phy = pres_hyd_p , p8w = pres2_hyd_p , & pi_phy = pi_p , t_phy = t_p , & @@ -847,10 +958,9 @@ subroutine driver_radiation_sw(itimestep,configs,mesh,state,time_lev,diag_physic ims = ims , ime = ime , jms = jms , jme = jme , kms = kms , kme = kme , & its = its , ite = ite , jts = jts , jte = jte , kts = kts , kte = kte & ) - call mpas_timer_stop('CAMRAD_sw') + call mpas_timer_stop('camrad_sw') case default - end select radiation_sw_select !copy local arrays to MPAS grid: diff --git a/src/core_atmosphere/physics/mpas_atmphys_vars.F b/src/core_atmosphere/physics/mpas_atmphys_vars.F index 02ba4cf9ce..3870807407 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_vars.F +++ b/src/core_atmosphere/physics/mpas_atmphys_vars.F @@ -598,6 +598,35 @@ module mpas_atmphys_vars snowsi_p, &!snow depth over seaice [m] icedepth_p !seaice thickness [m] +!================================================================================================================= +!... variables and arrays related to the calculation of the optical properties of aerosols: to date, the only kind +! of aerosols included in MPAS are the "water-friendly" and "ice-friendly" aerosols used in the Thompson cloud +! cloud microphysics scheme. +!================================================================================================================= + + integer,parameter:: taer_aod550_opt = 2!input option for nwfa, nifa optical depth at 500 nm. + integer,parameter:: taer_angexp_opt = 3!input option for nwfa, nifa aerosol Angstrom exponent. + integer,parameter:: taer_ssa_opt = 3!input option for nwfa, nifa aerosol single-scattering albedo. + integer,parameter:: taer_asy_opt = 3!input option for nwfa, nifa aerosol asymmetry factor. + + integer:: aer_opt !=[0,3] : 0 for no aerosols, 3 for "water-" and "ice-friendly" aerosols. + integer,dimension(:,:),allocatable:: & + taer_type_p !=[1,2,3]: 1 for rural, 2 is urban and 3 is maritime in WRF. In MPAS, + !aer_type is initialized as a function of landmask (=1 over land; =2 over + !oceans. + + real(kind=RKIND),parameter:: aer_aod550_val = 0.12 + real(kind=RKIND),parameter:: aer_angexp_val = 1.3 + real(kind=RKIND),parameter:: aer_ssa_val = 0.85 + real(kind=RKIND),parameter:: aer_asy_val = 0.9 + + real(kind=RKIND),dimension(:,:),allocatable :: taod5502d_p!total aerosol optical depth at 550 nm [-] + real(kind=RKIND),dimension(:,:,:),allocatable:: taod5503d_p!aerosol optical depth at 550 nm [-] + + real(kind=RKIND),dimension(:,:,:,:),allocatable:: tauaer_p !aerosol optical depth in RRTMG SW [-] + real(kind=RKIND),dimension(:,:,:,:),allocatable:: ssaaer_p !aerosol single scatterin albedo in RRTMG SW [-] + real(kind=RKIND),dimension(:,:,:,:),allocatable:: asyaer_p !aerosol asymmetry factor in RRTMG SW [-] + !================================================================================================================= !... variables and arrays related to parameterization of short-wave radiation: !================================================================================================================= diff --git a/src/core_atmosphere/physics/physics_wrf/Makefile b/src/core_atmosphere/physics/physics_wrf/Makefile index e9dabbc0ed..9a21470f53 100644 --- a/src/core_atmosphere/physics/physics_wrf/Makefile +++ b/src/core_atmosphere/physics/physics_wrf/Makefile @@ -20,12 +20,14 @@ OBJS = \ module_cu_kfeta.o \ module_mp_kessler.o \ module_mp_thompson.o \ + module_mp_thompson_aerosols.o \ module_mp_thompson_cldfra3.o \ module_mp_wsm6.o \ module_ra_cam.o \ module_ra_cam_support.o \ module_ra_rrtmg_lw.o \ module_ra_rrtmg_sw.o \ + module_ra_rrtmg_sw_aerosols.o \ module_ra_rrtmg_vinterp.o \ module_sf_bem.o \ module_sf_bep.o \ diff --git a/src/core_atmosphere/physics/physics_wrf/module_mp_thompson_aerosols.F b/src/core_atmosphere/physics/physics_wrf/module_mp_thompson_aerosols.F new file mode 100644 index 0000000000..48fb6fb641 --- /dev/null +++ b/src/core_atmosphere/physics/physics_wrf/module_mp_thompson_aerosols.F @@ -0,0 +1,214 @@ +!================================================================================================================= +!module_mp_thompson_aerosols includes subroutine gt_aod. gt_aod is called from subroutine radiation_sw_from_MPAS +!in mpas_atmphys_driver_radiation_sw.F. gt_aod calculates the 550 nm aerosol optical depth of "water-friendly" +!and "ice-friendly" aerosols from the Thompson cloud microphysics scheme. gt_aod was copied from WRF-4.0.2 (see +!module_radiation_driver.F). +!Laura D. Fowler (laura@ucar.edu) / 2019-01-13. + + module module_mp_thompson_aerosols + use mpas_atmphys_functions,only: rslf + use mpas_atmphys_utilities, only: physics_error_fatal,physics_message +#define FATAL_ERROR(M) call physics_error_fatal(M) +#define WRITE_MESSAGE(M) call physics_message(M) + + implicit none + private + public:: gt_aod + + + contains + + +!================================================================================================================= + SUBROUTINE gt_aod(p_phy,DZ8W,t_phy,qvapor, nwfa,nifa, taod5503d, & + & ims,ime, jms,jme, kms,kme, its,ite, jts,jte, kts,kte) + +! USE module_mp_thompson, only: RSLF + +! IMPLICIT NONE + + INTEGER, INTENT(IN):: ims,ime, jms,jme, kms,kme, & + & its,ite, jts,jte, kts,kte + + REAL, DIMENSION(ims:ime,kms:kme,jms:jme), INTENT(IN) :: & + & t_phy,p_phy, DZ8W, & + & qvapor, nifa, nwfa + REAL,DIMENSION(ims:ime,kms:kme,jms:jme),INTENT(INOUT):: taod5503d + + !..Local variables. + + REAL, DIMENSION(its:ite,kts:kte,jts:jte):: AOD_wfa, AOD_ifa + REAL:: RH, a_RH,b_RH, rh_d,rh_f, rhoa,qvsat, unit_bext1,unit_bext3 + REAL:: ntemp + INTEGER :: i, k, j, RH_idx, RH_idx1, RH_idx2, t_idx + INTEGER, PARAMETER:: rind=8 + REAL, DIMENSION(rind), PARAMETER:: rh_arr = & + & (/10., 60., 70., 80., 85., 90., 95., 99.8/) + REAL, DIMENSION(rind,4,2) :: lookup_tabl ! RH, temp, water-friendly, ice-friendly + + lookup_tabl(1,1,1) = 5.73936E-15 + lookup_tabl(1,1,2) = 2.63577E-12 + lookup_tabl(1,2,1) = 5.73936E-15 + lookup_tabl(1,2,2) = 2.63577E-12 + lookup_tabl(1,3,1) = 5.73936E-15 + lookup_tabl(1,3,2) = 2.63577E-12 + lookup_tabl(1,4,1) = 5.73936E-15 + lookup_tabl(1,4,2) = 2.63577E-12 + + lookup_tabl(2,1,1) = 6.93515E-15 + lookup_tabl(2,1,2) = 2.72095E-12 + lookup_tabl(2,2,1) = 6.93168E-15 + lookup_tabl(2,2,2) = 2.72092E-12 + lookup_tabl(2,3,1) = 6.92570E-15 + lookup_tabl(2,3,2) = 2.72091E-12 + lookup_tabl(2,4,1) = 6.91833E-15 + lookup_tabl(2,4,2) = 2.72087E-12 + + lookup_tabl(3,1,1) = 7.24707E-15 + lookup_tabl(3,1,2) = 2.77219E-12 + lookup_tabl(3,2,1) = 7.23809E-15 + lookup_tabl(3,2,2) = 2.77222E-12 + lookup_tabl(3,3,1) = 7.23108E-15 + lookup_tabl(3,3,2) = 2.77201E-12 + lookup_tabl(3,4,1) = 7.21800E-15 + lookup_tabl(3,4,2) = 2.77111E-12 + + lookup_tabl(4,1,1) = 8.95130E-15 + lookup_tabl(4,1,2) = 2.87263E-12 + lookup_tabl(4,2,1) = 9.01582E-15 + lookup_tabl(4,2,2) = 2.87252E-12 + lookup_tabl(4,3,1) = 9.13216E-15 + lookup_tabl(4,3,2) = 2.87241E-12 + lookup_tabl(4,4,1) = 9.16219E-15 + lookup_tabl(4,4,2) = 2.87211E-12 + + lookup_tabl(5,1,1) = 1.06695E-14 + lookup_tabl(5,1,2) = 2.96752E-12 + lookup_tabl(5,2,1) = 1.06370E-14 + lookup_tabl(5,2,2) = 2.96726E-12 + lookup_tabl(5,3,1) = 1.05999E-14 + lookup_tabl(5,3,2) = 2.96702E-12 + lookup_tabl(5,4,1) = 1.05443E-14 + lookup_tabl(5,4,2) = 2.96603E-12 + + lookup_tabl(6,1,1) = 1.37908E-14 + lookup_tabl(6,1,2) = 3.15081E-12 + lookup_tabl(6,2,1) = 1.37172E-14 + lookup_tabl(6,2,2) = 3.15020E-12 + lookup_tabl(6,3,1) = 1.36362E-14 + lookup_tabl(6,3,2) = 3.14927E-12 + lookup_tabl(6,4,1) = 1.35287E-14 + lookup_tabl(6,4,2) = 3.14817E-12 + + lookup_tabl(7,1,1) = 2.26019E-14 + lookup_tabl(7,1,2) = 3.66798E-12 + lookup_tabl(7,2,1) = 2.24435E-14 + lookup_tabl(7,2,2) = 3.66540E-12 + lookup_tabl(7,3,1) = 2.23254E-14 + lookup_tabl(7,3,2) = 3.66173E-12 + lookup_tabl(7,4,1) = 2.20496E-14 + lookup_tabl(7,4,2) = 3.65796E-12 + + lookup_tabl(8,1,1) = 4.41983E-13 + lookup_tabl(8,1,2) = 7.50091E-11 + lookup_tabl(8,2,1) = 3.93335E-13 + lookup_tabl(8,2,2) = 6.79097E-11 + lookup_tabl(8,3,1) = 3.45569E-13 + lookup_tabl(8,3,2) = 6.07845E-11 + lookup_tabl(8,4,1) = 2.96971E-13 + lookup_tabl(8,4,2) = 5.36085E-11 + + DO j=jts,jte + DO k=kts,kte + DO i=its,ite + AOD_wfa(i,k,j) = 0. + AOD_ifa(i,k,j) = 0. + END DO + END DO + END DO + + DO j=jts,jte + DO k=kts,kte + DO i=its,ite + rhoa = p_phy(i,k,j)/(287.*t_phy(i,k,j)) + t_idx = MAX(1, MIN(nint(10.999-0.0333*t_phy(i,k,j)),4)) + qvsat = rslf(p_phy(i,k,j),t_phy(i,k,j)) + RH = MIN(98., MAX(10.1, qvapor(i,k,j)/qvsat*100.)) + + !..Get the index for the RH array element + + if (RH .lt. 60) then + RH_idx1 = 1 + RH_idx2 = 2 + elseif (RH .ge. 60 .AND. RH.lt.80) then + a_RH = 0.1 + b_RH = -4 + RH_idx = nint(a_RH*RH+b_RH) + rh_d = rh-rh_arr(rh_idx) + if (rh_d .lt. 0) then + RH_idx1 = RH_idx-1 + RH_idx2 = RH_idx + else + RH_idx1 = RH_idx + RH_idx2 = RH_idx+1 + if (RH_idx2.gt.rind) then + RH_idx2 = rind + RH_idx1 = rind-1 + endif + endif + else + a_RH = 0.2 + b_RH = -12. + RH_idx = MIN(rind, nint(a_RH*RH+b_RH)) + rh_d = rh-rh_arr(rh_idx) + if (rh_d .lt. 0) then + RH_idx1 = RH_idx-1 + RH_idx2 = RH_idx + else + RH_idx1 = RH_idx + RH_idx2 = RH_idx+1 + if (RH_idx2.gt.rind) then + RH_idx2 = rind + RH_idx1 = rind-1 + endif + endif + endif + + !..RH fraction to be used + + rh_f = MAX(0., MIN(1.0, (rh/(100-rh)-rh_arr(rh_idx1) & + & /(100-rh_arr(rh_idx1))) & + & /(rh_arr(rh_idx2)/(100-rh_arr(rh_idx2)) & + & -rh_arr(rh_idx1)/(100-rh_arr(rh_idx1))) )) + + + unit_bext1 = lookup_tabl(RH_idx1,t_idx,1) & + & + (lookup_tabl(RH_idx2,t_idx,1) & + & - lookup_tabl(RH_idx1,t_idx,1))*rh_f + unit_bext3 = lookup_tabl(RH_idx1,t_idx,2) & + & + (lookup_tabl(RH_idx2,t_idx,2) & + & - lookup_tabl(RH_idx1,t_idx,2))*rh_f + + ntemp = MAX(1., MIN(99999.E6, nwfa(i,k,j))) + AOD_wfa(i,k,j) = unit_bext1*ntemp*dz8w(i,k,j)*rhoa + + ntemp = MAX(0.01, MIN(9999.E6, nifa(i,k,j))) + AOD_ifa(i,k,j) = unit_bext3*ntemp*dz8w(i,k,j)*rhoa + + END DO + END DO + END DO + + DO j=jts,jte + DO k=kts,kte + DO i=its,ite + taod5503d(i,k,j) = aod_wfa(i,k,j) + aod_ifa(i,k,j) + END DO + END DO + END DO + + END SUBROUTINE gt_aod + +!================================================================================================================= + end module module_mp_thompson_aerosols +!================================================================================================================= diff --git a/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw.F b/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw.F index be36c4afb1..49f8169a45 100644 --- a/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw.F +++ b/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw.F @@ -9840,6 +9840,13 @@ MODULE module_ra_rrtmg_sw !> microphysics scheme as inputs to the subroutine rrtmg_swrad. revised the initialization of arrays rel, !> rei, and res, accordingly. !> Laura D. Fowler (laura@ucar.edu) / 2016-07-07. +!> * added the optional arguments, tauaer3d, ssaaer3d, and asyaer3d to include the optical depth, single +!> scattering albedo, and asymmetry factor of aerosols. to date, the only kind of aerosols included in MPAS +!> are the "water-friendly" and "ice-friendly" aerosols used in the Thompson cloud microphysics scheme. +!> Laura D. Fowler (laura@ucar.edu) / 2024-05-16. +!> * added the option aer_opt in the argument list. revised the initialization of arrays tauaer,ssaaer, and +!> asmaer to include the optical properties of aerosols. +!> Laura D. Fowler (laura@ucar.edu) / 2024-05-16. !MPAS specfic end. #else @@ -9873,6 +9880,7 @@ subroutine rrtmg_swrad( & noznlevels,pin,o3clim,gsw,swcf,rthratensw, & has_reqc,has_reqi,has_reqs,re_cloud, & re_ice,re_snow, & + aer_opt,tauaer3d,ssaaer3d,asyaer3d, & swupt,swuptc,swdnt,swdntc, & swupb,swupbc,swdnb,swdnbc, & swupflx, swupflxc, swdnflx, swdnflxc, & @@ -9909,6 +9917,12 @@ subroutine rrtmg_swrad( & real,intent(in),dimension(1:noznlevels),optional:: pin real,intent(in),dimension(ims:ime,1:noznlevels,jms:jme),optional:: o3clim +!--- additional input arguments of the aerosol optical depth, single scattering albedo, and asymmetry factor. to +! date, the only kind of aerosols included in MPAS are the "water-friendly" and "ice-friendly" aerosols used +! in the Thompson cloud microphysics scheme: + integer,intent(in),optional:: aer_opt + real,intent(in),dimension(ims:ime,kms:kme,jms:jme,1:nbndsw),optional:: tauaer3d,ssaaer3d,asyaer3d + !--- inout arguments: real,intent(inout),dimension(ims:ime,jms:jme):: coszr,gsw,swcf real,intent(inout),dimension(ims:ime,jms:jme),optional:: & @@ -9967,7 +9981,6 @@ subroutine rrtmg_swrad( & !--- additional local variables related to the implementation of aerosols in rrtmg_swrad in WRF 3.8. ! In WRF 3.8, these variables are in the argument list of subroutine rrtmg_swrad, but are made ! local here: - integer:: aer_opt real,dimension(1,kts:kte+1,naerec):: ecaer !--- set trace gas volume mixing ratios, 2005 values, IPCC (2007): @@ -10131,7 +10144,6 @@ subroutine rrtmg_swrad( & enddo !--- initialization of aerosol optical properties: - aer_opt = 0 do n = 1, ncol do k = 1, nlay do na = 1, naerec @@ -10367,13 +10379,27 @@ subroutine rrtmg_swrad( & fsfcmcl) !--- initialization of aerosol optical properties: - do nb = 1, nbndsw - do k = kts, kte+1 + if(present(tauaer3d) .and. present(ssaaer3d) .and. present(asyaer3d)) then + do nb = 1, nbndsw + do k = kts, kte + tauaer(ncol,k,nb) = tauaer3d(i,k,j,nb) + ssaaer(ncol,k,nb) = ssaaer3d(i,k,j,nb) + asmaer(ncol,k,nb) = asyaer3d(i,k,j,nb) + enddo + k = kte+1 tauaer(ncol,k,nb) = 0. ssaaer(ncol,k,nb) = 1. asmaer(ncol,k,nb) = 0. enddo - enddo + else + do nb = 1, nbndsw + do k = kts, kte+1 + tauaer(ncol,k,nb) = 0. + ssaaer(ncol,k,nb) = 1. + asmaer(ncol,k,nb) = 0. + enddo + enddo + endif do na = 1, naerec do k = kts, kte+1 diff --git a/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw_aerosols.F b/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw_aerosols.F new file mode 100644 index 0000000000..6f92f4c8bf --- /dev/null +++ b/src/core_atmosphere/physics/physics_wrf/module_ra_rrtmg_sw_aerosols.F @@ -0,0 +1,924 @@ +!================================================================================================================= +!module_ra_rrtmg_sw_aerosols includes subroutine calc_aerosol_rrtmg_sw. subroutine calc_aerosol_rrtmg_sw is called +!from subroutine radiation_sw_from_MPAS in mpas_atmphys_driver_radiation_sw.F. calc_aerosol_rrtmg_sw calculates +!the optical properties (aerosol optical depth,asymmetry factor,and single-scattering albedo) of "water-friendly" +!and "ice-friendly" aerosols from the Thompson cloud microphysics scheme. calc_aerosol_rrtmg_sw was copied from +!from WRF-4.0.2 (see module_radiation_driver.F). +!Laura D. Fowler (laura@ucar.edu) / 2024-05-16. + + module module_ra_rrtmg_sw_aerosols + use mpas_log + use mpas_atmphys_functions,only: rslf + use mpas_atmphys_utilities, only: physics_error_fatal,physics_message +#define FATAL_ERROR(M) call physics_error_fatal(M) +#define WRITE_MESSAGE(M) call physics_message(M) + + implicit none + private + public:: calc_aerosol_rrtmg_sw + + + contains + + +!================================================================================================================= +!-------------------------------------------------------------- +! INDICES CONVENTION +!-------------------------------------------------------------- +! kms:kme define the range for full-level indices +! kts:kte define the range for half-level indices +! +! kms=1 is the first full level at surface +! kts=1 is the first half level at surface +! +! kme is the last full level at toa +! kte is the last half level at toa +! +! There is one more full level than half levels. +! Therefore, kme=kte+1. I checked it in one of my +! simulations: +! +! namelist.input: +! s_vert=1 e_vert=28 +! code: +! kms= 1 kts= 1 +! kms=28 kte=27 +! +! In the vertical dimension there is no tiling for +! parallelization as in the horizontal dimensions. +! For i-dim and j-dim, the t-indices define the +! range of indices over which each tile runs. +!-------------------------------------------------------------- +! +! namelist options: +! aer_aod550_opt = [1,2] : +! 1 = input constant value for AOD at 550 nm from namelist. +! In this case, the value is read from aer_aod550_val; +! 2 = input value from auxiliary input 15. It is a time-varying 2D grid in netcdf wrf-compatible +! format. The default operation is aer_aod550_opt=1 and aer_aod550_val=0.12 +! aer_angexp_opt = [1,2,3] : +! 1 = input constant value for Angstrom exponent from namelist. In this case, the value is read +! from aer_angexp_val; +! 2 = input value from auxiliary input 15, as in aer_aod550_opt; +! 3 = Angstrom exponent value estimated from the aerosol type defined in aer_type, and modulated +! with the RH in WRF. Default operation is aer_angexp_opt = 1, and aer_angexp_val=1.3. +! aer_ssa_opt and aer_asy_opt are similar to aer_angexp_opt. +! +! aer_type = [1,2,3] : 1 for rural, 2 is urban and 3 is maritime. +!-------------------------------------------------------------- + +subroutine calc_aerosol_rrtmg_sw(ht,dz8w,p,t3d,qv3d,aer_type, & + aer_aod550_opt, aer_angexp_opt, aer_ssa_opt, aer_asy_opt, & + aer_aod550_val, aer_angexp_val, aer_ssa_val, aer_asy_val, & + aod5502d, angexp2d, aerssa2d, aerasy2d, & + ims,ime,jms,jme,kms,kme,its,ite,jts,jte,kts,kte, & + tauaer, ssaaer, asyaer, aod5503d ) + + ! constants + integer, parameter :: N_BANDS=14 + ! local index variables + integer :: i,j,k,nb + + real :: lower_wvl(N_BANDS),upper_wvl(N_BANDS) + data (lower_wvl(i),i=1,N_BANDS) /3.077,2.500,2.150,1.942,1.626,1.299,1.242,0.7782,0.6250,0.4415,0.3448,0.2632,0.2000,3.846/ + data (upper_wvl(i),i=1,N_BANDS) /3.846,3.077,2.500,2.150,1.942,1.626,1.299,1.2420,0.7782,0.6250,0.4415,0.3448,0.2632,12.195/ + + ! I/O variables + real, dimension(ims:ime, kms:kme, jms:jme), intent(in) :: p, & ! pressure (Pa) + t3d, & ! temperature (K) + dz8w, & ! dz between full levels (m) + qv3d ! water vapor mixing ratio (kg/kg) + integer, intent(in) :: ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte +!-- MPAS modifications: aer_type is a function of the land-sea mask, and set to 1 over land (or rural classification in WRF), +! and set to 0 over oceans (or maritime classification in WRF): +! integer, intent(in) :: aer_type + integer, dimension(ims:ime,jms:jme), intent(in):: aer_type + character(len=256):: wrf_err_message +!-- end MPAS modifications.. + integer, intent(in) :: aer_aod550_opt, aer_angexp_opt, aer_ssa_opt, aer_asy_opt + real, intent(in) :: aer_aod550_val, aer_angexp_val, aer_ssa_val, aer_asy_val + + real, dimension(ims:ime, jms:jme), intent(in) :: ht + real, dimension(ims:ime, jms:jme), optional, intent(inout) :: aod5502d, angexp2d, aerssa2d, aerasy2d + real, dimension(ims:ime, kms:kme, jms:jme, 1:N_BANDS), intent(inout) :: tauaer, ssaaer, asyaer + + real, dimension(ims:ime, kms:kme, jms:jme), optional, intent(in) :: aod5503d ! trude + + ! local variables + real :: angexp_val,aod_rate,x,xy,xx + real, dimension(ims:ime, jms:jme, 1:N_BANDS) :: aod550spc + real, dimension(ims:ime, kms:kme, jms:jme, 1:N_BANDS) :: aod550spc3d ! trude + real, dimension(ims:ime, kms:kme, jms:jme) :: rh ! relative humidity + + call calc_relative_humidity(p,t3d,qv3d, & + ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh ) + + aer_aod550_opt_select: select case(aer_aod550_opt) + !case(0) + ! reserved for climatology + case(1) + if (aer_aod550_val .lt. 0) then + write(wrf_err_message,'("aer_aod550_val must be positive. Negative value ",F7.4," found")') aer_aod550_val + FATAL_ERROR(trim(wrf_err_message)) + end if + write( wrf_err_message, '("aer_aod550_opt=",I1,": AOD@550 nm fixed to value ",F6.3)') aer_aod550_opt,aer_aod550_val + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + aod5502d(i,j)=aer_aod550_val + end do + end do + + case(2) + if (.not.(present(aod5502d))) then + write(wrf_err_message,*) 'Expected gridded total AOD@550 nm, but it is not in the radiation driver' + FATAL_ERROR(trim(wrf_err_message)) + end if + if (minval(aod5502d) .lt. 0) then + FATAL_ERROR('AOD@550 must be positive. Negative value(s) found in auxinput') + end if + call mpas_log_write('--- aer_aod550_opt = $i: AOD@550 nm read from auxinput min = $r max = $r', & + intArgs=(/aer_aod550_opt/),realArgs=(/minval(aod5502d(its:ite,jts:jte)), & + maxval(aod5502d(its:ite,jts:jte))/)) + case default + write(wrf_err_message,*) 'Expected aer_aod550_opt=[1,2]. Got',aer_aod550_opt + FATAL_ERROR(trim(wrf_err_message)) + end select aer_aod550_opt_select + + + ! here, the 3d aod550 is calculated according to the aer_angexp_opt case + aer_angexp_opt_select: select case(aer_angexp_opt) + !case(0) + ! reserved for climatology + case(1) + if (aer_angexp_val .lt. -0.3) then + write(wrf_err_message,'("WARNING: aer_angexp_val limited to -0.3. Illegal value ",F7.4," found")') aer_angexp_val + WRITE_MESSAGE(trim(wrf_err_message)) + end if + if (aer_angexp_val .gt. 2.5) then + write(wrf_err_message,'("WARNING: aer_angexp_val limited to 2.5. Illegal value ",F7.4," found")') aer_angexp_val + WRITE_MESSAGE(trim(wrf_err_message)) + end if + write( wrf_err_message , '("aer_angexp_opt=",I1,": Aerosol Angstrom exponent fixed to value ",F6.3)') & + aer_angexp_opt,aer_angexp_val + WRITE_MESSAGE(trim(wrf_err_message)) + angexp_val=min(2.5,max(-0.3,aer_angexp_val)) + do nb=1,N_BANDS + if ((angexp_val .lt. 0.999) .or. (angexp_val .gt. 1.001)) then + aod_rate=((0.55**angexp_val)*(upper_wvl(nb)**(1.-angexp_val)- & + lower_wvl(nb)**(1.-angexp_val)))/((1.-angexp_val)*(upper_wvl(nb)-lower_wvl(nb))) + else + aod_rate=(0.55/(upper_wvl(nb)-lower_wvl(nb)))*log(upper_wvl(nb)/lower_wvl(nb)) + end if + do j=jts,jte + do i=its,ite + aod550spc(i,j,nb)=aod5502d(i,j)*aod_rate + end do + end do + end do + do j=jts,jte + do i=its,ite + angexp2d(i,j)=angexp_val + end do + end do + case(2) + if (.not.(present(angexp2d))) then + write(wrf_err_message,*) 'Expected gridded aerosol Angstrom exponent, but it is not in the radiation driver' + FATAL_ERROR(trim(wrf_err_message)) + end if + write( wrf_err_message, '("aer_angexp_opt=",I1,": Angstrom exponent read from auxinput (min=",F6.3," max=",F6.3,")")') & + aer_angexp_opt,minval(angexp2d),maxval(angexp2d) + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + angexp_val=min(2.5,max(-0.3,angexp2d(i,j))) + do nb=1,N_BANDS + if ((angexp_val .lt. 0.999) .or. (angexp_val .gt. 1.001)) then + aod_rate=((0.55**angexp_val)*(upper_wvl(nb)**(1.-angexp_val)- & + lower_wvl(nb)**(1.-angexp_val)))/((1.-angexp_val)*(upper_wvl(nb)-lower_wvl(nb))) + else + aod_rate=(0.55/(upper_wvl(nb)-lower_wvl(nb)))*log(upper_wvl(nb)/lower_wvl(nb)) + end if + aod550spc(i,j,nb)=aod5502d(i,j)*aod_rate + end do + end do + end do + + case(3) + ! spectral disaggregation based on a prescribed aerosol type and relative humidity + call mpas_log_write('--- aer_angexp_opt = $i: angstrom exponent calculated from RH and aer_type $i', & + intArgs=(/aer_angexp_opt,aer_type/)) + call calc_spectral_aod_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type,aod5502d, & + aod550spc, & + aod5503d, aod550spc3d) ! trude + +!-- MPAS modifications: we do not need the variable angexp2d outside of subroutine calc_aerosol_rrtmg_sw. Since it is +! declared as an optional variable, we simply test if it is present or not (Laura D. Fowler/2019-01-13): + if(present(angexp2d)) then + do j=jts,jte + do i=its,ite + angexp2d(i,j) = 0.0 + enddo + enddo + + if (present(aod5503d)) then + do j=jts,jte + do k=kts,kte + do i=its,ite + xy=0 + xx=0 + do nb=8,N_BANDS-3 ! bands between 0.4 and 1.0 um + ! the slope of a linear regression with intercept=0 is m=E(xy)/E(x^2), where y=m*x + x=log(0.5*(lower_wvl(nb)+upper_wvl(nb))/0.55) + xy=xy+x*log(aod550spc3d(i,k,j,nb)/aod5503d(i,k,j)) + xx=xx+x*x + end do + angexp2d(i,j) = angexp2d(i,j) - (xy/(N_BANDS-3-8+1))/(xx/(N_BANDS-3-8+1)) + enddo + enddo + enddo + else + + ! added July, 16th, 2013: angexp2d is in the wrfout when aer_angexp_opt=3. It is the average + ! value in the spectral bands between 0.4 and 1. um + do j=jts,jte + do i=its,ite + xy=0 + xx=0 + do nb=8,N_BANDS-3 ! bands between 0.4 and 1.0 um + ! the slope of a linear regression with intercept=0 is m=E(xy)/E(x^2), where y=m*x + x=log(0.5*(lower_wvl(nb)+upper_wvl(nb))/0.55) + xy=xy+x*log(aod550spc(i,j,nb)/aod5502d(i,j)) + xx=xx+x*x + end do + angexp2d(i,j)=-(xy/(N_BANDS-3-8+1))/(xx/(N_BANDS-3-8+1)) + end do + end do + endif + endif ! end MPAS modifications. + + case default + write(wrf_err_message,*) 'Expected aer_angexp_opt=[1,2,3]. Got',aer_angexp_opt + FATAL_ERROR(trim(wrf_err_message)) + end select aer_angexp_opt_select + +!..If 3D AOD (at 550nm) was provided explicitly, then no need to assume a +!.. vertical distribution, just use what was provided. (Trude) + + if (present(aod5503d)) then + do nb=1,N_BANDS + do j=jts,jte + do k=kts,kte + do i=its,ite + tauaer(i,k,j,nb) = aod550spc3d(i,k,j,nb) + enddo + enddo + enddo + enddo + else + ! exponental -vertical- profile + call aod_profiler(ht,dz8w,aod550spc,n_bands,ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte,tauaer ) + endif + + aer_ssa_opt_select: select case(aer_ssa_opt) + !case(0) + ! reserved for climatology + case(1) + if ((aer_ssa_val .lt. 0) .or. (aer_ssa_val .gt. 1)) then + write(wrf_err_message,'("aer_ssa_val must be within [0,1]. Illegal value ",F7.4," found")') aer_ssa_val + FATAL_ERROR(trim(wrf_err_message)) + end if + write( wrf_err_message, & + '("aer_ssa_opt=",I1,": single-scattering albedo fixed to value ",F6.3)') aer_ssa_opt,aer_ssa_val + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + do k=kts,kte + do nb=1,N_BANDS + ! no spectral disaggregation + ssaaer(i,k,j,nb)=aer_ssa_val + end do + end do + end do + end do + do j=jts,jte + do i=its,ite + aerssa2d(i,j)=aer_ssa_val + end do + end do + + case(2) + if (.not.(present(aerssa2d))) then + write(wrf_err_message,*) 'Expected gridded aerosol single-scattering albedo, but it is not in the radiation driver' + FATAL_ERROR(trim(wrf_err_message)) + end if + if ((minval(aerssa2d) .lt. 0) .or. (maxval(aerssa2d) .gt. 1)) then + write(wrf_err_message,*) 'Aerosol single-scattering albedo must be within [0,1]. ' // & + 'Out of bounds value(s) found in auxinput' + FATAL_ERROR(trim(wrf_err_message)) + end if + write( wrf_err_message, '("aer_ssa_opt=",I1,": single-scattering albedo from auxinput (min=",F6.3," max=",F6.3,")")') & + aer_ssa_opt,minval(aerssa2d),maxval(aerssa2d) + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + do k=kts,kte + do nb=1,N_BANDS + ! no spectral disaggregation + ssaaer(i,k,j,nb)=aerssa2d(i,j) + end do + end do + end do + end do + + case(3) + ! spectral disaggregation based on a prescribed aerosol type and relative humidity + call mpas_log_write('--- aer_ssa_opt = $i: single-scattering albedo calculated from RH and aer_type $i', & + intArgs=(/aer_ssa_opt,aer_type/)) + call calc_spectral_ssa_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type,ssaaer ) +!-- MPAS modifications: we do not need the variable aerssa2d outside of subroutine calc_aerosol_rrtmg_sw. Since it is +! declared as an optional variable, we simply test if it is present or not (Laura D. Fowler/2018=04-09): + if(present(aerssa2d)) then + ! added July, 16th, 2013: aerssa2d is in the wrfout when aer_ssa_opt=3. It is the average + ! value in the spectral bands between 0.4 and 1. um + do j=jts,jte + do i=its,ite + aerssa2d(i,j)=0 + end do + end do + do j=jts,jte + do i=its,ite + do nb=8,N_BANDS-3 ! bands between 0.4 and 1.0 um + aerssa2d(i,j)=aerssa2d(i,j)+ssaaer(i,kts,j,nb) + end do + aerssa2d(i,j)=aerssa2d(i,j)/(N_BANDS-3-8+1) + end do + end do + endif ! end MPAS modifications. + + case default + write(wrf_err_message,*) 'Expected aer_ssa_opt=[1,2,3]. Got',aer_ssa_opt + FATAL_ERROR(trim(wrf_err_message)) + end select aer_ssa_opt_select + + aer_asy_opt_select: select case(aer_asy_opt) + !case(0) + ! reserved for climatology + case(1) + if ((aer_asy_val .lt. 0) .or. (aer_asy_val .gt. 1)) then + write(wrf_err_message,'("aer_asy_val must be withing [-1,1]. Illegal value ",F7.4," found")') aer_asy_val + FATAL_ERROR(trim(wrf_err_message)) + end if + write( wrf_err_message , '("aer_asy_opt=",I1,": asymmetry parameter fixed to value ",F6.3)') aer_asy_opt,aer_asy_val + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + do k=kts,kte + do nb=1,N_BANDS + asyaer(i,k,j,nb)=aer_asy_val + end do + end do + end do + end do + do j=jts,jte + do i=its,ite + aerasy2d(i,j)=aer_asy_val + end do + end do + + case(2) + if (.not.(present(aerasy2d))) then + write(wrf_err_message,*) 'Expected gridded aerosol asymmetry parameter, but it is not in the radiation driver' + FATAL_ERROR(trim(wrf_err_message)) + end if + if ((minval(aerasy2d) .lt. -1) .or. (maxval(aerasy2d) .gt. 1)) then + FATAL_ERROR('Aerosol asymmetry parameter must be within [-1,1]. Out of bounds value(s) found in auxinput') + end if + write( wrf_err_message, '("aer_asy_opt=",I1,": asymmetry parameter read from auxinput (min=",F6.3," max=",F6.3,")")') & + aer_asy_opt,minval(aerasy2d),maxval(aerasy2d) + WRITE_MESSAGE(trim(wrf_err_message)) + do j=jts,jte + do i=its,ite + do k=kts,kte + do nb=1,N_BANDS + asyaer(i,k,j,nb)=aerasy2d(i,j) + end do + end do + end do + end do + + case(3) + ! spectral disaggregation based on a prescribed aerosol type and relative humidity + call mpas_log_write('--- aer_asy_opt = $i: asymmetry parameter calculated from RH and aer_type $i', & + intArgs=(/aer_asy_opt,aer_type/)) + call calc_spectral_asy_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type,asyaer ) +!-- MPAS modifications: we do not need the variable aerasy2d outside of subroutine calc_aerosol_rrtmg_sw. Since it is +! declared as an optional variable, we simply test if it is present or not (Laura D. Fowler/2018=04-09): + if(present(aerasy2d)) then + ! added July, 16th, 2013: aerasy2d is in the wrfout when aer_asy_opt=3. It is the average + ! value in the spectral bands between 0.4 and 1. um + do j=jts,jte + do i=its,ite + aerasy2d(i,j)=0 + end do + end do + do j=jts,jte + do i=its,ite + do nb=8,N_BANDS-3 ! bands between 0.4 and 1.0 um + aerasy2d(i,j)=aerasy2d(i,j)+asyaer(i,kts,j,nb) + end do + aerasy2d(i,j)=aerasy2d(i,j)/(N_BANDS-3-8+1) + end do + end do + endif ! end MPAS modifications. + + case default + write(wrf_err_message,*) 'Expected aer_asy_opt=[1,2,3]. Got',aer_asy_opt + FATAL_ERROR(trim(wrf_err_message)) + end select aer_asy_opt_select + +end subroutine calc_aerosol_rrtmg_sw + +subroutine calc_spectral_aod_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type,aod550, & + tauaer, & + aod550_3d, tauaer3d) ! trude + + implicit none + + ! constants + integer, parameter :: N_AER_TYPES=3 + integer, parameter :: N_RH=8 + integer, parameter :: N_BANDS=14 + integer, parameter :: N_INT_POINTS=4 + + ! I/O variables + integer, intent(in) :: ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte +!- MPAS modifications: aer_type is a function of the land-sea mask, and set to 1 over land (or rural classification in WRF), +! and set to 0 over oceans (or maritime classification in WRF): +! integer, intent(in) :: aer_type + integer:: aer_t + integer, dimension(ims:ime,jms:jme), intent(in):: aer_type +!- end MPAS modifications (Laura D. Fowler/2018=04-09). + + real, dimension(ims:ime, kms:kme, jms:jme), intent(in) :: rh ! relative humidity + real, dimension(ims:ime, jms:jme), intent(in) :: aod550 ! Total AOD at 550 nm at surface + real, dimension(ims:ime, jms:jme, 1:N_BANDS), intent(inout) :: tauaer ! Total spectral aerosol optical depth at surface + + ! ++ Trude + real, dimension(ims:ime, kms:kme, jms:jme), optional, intent(in) :: aod550_3d ! 3D AOD at 550 nm + real, dimension(ims:ime, kms:kme, jms:jme, 1:N_BANDS), optional, intent(inout) :: tauaer3d ! + ! -- Trude + + ! local variables + integer :: i,j,k,ib,imax,imin,ii,jj,kk + real :: rhs(N_RH),lj + real :: raod_lut(N_AER_TYPES,N_BANDS,N_RH) + + ! relative humidity steps + data (rhs(i),i=1,8) /0.,50.,70.,80.,90.,95.,98.,99./ + + ! aer_type = 1 : rural (SF79) + data (raod_lut(1,ib,1),ib=1,N_BANDS) /0.0735,0.0997,0.1281,0.1529,0.1882,0.2512,0.3010,0.4550,0.7159,1.0357, & + 1.3582,1.6760,2.2523,0.0582/ + data (raod_lut(1,ib,2),ib=1,N_BANDS) /0.0741,0.1004,0.1289,0.1537,0.1891,0.2522,0.3021,0.4560,0.7166,1.0351, & + 1.3547,1.6687,2.2371,0.0587/ + data (raod_lut(1,ib,3),ib=1,N_BANDS) /0.0752,0.1017,0.1304,0.1554,0.1909,0.2542,0.3042,0.4580,0.7179,1.0342, & + 1.3485,1.6559,2.2102,0.0596/ + data (raod_lut(1,ib,4),ib=1,N_BANDS) /0.0766,0.1034,0.1323,0.1575,0.1932,0.2567,0.3068,0.4605,0.7196,1.0332, & + 1.3411,1.6407,2.1785,0.0608/ + data (raod_lut(1,ib,5),ib=1,N_BANDS) /0.0807,0.1083,0.1379,0.1635,0.1998,0.2639,0.3143,0.4677,0.7244,1.0305, & + 1.3227,1.6031,2.1006,0.0644/ + data (raod_lut(1,ib,6),ib=1,N_BANDS) /0.0884,0.1174,0.1482,0.1746,0.2118,0.2769,0.3277,0.4805,0.7328,1.0272, & + 1.2977,1.5525,1.9976,0.0712/ + data (raod_lut(1,ib,7),ib=1,N_BANDS) /0.1072,0.1391,0.1724,0.2006,0.2396,0.3066,0.3581,0.5087,0.7510,1.0231, & + 1.2622,1.4818,1.8565,0.0878/ + data (raod_lut(1,ib,8),ib=1,N_BANDS) /0.1286,0.1635,0.1991,0.2288,0.2693,0.3377,0.3895,0.5372,0.7686,1.0213, & + 1.2407,1.4394,1.7739,0.1072/ + + ! aer_type = 2 : urban (SF79) + data (raod_lut(2,ib,1),ib=1,N_BANDS) /0.1244,0.1587,0.1939,0.2233,0.2635,0.3317,0.3835,0.5318,0.7653,1.0344, & + 1.3155,1.5885,2.0706,0.1033/ + data (raod_lut(2,ib,2),ib=1,N_BANDS) /0.1159,0.1491,0.1834,0.2122,0.2518,0.3195,0.3712,0.5207,0.7585,1.0331, & + 1.3130,1.5833,2.0601,0.0956/ + data (raod_lut(2,ib,3),ib=1,N_BANDS) /0.1093,0.1416,0.1752,0.2035,0.2427,0.3099,0.3615,0.5118,0.7529,1.0316, & + 1.3083,1.5739,2.0408,0.0898/ + data (raod_lut(2,ib,4),ib=1,N_BANDS) /0.1062,0.1381,0.1712,0.1993,0.2382,0.3052,0.3567,0.5074,0.7501,1.0302, & + 1.3025,1.5620,2.0168,0.0870/ + data (raod_lut(2,ib,5),ib=1,N_BANDS) /0.1045,0.1361,0.1690,0.1970,0.2357,0.3025,0.3540,0.5049,0.7486,1.0271, & + 1.2864,1.5297,1.9518,0.0854/ + data (raod_lut(2,ib,6),ib=1,N_BANDS) /0.1065,0.1384,0.1716,0.1997,0.2386,0.3056,0.3571,0.5078,0.7504,1.0227, & + 1.2603,1.4780,1.8492,0.0872/ + data (raod_lut(2,ib,7),ib=1,N_BANDS) /0.1147,0.1478,0.1820,0.2107,0.2503,0.3179,0.3696,0.5192,0.7575,1.0146, & + 1.2116,1.3830,1.6658,0.0946/ + data (raod_lut(2,ib,8),ib=1,N_BANDS) /0.1247,0.1590,0.1943,0.2237,0.2639,0.3322,0.3840,0.5322,0.7656,1.0082, & + 1.1719,1.3075,1.5252,0.1036/ + + ! aer_type = 3 : maritime (SF79) + data (raod_lut(3,ib,1),ib=1,N_BANDS) /0.3053,0.3507,0.3932,0.4261,0.4681,0.5334,0.5797,0.6962,0.8583,1.0187, & + 1.1705,1.3049,1.5205,0.2748/ + data (raod_lut(3,ib,2),ib=1,N_BANDS) /0.3566,0.4023,0.4443,0.4765,0.5170,0.5792,0.6227,0.7298,0.8756,1.0162, & + 1.1472,1.2614,1.4415,0.3256/ + data (raod_lut(3,ib,3),ib=1,N_BANDS) /0.4359,0.4803,0.5203,0.5505,0.5879,0.6441,0.6828,0.7756,0.8985,1.0135, & + 1.1198,1.2109,1.3518,0.4051/ + data (raod_lut(3,ib,4),ib=1,N_BANDS) /0.5128,0.5544,0.5913,0.6187,0.6523,0.7020,0.7358,0.8149,0.9174,1.0115, & + 1.0995,1.1740,1.2875,0.4835/ + data (raod_lut(3,ib,5),ib=1,N_BANDS) /0.6479,0.6816,0.7108,0.7320,0.7575,0.7946,0.8193,0.8752,0.9455,1.0092, & + 1.0728,1.1263,1.2061,0.6236/ + data (raod_lut(3,ib,6),ib=1,N_BANDS) /0.7582,0.7831,0.8043,0.8196,0.8377,0.8636,0.8806,0.9184,0.9649,1.0080, & + 1.0564,1.0973,1.1576,0.7399/ + data (raod_lut(3,ib,7),ib=1,N_BANDS) /0.8482,0.8647,0.8785,0.8884,0.9000,0.9164,0.9272,0.9506,0.9789,1.0072, & + 1.0454,1.0780,1.1256,0.8360/ + data (raod_lut(3,ib,8),ib=1,N_BANDS) /0.8836,0.8965,0.9073,0.9149,0.9239,0.9365,0.9448,0.9626,0.9841,1.0069, & + 1.0415,1.0712,1.1145,0.8741/ + +! ++ Trude ; if 3D AOD, disaggreaget at all levels. + if (present(aod550_3d)) then + do j=jts,jte + do i=its,ite + !-- initialization of aerosol type: + aer_t = aer_type(i,j) + ! common part of the Lagrange's interpolator + ! only depends on the relative humidity value + do kk = kts,kte + ii=1 + do while ( (ii.le.N_RH) .and. (rh(i,kk,j).gt.rhs(ii)) ) + ii=ii+1 + end do + imin=max(1,ii-N_INT_POINTS/2-1) + imax=min(N_RH,ii+N_INT_POINTS/2) + + do ib=1,N_BANDS + tauaer3d(i,kk,j,ib)=0. + do jj=imin,imax + lj=1. + do k=imin,imax + if (k.ne.jj) lj=lj*(rh(i,kk,j)-rhs(k))/(rhs(jj)-rhs(k)) + end do + tauaer3d(i,kk,j,ib)=tauaer3d(i,kk,j,ib)+lj*raod_lut(aer_t,ib,jj)*aod550_3d(i,kk,j) + end do + end do + end do + end do + end do + else +! -- Trude + + do j=jts,jte + do i=its,ite + !-- initialization of aerosol type: + aer_t = aer_type(i,j) + ! common part of the Lagrange's interpolator + ! only depends on the relative humidity value + ii=1 + do while ( (ii.le.N_RH) .and. (rh(i,kts,j).gt.rhs(ii)) ) + ii=ii+1 + end do + imin=max(1,ii-N_INT_POINTS/2-1) + imax=min(N_RH,ii+N_INT_POINTS/2) + + do ib=1,N_BANDS + tauaer(i,j,ib)=0. + do jj=imin,imax + lj=1. + do k=imin,imax + if (k.ne.jj) lj=lj*(rh(i,kts,j)-rhs(k))/(rhs(jj)-rhs(k)) + end do + tauaer(i,j,ib)=tauaer(i,j,ib)+lj*raod_lut(aer_t,ib,jj)*aod550(i,j) + end do + end do + end do + end do + endif + +end subroutine calc_spectral_aod_rrtmg_sw + +subroutine calc_spectral_ssa_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type, & + ssaaer ) + implicit none + + ! constants + integer, parameter :: N_AER_TYPES=3 + integer, parameter :: N_RH=8 + integer, parameter :: N_BANDS=14 + integer, parameter :: N_INT_POINTS=4 + + ! I/O variables + integer, intent(in) :: ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte +!- MPAS modifications: aer_type is a function of the land-sea mask, and set to 1 over land (or rural classification in WRF), +! and set to 0 over oceans (or maritime classification in WRF): +! integer, intent(in) :: aer_type + integer:: aer_t + integer, dimension(ims:ime,jms:jme), intent(in):: aer_type +!- end MPAS modifications (Laura D. Fowler/2018=04-09). + real, dimension(ims:ime, kms:kme, jms:jme), intent(in) :: rh ! surface relative humidity + real, dimension(ims:ime, kms:kme, jms:jme, 1:N_BANDS), intent(inout) :: ssaaer ! aerosol single-scattering albedo at surface + + ! local variables + integer :: i,j,k,kk,ib,imax,imin,ii,jj + real :: rhs(N_RH),lj + real :: ssa_lut(N_AER_TYPES,N_BANDS,N_RH) + + ! relative humidity steps + data (rhs(i),i=1,8) /0.,50.,70.,80.,90.,95.,98.,99./ + + ! aer_type = 1 : rural (SF79) + data (ssa_lut(1,ib,1),ib=1,N_BANDS) /0.8730,0.6695,0.8530,0.8601,0.8365,0.7949,0.8113,0.8810,0.9305,0.9436, & + 0.9532,0.9395,0.8007,0.8634/ + data (ssa_lut(1,ib,2),ib=1,N_BANDS) /0.8428,0.6395,0.8571,0.8645,0.8408,0.8007,0.8167,0.8845,0.9326,0.9454, & + 0.9545,0.9416,0.8070,0.8589/ + data (ssa_lut(1,ib,3),ib=1,N_BANDS) /0.8000,0.6025,0.8668,0.8740,0.8503,0.8140,0.8309,0.8943,0.9370,0.9489, & + 0.9577,0.9451,0.8146,0.8548/ + data (ssa_lut(1,ib,4),ib=1,N_BANDS) /0.7298,0.5666,0.9030,0.9049,0.8863,0.8591,0.8701,0.9178,0.9524,0.9612, & + 0.9677,0.9576,0.8476,0.8578/ + data (ssa_lut(1,ib,5),ib=1,N_BANDS) /0.7010,0.5606,0.9312,0.9288,0.9183,0.9031,0.9112,0.9439,0.9677,0.9733, & + 0.9772,0.9699,0.8829,0.8590/ + data (ssa_lut(1,ib,6),ib=1,N_BANDS) /0.6933,0.5620,0.9465,0.9393,0.9346,0.9290,0.9332,0.9549,0.9738,0.9782, & + 0.9813,0.9750,0.8980,0.8594/ + data (ssa_lut(1,ib,7),ib=1,N_BANDS) /0.6842,0.5843,0.9597,0.9488,0.9462,0.9470,0.9518,0.9679,0.9808,0.9839, & + 0.9864,0.9794,0.9113,0.8648/ + data (ssa_lut(1,ib,8),ib=1,N_BANDS) /0.6786,0.5897,0.9658,0.9522,0.9530,0.9610,0.9651,0.9757,0.9852,0.9871, & + 0.9883,0.9835,0.9236,0.8618/ + + ! aer_type = 2: urban (SF79) + data (ssa_lut(2,ib,1),ib=1,N_BANDS) /0.4063,0.3663,0.4093,0.4205,0.4487,0.4912,0.5184,0.5743,0.6233,0.6392, & + 0.6442,0.6408,0.6105,0.4094/ + data (ssa_lut(2,ib,2),ib=1,N_BANDS) /0.4113,0.3654,0.4215,0.4330,0.4604,0.5022,0.5293,0.5848,0.6336,0.6493, & + 0.6542,0.6507,0.6205,0.4196/ + data (ssa_lut(2,ib,3),ib=1,N_BANDS) /0.4500,0.3781,0.4924,0.5050,0.5265,0.5713,0.6048,0.6274,0.6912,0.7714, & + 0.7308,0.7027,0.6772,0.4820/ + data (ssa_lut(2,ib,4),ib=1,N_BANDS) /0.5075,0.4139,0.5994,0.6127,0.6350,0.6669,0.6888,0.7333,0.7704,0.7809, & + 0.7821,0.7762,0.7454,0.5709/ + data (ssa_lut(2,ib,5),ib=1,N_BANDS) /0.5596,0.4570,0.7009,0.7118,0.7317,0.7583,0.7757,0.8093,0.8361,0.8422, & + 0.8406,0.8337,0.8036,0.6525/ + data (ssa_lut(2,ib,6),ib=1,N_BANDS) /0.6008,0.4971,0.7845,0.7906,0.8075,0.8290,0.8418,0.8649,0.8824,0.8849, & + 0.8815,0.8739,0.8455,0.7179/ + data (ssa_lut(2,ib,7),ib=1,N_BANDS) /0.6401,0.5407,0.8681,0.8664,0.8796,0.8968,0.9043,0.9159,0.9244,0.9234, & + 0.9182,0.9105,0.8849,0.7796/ + data (ssa_lut(2,ib,8),ib=1,N_BANDS) /0.6567,0.5618,0.9073,0.9077,0.9182,0.9279,0.9325,0.9398,0.9440,0.9413, & + 0.9355,0.9278,0.9039,0.8040/ + + ! aer_type = 3 : maritime (SF79) + data (ssa_lut(3,ib,1),ib=1,N_BANDS) /0.9697,0.9183,0.9749,0.9820,0.9780,0.9712,0.9708,0.9778,0.9831,0.9827, & + 0.9826,0.9723,0.8763,0.9716/ + data (ssa_lut(3,ib,2),ib=1,N_BANDS) /0.9070,0.8491,0.9730,0.9816,0.9804,0.9742,0.9738,0.9802,0.9847,0.9841, & + 0.9838,0.9744,0.8836,0.9546/ + data (ssa_lut(3,ib,3),ib=1,N_BANDS) /0.8378,0.7761,0.9797,0.9827,0.9829,0.9814,0.9812,0.9852,0.9882,0.9875, & + 0.9871,0.9791,0.9006,0.9348/ + data (ssa_lut(3,ib,4),ib=1,N_BANDS) /0.7866,0.7249,0.9890,0.9822,0.9856,0.9917,0.9924,0.9932,0.9943,0.9938, & + 0.9933,0.9887,0.9393,0.9204/ + data (ssa_lut(3,ib,5),ib=1,N_BANDS) /0.7761,0.7164,0.9959,0.9822,0.9834,0.9941,0.9955,0.9952,0.9960,0.9956, & + 0.9951,0.9922,0.9538,0.9152/ + data (ssa_lut(3,ib,6),ib=1,N_BANDS) /0.7671,0.7114,0.9902,0.9786,0.9838,0.9954,0.9970,0.9965,0.9971,0.9968, & + 0.9964,0.9943,0.9644,0.9158/ + data (ssa_lut(3,ib,7),ib=1,N_BANDS) /0.7551,0.7060,0.9890,0.9743,0.9807,0.9966,0.9989,0.9978,0.9982,0.9980, & + 0.9978,0.9964,0.9757,0.9122/ + data (ssa_lut(3,ib,8),ib=1,N_BANDS) /0.7439,0.7000,0.9870,0.9695,0.9769,0.9970,1.0000,0.9984,0.9988,0.9986, & + 0.9984,0.9975,0.9825,0.9076/ + + do j=jts,jte + do i=its,ite + !-- initialization of aerosol type: + aer_t = aer_type(i,j) + do k=kts,kte + ! common part of the Lagrange's interpolator + ! only depends on the relative humidity value + ii=1 + do while ( (ii.le.N_RH) .and. (rh(i,k,j).gt.rhs(ii)) ) + ii=ii+1 + end do + imin=max(1,ii-N_INT_POINTS/2-1) + imax=min(N_RH,ii+N_INT_POINTS/2) + + do ib=1,N_BANDS + ssaaer(i,k,j,ib)=0. + do jj=imin,imax + lj=1. + do kk=imin,imax + if (kk.ne.jj) lj=lj*(rh(i,k,j)-rhs(kk))/(rhs(jj)-rhs(kk)) + end do + ssaaer(i,k,j,ib)=ssaaer(i,k,j,ib)+lj*ssa_lut(aer_t,ib,jj) + end do + end do + end do + end do + end do +end subroutine calc_spectral_ssa_rrtmg_sw + +subroutine calc_spectral_asy_rrtmg_sw(ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh,aer_type, & + asyaer ) + implicit none + + ! constants + integer, parameter :: N_AER_TYPES=3 + integer, parameter :: N_RH=8 + integer, parameter :: N_BANDS=14 + integer, parameter :: N_INT_POINTS=4 + + ! I/O variables + integer, intent(in) :: ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte +!- MPAS modifications: aer_type is a function of the land-sea mask, and set to 1 over land (or rural classification in WRF), +! and set to 0 over oceans (or maritime classification in WRF): +! integer, intent(in) :: aer_type + integer:: aer_t + integer, dimension(ims:ime,jms:jme), intent(in):: aer_type +!- end MPAS modifications (Laura D. Fowler/2018=04-09). + real, dimension(ims:ime, kms:kme, jms:jme), intent(in) :: rh ! surface relative humidity + real, dimension(ims:ime, kms:kme, jms:jme, 1:N_BANDS), intent(inout) :: asyaer ! aerosol asymmetry parameter at surface + + ! local variables + integer :: i,j,k,kk,ib,imax,imin,ii,jj + real :: rhs(N_RH),lj + real :: asy_lut(N_AER_TYPES,N_BANDS,N_RH) + + ! relative humidity steps + data (rhs(i),i=1,8) /0.,50.,70.,80.,90.,95.,98.,99./ + + ! aer_type = 1 : rural (SF79) + data (asy_lut(1,ib,1),ib=1,N_BANDS) /0.7444,0.7711,0.7306,0.7103,0.6693,0.6267,0.6169,0.6207,0.6341,0.6497, & + 0.6630,0.6748,0.7208,0.7419/ + data (asy_lut(1,ib,2),ib=1,N_BANDS) /0.7444,0.7747,0.7314,0.7110,0.6711,0.6301,0.6210,0.6251,0.6392,0.6551, & + 0.6680,0.6799,0.7244,0.7436/ + data (asy_lut(1,ib,3),ib=1,N_BANDS) /0.7438,0.7845,0.7341,0.7137,0.6760,0.6381,0.6298,0.6350,0.6497,0.6657, & + 0.6790,0.6896,0.7300,0.7477/ + data (asy_lut(1,ib,4),ib=1,N_BANDS) /0.7336,0.7934,0.7425,0.7217,0.6925,0.6665,0.6616,0.6693,0.6857,0.7016, & + 0.7139,0.7218,0.7495,0.7574/ + data (asy_lut(1,ib,5),ib=1,N_BANDS) /0.7111,0.7865,0.7384,0.7198,0.6995,0.6864,0.6864,0.6987,0.7176,0.7326, & + 0.7427,0.7489,0.7644,0.7547/ + data (asy_lut(1,ib,6),ib=1,N_BANDS) /0.7009,0.7828,0.7366,0.7196,0.7034,0.6958,0.6979,0.7118,0.7310,0.7452, & + 0.7542,0.7593,0.7692,0.7522/ + data (asy_lut(1,ib,7),ib=1,N_BANDS) /0.7226,0.8127,0.7621,0.7434,0.7271,0.7231,0.7248,0.7351,0.7506,0.7622, & + 0.7688,0.7719,0.7756,0.7706/ + data (asy_lut(1,ib,8),ib=1,N_BANDS) /0.7296,0.8219,0.7651,0.7513,0.7404,0.7369,0.7386,0.7485,0.7626,0.7724, & + 0.7771,0.7789,0.7790,0.7760/ + + ! aer_type = 2: urban (SF79) + data (asy_lut(2,ib,1),ib=1,N_BANDS) /0.7399,0.7372,0.7110,0.6916,0.6582,0.6230,0.6147,0.6214,0.6412,0.6655, & + 0.6910,0.7124,0.7538,0.7395/ + data (asy_lut(2,ib,2),ib=1,N_BANDS) /0.7400,0.7419,0.7146,0.6952,0.6626,0.6287,0.6209,0.6280,0.6481,0.6723, & + 0.6974,0.7180,0.7575,0.7432/ + data (asy_lut(2,ib,3),ib=1,N_BANDS) /0.7363,0.7614,0.7303,0.7100,0.6815,0.6550,0.6498,0.6590,0.6802,0.7032, & + 0.7255,0.7430,0.7735,0.7580/ + data (asy_lut(2,ib,4),ib=1,N_BANDS) /0.7180,0.7701,0.7358,0.7163,0.6952,0.6807,0.6801,0.6935,0.7160,0.7370, & + 0.7553,0.7681,0.7862,0.7623/ + data (asy_lut(2,ib,5),ib=1,N_BANDS) /0.7013,0.7733,0.7374,0.7203,0.7057,0.7006,0.7035,0.7192,0.7415,0.7596, & + 0.7739,0.7827,0.7906,0.7596/ + data (asy_lut(2,ib,6),ib=1,N_BANDS) /0.6922,0.7773,0.7404,0.7264,0.7170,0.7179,0.7228,0.7389,0.7595,0.7746, & + 0.7851,0.7909,0.7918,0.7562/ + data (asy_lut(2,ib,7),ib=1,N_BANDS) /0.6928,0.7875,0.7491,0.7393,0.7345,0.7397,0.7455,0.7602,0.7773,0.7883, & + 0.7944,0.7970,0.7912,0.7555/ + data (asy_lut(2,ib,8),ib=1,N_BANDS) /0.7021,0.7989,0.7590,0.7512,0.7613,0.7746,0.7718,0.7727,0.7867,0.7953, & + 0.7988,0.7994,0.7906,0.7600/ + + ! aer_type = 3 : maritime (SF79) + data (asy_lut(3,ib,1),ib=1,N_BANDS) /0.6620,0.7011,0.7111,0.7068,0.6990,0.6918,0.6883,0.6827,0.6768,0.6773, & + 0.6863,0.6940,0.7245,0.6719/ + data (asy_lut(3,ib,2),ib=1,N_BANDS) /0.6880,0.7394,0.7297,0.7240,0.7162,0.7083,0.7038,0.6957,0.6908,0.6917, & + 0.6952,0.7035,0.7356,0.6977/ + data (asy_lut(3,ib,3),ib=1,N_BANDS) /0.7266,0.7970,0.7666,0.7593,0.7505,0.7427,0.7391,0.7293,0.7214,0.7210, & + 0.7212,0.7265,0.7519,0.7340/ + data (asy_lut(3,ib,4),ib=1,N_BANDS) /0.7683,0.8608,0.8120,0.8030,0.7826,0.7679,0.7713,0.7760,0.7723,0.7716, & + 0.7726,0.7767,0.7884,0.7768/ + data (asy_lut(3,ib,5),ib=1,N_BANDS) /0.7776,0.8727,0.8182,0.8083,0.7985,0.7939,0.7953,0.7913,0.7846,0.7870, & + 0.7899,0.7918,0.7969,0.7870/ + data (asy_lut(3,ib,6),ib=1,N_BANDS) /0.7878,0.8839,0.8231,0.8130,0.8050,0.7977,0.7945,0.7932,0.7955,0.7992, & + 0.8025,0.8035,0.8055,0.7956/ + data (asy_lut(3,ib,7),ib=1,N_BANDS) /0.8005,0.8957,0.8273,0.8179,0.8105,0.8035,0.8010,0.8030,0.8081,0.8108, & + 0.8143,0.8174,0.8174,0.8042/ + data (asy_lut(3,ib,8),ib=1,N_BANDS) /0.8104,0.9034,0.8294,0.8212,0.8144,0.8087,0.8077,0.8118,0.8175,0.8202, & + 0.8239,0.8265,0.8246,0.8095/ + + do j=jts,jte + do i=its,ite + !-- initialization of aerosol type: + aer_t = aer_type(i,j) + do k=kts,kte + ! common part of the Lagrange's interpolator + ! only depends on the relative humidity value + ii=1 + do while ( (ii.le.N_RH) .and. (rh(i,k,j).gt.rhs(ii)) ) + ii=ii+1 + end do + imin=max(1,ii-N_INT_POINTS/2-1) + imax=min(N_RH,ii+N_INT_POINTS/2) + + do ib=1,N_BANDS + asyaer(i,k,j,ib)=0. + do jj=imin,imax + lj=1. + do kk=imin,imax + if (kk.ne.jj) lj=lj*(rh(i,k,j)-rhs(kk))/(rhs(jj)-rhs(kk)) + end do + asyaer(i,k,j,ib)=asyaer(i,k,j,ib)+lj*asy_lut(aer_t,ib,jj) + end do + end do + end do + end do + end do +end subroutine calc_spectral_asy_rrtmg_sw + +subroutine aod_profiler(ht,dz8w,taod550,n_bands, & + ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + aod550 & + ) + implicit none + + ! constants + real, parameter :: scale_height=2500. ! meters + + ! I/O variables + integer, intent(in) :: n_bands + integer, intent(in) :: ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte + real, dimension( ims:ime, jms:jme), intent(in) :: ht + real, dimension( ims:ime, kms:kme, jms:jme ), intent(in) :: dz8w + real, dimension( ims:ime, jms:jme, 1:n_bands), intent(in) :: taod550 + real, dimension( ims:ime, kms:kme, jms:jme, 1:n_bands ), intent(inout) :: aod550 + + ! local variables + real, dimension(its:ite,kts:kte) :: z2d,aod5502d + real, dimension(its:ite) :: htoa + real :: aod_scale + real :: aod_acum + integer :: i,j,k,nb + + ! input variables from driver are defined such as kms is sfc and + ! kme is toa. Equivalently, kts is sfc and kte is toa + do j=jts,jte + ! heigth profile + ! kts=surface, kte=toa + do i=its,ite + z2d(i,kts)=ht(i,j)+0.5*dz8w(i,kts,j) + do k=kts+1,kte + z2d(i,k)=z2d(i,k-1)+0.5*(dz8w(i,k-1,j)+dz8w(i,k,j)) + end do + htoa(i)=z2d(i,kte)+0.5*dz8w(i,kte,j) + end do + + do nb=1,n_bands + ! AOD exponential profile + do i=its,ite + aod_scale=taod550(i,j,nb)/(scale_height*(exp(-ht(i,j)/scale_height)-exp(-htoa(i)/scale_height))) + do k=kts,kte + aod550(i,k,j,nb)=aod_scale*dz8w(i,k,j)*exp(-z2d(i,k)/scale_height) + end do + end do + end do ! nb-loop + end do ! j-loop +end subroutine aod_profiler + +subroutine calc_relative_humidity(p,t3d,qv3d, & + ims,ime,jms,jme,kms,kme, & + its,ite,jts,jte,kts,kte, & + rh ) + implicit none + + ! I/O variables + integer, intent(in) :: ims,ime,jms,jme,kms,kme,its,ite,jts,jte,kts,kte + ! Naming convention: 8~at => p8w reads as "p-at-w" (w=full levels) + real, dimension(ims:ime, kms:kme, jms:jme), intent(in) :: p, & ! pressure (Pa) + t3d, & ! temperature (K) + qv3d ! water vapor mixing ratio (kg/kg) + real, dimension(ims:ime, kms:kme, jms:jme), intent(inout) :: rh ! relative humidity at surface + + ! local variables + real :: tc,rv,es,e + integer :: i,j,k + + do j=jts,jte + do i=its,ite + do k=kts,kte ! only calculations at surface level + tc=t3d(i,k,j)-273.15 ! temperature (C) + rv=max(0.,qv3d(i,k,j)) ! water vapor mixing ration (kg kg-1) + es=6.112*exp((17.6*tc)/(tc+243.5)) ! saturation vapor pressure, hPa, Bolton (1980) + e =0.01*rv*p(i,k,j)/(rv+0.62197) ! vapor pressure, hPa, (ECMWF handouts, page 6, Atmosph. Thermdyn.) + ! rv=eps * e/(p-e) -> e=p * rv/(rv+eps), eps=0.62197 + rh(i,k,j)=min(99.,max(0.,100.*e/es)) ! relative humidity (%) + end do + end do + end do + +end subroutine calc_relative_humidity + +!================================================================================================================= + end module module_ra_rrtmg_sw_aerosols +!================================================================================================================= From 46315934ccf730e5a92565ca839a53c3a6cd2b21 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Wed, 29 May 2024 14:32:30 -0600 Subject: [PATCH 038/115] * In ./src/core_atmosphere/physics/mpas_atmphys_finalize, added the option mp_thompson_aerosols in subroutine atmphys_finalize. Ths option is used to deallocate all arrays used in the "MP_THOMPSON" tables. --- src/core_atmosphere/physics/mpas_atmphys_finalize.F | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_finalize.F b/src/core_atmosphere/physics/mpas_atmphys_finalize.F index 8ad9248196..cc393fbe16 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_finalize.F +++ b/src/core_atmosphere/physics/mpas_atmphys_finalize.F @@ -43,8 +43,10 @@ subroutine atmphys_finalize(configs) call mpas_pool_get_config(configs,'config_microp_scheme',config_microp_scheme) - if(trim(config_microp_scheme) == 'mp_thompson') & + if(trim(config_microp_scheme) == 'mp_thompson' .or. & + trim(config_microp_scheme) == 'mp_thompson_aerosols') then call mp_thompson_deallocate + endif end subroutine atmphys_finalize From ca3021f6b67a7d76b3e4655f3b73efe42d9748ca Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Wed, 29 May 2024 14:36:41 -0600 Subject: [PATCH 039/115] * In src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F, corrected the initialization of the array sorted_arr in the vertical interpolation of nifa and nwfa in subroutine init_vinterp_gocart. --- src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F b/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F index cd13552c9c..260b15c434 100644 --- a/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F +++ b/src/core_init_atmosphere/mpas_init_atm_thompson_aerosols.F @@ -154,7 +154,7 @@ subroutine init_vinterp_gocart(initial_date,mesh,diag,state) enddo do iCell = 1, nCells sorted_arr(1,1:nGocartLevels) = 0._RKIND - sorted_arr(1,1:nGocartLevels) = 0._RKIND + sorted_arr(2,1:nGocartLevels) = 0._RKIND do k = 1, nGocartLevels kk = nGocartLevels + 1 -k sorted_arr(1,kk) = pwif_int(k,iCell) @@ -177,7 +177,7 @@ subroutine init_vinterp_gocart(initial_date,mesh,diag,state) enddo do iCell = 1, nCells sorted_arr(1,1:nGocartLevels) = 0._RKIND - sorted_arr(1,1:nGocartLevels) = 0._RKIND + sorted_arr(2,1:nGocartLevels) = 0._RKIND do k = 1, nGocartLevels kk = nGocartLevels + 1 -k sorted_arr(1,kk) = pwif_int(k,iCell) From b2be6f330abbff2e658bec8750cc3cbd1b0f12c4 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Thu, 30 May 2024 11:32:02 -0600 Subject: [PATCH 040/115] * In ./src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F, added the computation of the surface emission of water friendly aerosols (nwfa2d). --- .../physics/mpas_atmphys_init_microphysics.F | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F b/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F index b834702005..a8cfd53c4d 100644 --- a/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F +++ b/src/core_atmosphere/physics/mpas_atmphys_init_microphysics.F @@ -234,17 +234,15 @@ subroutine init_thompson_aerosols_forMPAS(do_restart,dminfo,mesh,state,time_lev, !... exists fewer to begin as a first-order simplistic approach. Later, proper connection to emission !... inventory would be better, but, for now, scale like this: !... where: Nwfa=50 per cc, emit 0.875E4 aerosols per second per grid box unit -!... that was tested as ~(20kmx20kmx50m = 2.E10 m**-3). +!... that was tested as ~(20kmx20kmx50m = 2.E10 m**3). k = 1 do iCell = 1, nCellsSolve -! airmass = rho_zz(k,iCell)*zz(k,iCell) -! airmass = airmass*(zgrid(k+1,iCell)-zgrid(k,iCell))*areaCell(iCell) ! (in kg) -! nwfa2d(iCell) = nwfa(k,iCell)*0.000196*(airmass*2.E-10) - nwfa2d(iCell) = 0._RKIND + airmass = rho_zz(k,iCell)*zz(k,iCell) + airmass = airmass*(zgrid(k+1,iCell)-zgrid(k,iCell))*areaCell(iCell) ! (in kg) + nwfa2d(iCell) = nwfa(k,iCell)*0.000196*airmass*0.5e-10 nifa2d(iCell) = 0._RKIND -! call mpas_log_write('$i $r $r $r $r',intArgs=(/iCell/),realArgs=(/airmass,nwfa2d(iCell), & -! nwfa2d(iCell)*450.,nifa2d(iCell)/)) +! call mpas_log_write('$i $r $r $r',intArgs=(/iCell/),realArgs=(/airmass,nwfa2d(iCell),nifa2d(iCell)/)) enddo !... deallocate local arrays: From 77262dc74d745e31d30f80634dd78813c86a7875 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 29 May 2024 18:20:45 -0600 Subject: [PATCH 041/115] Add OpenACC directives throughout atm_advance_scalars_work This commit adds OpenACC directives throughout the atm_advance_scalars_work routine. Also as part of this commit, macros have been defined at the top of mpas_atm_time_integration.F to activate timers for OpenACC data transfers when MPAS-A is compiled with OPENACC=true. For the data transfers in the atm_advance_scalars_work routine, the new timer atm_advance_scalars [ACC_data_xfer] will be written to the timer summary in log files. With the NVHPC 24.3 compilers and flags provided in the 'nvhpc' target, results for a regional test case are bitwise identical when the original code and code in this commit are both compiled with OPENACC=true. --- .../dynamics/mpas_atm_time_integration.F | 223 +++++++++++------- 1 file changed, 137 insertions(+), 86 deletions(-) diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index 0fd6c64c92..3fbabe8758 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -6,6 +6,14 @@ ! distributed with this code, or at http://mpas-dev.github.com/license.html ! +#ifdef MPAS_OPENACC +#define MPAS_ACC_TIMER_START(X) call mpas_timer_start(X) +#define MPAS_ACC_TIMER_STOP(X) call mpas_timer_stop(X) +#else +#define MPAS_ACC_TIMER_START(X) +#define MPAS_ACC_TIMER_STOP(X) +#endif + module atm_time_integration use mpas_derived_types @@ -3100,154 +3108,197 @@ subroutine atm_advance_scalars_work(nCells, num_scalars, dt, & weight_time_old = 1. - weight_time_new + MPAS_ACC_TIMER_START('atm_advance_scalars [ACC_data_xfer]') + !$acc enter data create(horiz_flux_arr) + !$acc enter data copyin(uhAvg, scalar_new) + MPAS_ACC_TIMER_STOP('atm_advance_scalars [ACC_data_xfer]') + + !$acc parallel async + !$acc loop gang worker private(scalar_weight2, ica) do iEdge=edgeStart,edgeEnd - if( (.not.config_apply_lbcs) .or. (bdyMaskEdge(iEdge) .lt. nRelaxZone-1) ) then ! full flux calculation + if ((.not.config_apply_lbcs) & + .or. (bdyMaskEdge(iEdge) < nRelaxZone-1)) then ! full flux calculation - select case(nAdvCellsForEdge(iEdge)) + select case(nAdvCellsForEdge(iEdge)) - case(10) + case(10) - do j=1,10 -!DIR$ IVDEP - do k=1,nVertLevels - scalar_weight2(k,j) = adv_coefs(j,iEdge) + sign(1.0_RKIND,uhAvg(k,iEdge))*adv_coefs_3rd(j,iEdge) + !$acc loop vector collapse(2) + do j=1,10 + do k=1,nVertLevels + scalar_weight2(k,j) = adv_coefs(j,iEdge) + sign(1.0_RKIND,uhAvg(k,iEdge))*adv_coefs_3rd(j,iEdge) + end do end do - end do - do j=1,10 - ica(j) = advCellsForEdge(j,iEdge) - end do -!DIR$ IVDEP - do k = 1,nVertLevels -!DIR$ IVDEP - do iScalar = 1,num_scalars - horiz_flux_arr(iScalar,k,iEdge) = & - scalar_weight2(k,1) * scalar_new(iScalar,k,ica(1)) + & - scalar_weight2(k,2) * scalar_new(iScalar,k,ica(2)) + & - scalar_weight2(k,3) * scalar_new(iScalar,k,ica(3)) + & - scalar_weight2(k,4) * scalar_new(iScalar,k,ica(4)) + & - scalar_weight2(k,5) * scalar_new(iScalar,k,ica(5)) + & - scalar_weight2(k,6) * scalar_new(iScalar,k,ica(6)) + & - scalar_weight2(k,7) * scalar_new(iScalar,k,ica(7)) + & - scalar_weight2(k,8) * scalar_new(iScalar,k,ica(8)) + & - scalar_weight2(k,9) * scalar_new(iScalar,k,ica(9)) + & - scalar_weight2(k,10) * scalar_new(iScalar,k,ica(10)) + + !$acc loop vector + do j=1,10 + ica(j) = advCellsForEdge(j,iEdge) end do - end do - case default + !$acc loop vector collapse(2) + do k = 1,nVertLevels + do iScalar = 1,num_scalars + horiz_flux_arr(iScalar,k,iEdge) = & + scalar_weight2(k,1) * scalar_new(iScalar,k,ica(1)) + & + scalar_weight2(k,2) * scalar_new(iScalar,k,ica(2)) + & + scalar_weight2(k,3) * scalar_new(iScalar,k,ica(3)) + & + scalar_weight2(k,4) * scalar_new(iScalar,k,ica(4)) + & + scalar_weight2(k,5) * scalar_new(iScalar,k,ica(5)) + & + scalar_weight2(k,6) * scalar_new(iScalar,k,ica(6)) + & + scalar_weight2(k,7) * scalar_new(iScalar,k,ica(7)) + & + scalar_weight2(k,8) * scalar_new(iScalar,k,ica(8)) + & + scalar_weight2(k,9) * scalar_new(iScalar,k,ica(9)) + & + scalar_weight2(k,10) * scalar_new(iScalar,k,ica(10)) + end do + end do - horiz_flux_arr(:,:,iEdge) = 0.0 - do j=1,nAdvCellsForEdge(iEdge) - iAdvCell = advCellsForEdge(j,iEdge) -!DIR$ IVDEP + case default + + !$acc loop vector collapse(2) do k=1,nVertLevels - scalar_weight = adv_coefs(j,iEdge) + sign(1.0_RKIND,uhAvg(k,iEdge))*adv_coefs_3rd(j,iEdge) -!DIR$ IVDEP do iScalar=1,num_scalars - horiz_flux_arr(iScalar,k,iEdge) = horiz_flux_arr(iScalar,k,iEdge) + scalar_weight * scalar_new(iScalar,k,iAdvCell) + horiz_flux_arr(iScalar,k,iEdge) = 0.0_RKIND end do end do - end do - end select + !$acc loop seq + do j=1,nAdvCellsForEdge(iEdge) + iAdvCell = advCellsForEdge(j,iEdge) + + !$acc loop vector collapse(2) + do k=1,nVertLevels + do iScalar=1,num_scalars + scalar_weight = adv_coefs(j,iEdge) + sign(1.0_RKIND,uhAvg(k,iEdge))*adv_coefs_3rd(j,iEdge) + horiz_flux_arr(iScalar,k,iEdge) = horiz_flux_arr(iScalar,k,iEdge) & + + scalar_weight * scalar_new(iScalar,k,iAdvCell) + end do + end do + end do + end select - else if(config_apply_lbcs .and. (bdyMaskEdge(iEdge) .ge. nRelaxZone-1) .and. (bdyMaskEdge(iEdge) .le. nRelaxZone) ) then - ! upwind flux evaluation for outermost 2 edges in specified zone + else if(config_apply_lbcs & + .and. (bdyMaskEdge(iEdge) >= nRelaxZone-1) & + .and. (bdyMaskEdge(iEdge) <= nRelaxZone)) then + + ! upwind flux evaluation for outermost 2 edges in specified zone cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) -!DIR$ IVDEP + + !$acc loop vector collapse(2) do k=1,nVertLevels - u_direction = sign(0.5_RKIND,uhAvg(k,iEdge)) - u_positive = dvEdge(iEdge)*abs(u_direction + 0.5_RKIND) - u_negative = dvEdge(iEdge)*abs(u_direction - 0.5_RKIND) -!DIR$ IVDEP do iScalar=1,num_scalars + u_direction = sign(0.5_RKIND,uhAvg(k,iEdge)) + u_positive = dvEdge(iEdge)*abs(u_direction + 0.5_RKIND) + u_negative = dvEdge(iEdge)*abs(u_direction - 0.5_RKIND) horiz_flux_arr(iScalar,k,iEdge) = u_positive*scalar_new(iScalar,k,cell1) + u_negative*scalar_new(iScalar,k,cell2) end do end do end if ! end of regional MPAS test - end do + !$acc end parallel !$OMP BARRIER -! scalar update, for each column sum fluxes over horizontal edges, add physics tendency, and add vertical flux divergence in update. + ! + ! scalar update, for each column sum fluxes over horizontal edges, add physics tendency, + ! and add vertical flux divergence in update. + ! - + MPAS_ACC_TIMER_START('atm_advance_scalars [ACC_data_xfer]') +#ifndef DO_PHYSICS + !$acc enter data create(scalar_tend_save) +#else + !$acc enter data copyin(scalar_tend_save) +#endif + !$acc enter data copyin(scalar_old, fnm, fnp, rdnw, wwAvg, rho_zz_old, rho_zz_new) + !$acc enter data create(scalar_tend_column, wdtn) + MPAS_ACC_TIMER_STOP('atm_advance_scalars [ACC_data_xfer]') + + !$acc parallel wait + !$acc loop gang worker private(scalar_tend_column, wdtn) do iCell=cellSolveStart,cellSolveEnd if(bdyMaskCell(iCell) <= nRelaxZone) then ! specified zone for regional_MPAS is not updated in this routine + !$acc loop vector collapse(2) + do k=1,nVertLevels + do iScalar=1,num_scalars + scalar_tend_column(iScalar,k) = 0.0_RKIND #ifndef DO_PHYSICS - scalar_tend_save(:,:,iCell) = 0.0 ! testing purposes - we have no sources or sinks + scalar_tend_save(iScalar,k,iCell) = 0.0_RKIND ! testing purposes - we have no sources or sinks #endif - scalar_tend_column(1:num_scalars,1:nVertlevels) = 0. + end do + end do + !$acc loop seq do i=1,nEdgesOnCell(iCell) iEdge = edgesOnCell(i,iCell) ! here we add the horizontal flux divergence into the scalar tendency. ! note that the scalar tendency is modified. -!DIR$ IVDEP + !$acc loop vector collapse(2) do k=1,nVertLevels -!DIR$ IVDEP do iScalar=1,num_scalars scalar_tend_column(iScalar,k) = scalar_tend_column(iScalar,k) & - edgesOnCell_sign(i,iCell) * uhAvg(k,iEdge)*horiz_flux_arr(iScalar,k,iEdge) end do end do - + end do -!DIR$ IVDEP + !$acc loop vector collapse(2) do k=1,nVertLevels -!DIR$ IVDEP do iScalar=1,num_scalars - scalar_tend_column(iScalar,k) = scalar_tend_column(iScalar,k) * invAreaCell(iCell) + scalar_tend_save(iScalar,k,iCell) + scalar_tend_column(iScalar,k) = scalar_tend_column(iScalar,k) * invAreaCell(iCell) & + + scalar_tend_save(iScalar,k,iCell) end do end do - - ! - ! vertical flux divergence and update of the scalars - ! - wdtn(:,1) = 0.0 - wdtn(:,nVertLevels+1) = 0.0 - k = 2 - do iScalar=1,num_scalars - wdtn(iScalar,k) = wwAvg(k,iCell)*(fnm(k)*scalar_new(iScalar,k,iCell)+fnp(k)*scalar_new(iScalar,k-1,iCell)) - end do - -!DIR$ IVDEP - do k=3,nVertLevels-1 -!DIR$ IVDEP + ! + ! vertical flux divergence and update of the scalars + ! + + !$acc loop vector do iScalar=1,num_scalars - wdtn(iScalar,k) = flux3( scalar_new(iScalar,k-2,iCell),scalar_new(iScalar,k-1,iCell), & - scalar_new(iScalar,k ,iCell),scalar_new(iScalar,k+1,iCell), & - wwAvg(k,iCell), coef_3rd_order ) + wdtn(iScalar,1) = 0.0 + wdtn(iScalar,2) = wwAvg(2,iCell)*(fnm(2)*scalar_new(iScalar,2,iCell)+fnp(2)*scalar_new(iScalar,2-1,iCell)) + wdtn(iScalar,nVertLevels) = wwAvg(nVertLevels,iCell) * & + ( fnm(nVertLevels)*scalar_new(iScalar,nVertLevels,iCell) & + +fnp(nVertLevels)*scalar_new(iScalar,nVertLevels-1,iCell) ) + wdtn(iScalar,nVertLevels+1) = 0.0 end do - end do - k = nVertLevels - do iScalar=1,num_scalars - wdtn(iScalar,k) = wwAvg(k,iCell)*(fnm(k)*scalar_new(iScalar,k,iCell)+fnp(k)*scalar_new(iScalar,k-1,iCell)) - end do -!DIR$ IVDEP - do k=1,nVertLevels - rho_zz_new_inv = 1.0_RKIND / (weight_time_old*rho_zz_old(k,iCell) + weight_time_new*rho_zz_new(k,iCell)) -!DIR$ IVDEP - do iScalar=1,num_scalars - scalar_new(iScalar,k,iCell) = ( scalar_old(iScalar,k,iCell)*rho_zz_old(k,iCell) & - + dt*( scalar_tend_column(iScalar,k) -rdnw(k)*(wdtn(iScalar,k+1)-wdtn(iScalar,k)) ) ) * rho_zz_new_inv + !$acc loop vector collapse(2) + do k=3,nVertLevels-1 + do iScalar=1,num_scalars + wdtn(iScalar,k) = flux3( scalar_new(iScalar,k-2,iCell),scalar_new(iScalar,k-1,iCell), & + scalar_new(iScalar,k ,iCell),scalar_new(iScalar,k+1,iCell), & + wwAvg(k,iCell), coef_3rd_order ) + end do + end do + + !$acc loop vector collapse(2) + do k=1,nVertLevels + do iScalar=1,num_scalars + rho_zz_new_inv = 1.0_RKIND / (weight_time_old*rho_zz_old(k,iCell) + weight_time_new*rho_zz_new(k,iCell)) + scalar_new(iScalar,k,iCell) = ( scalar_old(iScalar,k,iCell)*rho_zz_old(k,iCell) & + + dt*( scalar_tend_column(iScalar,k) -rdnw(k)*(wdtn(iScalar,k+1)-wdtn(iScalar,k)) ) ) * rho_zz_new_inv + end do end do - end do - end if ! specified zone regional_MPAS test + end if ! specified zone regional_MPAS test end do + !$acc end parallel + + MPAS_ACC_TIMER_START('atm_advance_scalars [ACC_data_xfer]') + !$acc exit data copyout(scalar_new) + !$acc exit data delete(scalar_tend_column, wdtn, uhAvg, wwAvg, scalar_old, fnm, fnp, & + !$acc rdnw, rho_zz_old, rho_zz_new, horiz_flux_arr, scalar_tend_save) + MPAS_ACC_TIMER_STOP('atm_advance_scalars [ACC_data_xfer]') end subroutine atm_advance_scalars_work From 50aab620c98e69ec931388a97dd2e8eaf1301bc3 Mon Sep 17 00:00:00 2001 From: Michael Duda Date: Wed, 29 May 2024 18:25:36 -0600 Subject: [PATCH 042/115] Add OpenACC directives throughout atm_advance_scalars_mono_work This commit adds OpenACC directives throughout the atm_advance_scalars_mono_work routine. At present, halo exchanges in the monotonic scalar transport routine require fields to be transferred to the host before the halo exchange, and then back to the device afterward. For the data transfers in the atm_advance_scalars_mono_work routine, the new timer atm_advance_scalars_mono [ACC_data_xfer] will be written to the timer summary in log files. With the NVHPC 24.3 compilers and flags provided in the 'nvhpc' target, results for a regional test case are bitwise identical when the original code and code in this commit are both compiled with OPENACC=true. --- .../dynamics/mpas_atm_time_integration.F | 346 +++++++++++++----- 1 file changed, 255 insertions(+), 91 deletions(-) diff --git a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F index 3fbabe8758..fc8ce795e1 100644 --- a/src/core_atmosphere/dynamics/mpas_atm_time_integration.F +++ b/src/core_atmosphere/dynamics/mpas_atm_time_integration.F @@ -3511,7 +3511,6 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge real (kind=RKIND), dimension(nVertLevels,2,nCells+1), intent(inout) :: scale_arr real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: flux_arr real (kind=RKIND), dimension(nVertLevels,nEdges+1), intent(inout) :: flux_upwind_tmp, flux_tmp - type (field3DReal), pointer :: scalars_old_field integer, parameter :: SCALE_IN = 1, SCALE_OUT = 2 @@ -3550,30 +3549,54 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge local_advance_density = .true. end if - call mpas_pool_get_field(state, 'scalars', scalars_old_field, 1) - ! for positive-definite or monotonic option, we first update scalars using the tendency from sources other than ! the resolved transport (these should constitute a positive definite update). ! Note, however, that we enforce positive-definiteness in this update. ! The transport will maintain this positive definite solution and optionally, shape preservation (monotonicity). + + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + !$acc data present(nEdgesOnCell, edgesOnCell, edgesOnCell_sign, & + !$acc invAreaCell, cellsOnCell, cellsOnEdge, nAdvCellsForEdge, & + !$acc advCellsForEdge, adv_coefs, adv_coefs_3rd, dvEdge, bdyMaskCell) + +#ifdef DO_PHYSICS + !$acc enter data copyin(scalar_tend) +#else + !$acc enter data create(scalar_tend) +#endif + if (local_advance_density) then + !$acc enter data copyin(rho_zz_int) + end if + !$acc enter data copyin(scalars_old, rho_zz_old, rdnw, uhAvg, wwAvg) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') + + !$acc parallel + + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd -!DIR$ IVDEP - do k = 1,nVertLevels -!DIR$ IVDEP - do iScalar = 1,num_scalars + + !$acc loop vector collapse(2) + do k = 1,nVertLevels + do iScalar = 1,num_scalars #ifndef DO_PHYSICS -!TBH: Michael, would you please check this change? Our test uses -DDO_PHYSICS -!TBH: so this code is not executed. The change avoids redundant work. - scalar_tend(iScalar,k,iCell) = 0.0 ! testing purposes - we have no sources or sinks + scalar_tend(iScalar,k,iCell) = 0.0_RKIND ! testing purposes - we have no sources or sinks #endif - scalars_old(iScalar,k,iCell) = scalars_old(iScalar,k,iCell)+dt*scalar_tend(iScalar,k,iCell) / rho_zz_old(k,iCell) - scalar_tend(iScalar,k,iCell) = 0.0 - end do + scalars_old(iScalar,k,iCell) = scalars_old(iScalar,k,iCell)+dt*scalar_tend(iScalar,k,iCell) / rho_zz_old(k,iCell) + scalar_tend(iScalar,k,iCell) = 0.0_RKIND + end do end do + end do + !$acc end parallel + + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + !$acc exit data copyout(scalar_tend) + + !$acc update self(scalars_old) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') !$OMP BARRIER !$OMP MASTER @@ -3581,6 +3604,9 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge !$OMP END MASTER !$OMP BARRIER + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + !$acc update device(scalars_old) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') ! ! Runge Kutta integration, so we compute fluxes from scalar_new values, update starts from scalar_old @@ -3591,50 +3617,83 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge call mpas_log_write('Error: rho_zz_int not supplied to atm_advance_scalars_mono_work( ) when advance_density=.true.', messageType=MPAS_LOG_CRIT) end if + !$acc parallel + ! begin with update of density + + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd - rho_zz_int(:,iCell) = 0.0 + + !$acc loop vector + do k=1,nVertLevels + rho_zz_int(k,iCell) = 0.0_RKIND + end do + + !$acc loop seq do i=1,nEdgesOnCell(iCell) iEdge = edgesOnCell(i,iCell) -!DIR$ IVDEP + !$acc loop vector do k=1,nVertLevels - rho_zz_int(k,iCell) = rho_zz_int(k,iCell) - edgesOnCell_sign(i,iCell) * uhAvg(k,iEdge) * dvEdge(iEdge) * invAreaCell(iCell) + rho_zz_int(k,iCell) = rho_zz_int(k,iCell) - edgesOnCell_sign(i,iCell) & + * uhAvg(k,iEdge) * dvEdge(iEdge) * invAreaCell(iCell) end do end do end do + + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd -!DIR$ IVDEP + + !$acc loop vector do k=1,nVertLevels - rho_zz_int(k,iCell) = rho_zz_old(k,iCell) + dt*( rho_zz_int(k,iCell) - rdnw(k)*(wwAvg(k+1,iCell)-wwAvg(k,iCell)) ) + rho_zz_int(k,iCell) = rho_zz_old(k,iCell) + dt*(rho_zz_int(k,iCell) - rdnw(k)*(wwAvg(k+1,iCell)-wwAvg(k,iCell))) end do end do + + !$acc end parallel + !$OMP BARRIER + end if - ! next, do one scalar at a time + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + if (.not. local_advance_density) then + !$acc enter data copyin(rho_zz_new) + end if + !$acc enter data copyin(scalars_new, fnm, fnp) + !$acc enter data create(scalar_old, scalar_new, scale_arr, s_min, s_max, & + !$acc flux_arr, flux_tmp, flux_upwind_tmp, wdtn) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') do iScalar = 1, num_scalars + !$acc parallel + + !$acc loop gang worker do iCell=cellStart,cellEnd -!DIR$ IVDEP + + !$acc loop vector do k=1,nVertLevels scalar_old(k,iCell) = scalars_old(iScalar,k,iCell) scalar_new(k,iCell) = scalars_new(iScalar,k,iCell) end do end do -! ***** TEMPORARY TEST ******* WCS 20161012 - do k=1,nVertLevels - scalar_old(k,nCells+1) = 0. - scalar_new(k,nCells+1) = 0. - end do +#ifndef MPAS_OPENACC + do k=1,nVertLevels + scalar_old(k,nCells+1) = 0.0_RKIND + scalar_new(k,nCells+1) = 0.0_RKIND + end do +#endif + !$acc end parallel !$OMP BARRIER #ifdef DEBUG_TRANSPORT + !$acc update self(scalar_old) + scmin = scalar_old(1,1) scmax = scalar_old(1,1) do iCell = 1, nCells @@ -3645,6 +3704,8 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do call mpas_log_write(' scmin, scmin old in $r $r', realArgs=(/scmin,scmax/)) + !$acc update self(scalar_new) + scmin = scalar_new(1,1) scmax = scalar_new(1,1) do iCell = 1, nCells @@ -3656,15 +3717,17 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge call mpas_log_write(' scmin, scmin new in ', realArgs=(/scmin,scmax/)) #endif + !$acc parallel ! ! vertical flux divergence, and min and max bounds for flux limiter ! + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd ! zero flux at top and bottom - wdtn(1,iCell) = 0.0 - wdtn(nVertLevels+1,iCell) = 0.0 + wdtn(1,iCell) = 0.0_RKIND + wdtn(nVertLevels+1,iCell) = 0.0_RKIND k = 1 s_max(k,iCell) = max(scalar_old(1,iCell),scalar_old(2,iCell)) @@ -3675,7 +3738,7 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge s_max(k,iCell) = max(scalar_old(k-1,iCell),scalar_old(k,iCell),scalar_old(k+1,iCell)) s_min(k,iCell) = min(scalar_old(k-1,iCell),scalar_old(k,iCell),scalar_old(k+1,iCell)) -!DIR$ IVDEP + !$acc loop vector do k=3,nVertLevels-1 wdtn(k,iCell) = flux3( scalar_new(k-2,iCell),scalar_new(k-1,iCell), & scalar_new(k ,iCell),scalar_new(k+1,iCell), & @@ -3697,7 +3760,7 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! original code retained in select "default" case select case(nEdgesOnCell(iCell)) case(6) -!DIR$ IVDEP + !$acc loop vector do k=1, nVertLevels s_max(k,iCell) = max(s_max(k,iCell), & scalar_old(k, cellsOnCell(1,iCell)), & @@ -3713,11 +3776,13 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge scalar_old(k, cellsOnCell(4,iCell)), & scalar_old(k, cellsOnCell(5,iCell)), & scalar_old(k, cellsOnCell(6,iCell))) - enddo + end do case default + !$acc loop seq do i=1, nEdgesOnCell(iCell) -!DIR$ IVDEP + + !$acc loop vector do k=1, nVertLevels s_max(k,iCell) = max(s_max(k,iCell),scalar_old(k, cellsOnCell(i,iCell))) s_min(k,iCell) = min(s_min(k,iCell),scalar_old(k, cellsOnCell(i,iCell))) @@ -3727,12 +3792,16 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do + !$acc end parallel + !$OMP BARRIER + !$acc parallel + ! ! horizontal flux divergence ! - + !$acc loop gang worker private(ica, swa) do iEdge=edgeStart,edgeEnd cell1 = cellsOnEdge(1,iEdge) @@ -3745,11 +3814,14 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! be sure to see additional declarations near top of subroutine select case(nAdvCellsForEdge(iEdge)) case(10) + !$acc loop vector do jj=1,10 ica(jj) = advCellsForEdge(jj,iEdge) swa(jj,1) = adv_coefs(jj,iEdge) + adv_coefs_3rd(jj,iEdge) swa(jj,2) = adv_coefs(jj,iEdge) - adv_coefs_3rd(jj,iEdge) - enddo + end do + + !$acc loop vector do k=1,nVertLevels ii = merge(1, 2, uhAvg(k,iEdge) > 0) flux_arr(k,iEdge) = uhAvg(k,iEdge)*( & @@ -3758,15 +3830,19 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge swa(5,ii)*scalar_new(k,ica(5)) + swa(6,ii)*scalar_new(k,ica(6)) + & swa(7,ii)*scalar_new(k,ica(7)) + swa(8,ii)*scalar_new(k,ica(8)) + & swa(9,ii)*scalar_new(k,ica(9)) + swa(10,ii)*scalar_new(k,ica(10))) - enddo + end do case default + !$acc loop vector do k=1,nVertLevels flux_arr(k,iEdge) = 0.0_RKIND - enddo + end do + + !$acc loop seq do i=1,nAdvCellsForEdge(iEdge) iCell = advCellsForEdge(i,iEdge) -!DIR$ IVDEP + + !$acc loop vector do k=1,nVertLevels scalar_weight = uhAvg(k,iEdge)*(adv_coefs(i,iEdge) + sign(1.0_RKIND,uhAvg(k,iEdge))*adv_coefs_3rd(i,iEdge)) flux_arr(k,iEdge) = flux_arr(k,iEdge) + scalar_weight* scalar_new(k,iCell) @@ -3775,43 +3851,55 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end select else - flux_arr(:,iEdge) = 0.0_RKIND + + !$acc loop vector + do k=1,nVertLevels + flux_arr(k,iEdge) = 0.0_RKIND + end do + end if end do + !$acc end parallel + !$OMP BARRIER + !$acc parallel + ! ! vertical flux divergence for upwind update, we will put upwind update into scalar_new, and put factor of dt in fluxes ! + !$acc loop gang worker private(flux_upwind_arr) do iCell=cellSolveStart,cellSolveEnd k = 1 scalar_new(k,iCell) = scalar_old(k,iCell) * rho_zz_old(k,iCell) -!DIR$ IVDEP + !$acc loop vector do k = 2, nVertLevels scalar_new(k,iCell) = scalar_old(k,iCell)*rho_zz_old(k,iCell) flux_upwind_arr(k) = dt*(max(0.0_RKIND,wwAvg(k,iCell))*scalar_old(k-1,iCell) + min(0.0_RKIND,wwAvg(k,iCell))*scalar_old(k,iCell)) end do + + !$acc loop vector do k = 1, nVertLevels-1 scalar_new(k,iCell) = scalar_new(k,iCell) - flux_upwind_arr(k+1)*rdnw(k) end do -!DIR$ IVDEP + + !$acc loop vector do k = 2, nVertLevels scalar_new(k ,iCell) = scalar_new(k ,iCell) + flux_upwind_arr(k)*rdnw(k) wdtn(k,iCell) = dt*wdtn(k,iCell) - flux_upwind_arr(k) end do - ! ! scale_arr(SCALE_IN,:,:) and scale_arr(SCALE_OUT:,:) are used here to store the incoming and outgoing perturbation flux ! contributions to the update: first the vertical flux component, then the horizontal ! -!DIR$ IVDEP + !$acc loop vector do k=1,nVertLevels scale_arr(k,SCALE_IN, iCell) = - rdnw(k)*(min(0.0_RKIND,wdtn(k+1,iCell))-max(0.0_RKIND,wdtn(k,iCell))) scale_arr(k,SCALE_OUT,iCell) = - rdnw(k)*(max(0.0_RKIND,wdtn(k+1,iCell))-min(0.0_RKIND,wdtn(k,iCell))) @@ -3824,28 +3912,43 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! ! upwind flux computation + !$acc loop gang worker do iEdge=edgeStart,edgeEnd + cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) -!DIR$ IVDEP - do k=1, nVertLevels + + !$acc loop vector + do k=1,nVertLevels flux_upwind_tmp(k,iEdge) = dvEdge(iEdge) * dt * & (max(0.0_RKIND,uhAvg(k,iEdge))*scalar_old(k,cell1) + min(0.0_RKIND,uhAvg(k,iEdge))*scalar_old(k,cell2)) flux_tmp(k,iEdge) = dt * flux_arr(k,iEdge) - flux_upwind_tmp(k,iEdge) end do if( config_apply_lbcs .and. (bdyMaskEdge(iEdge) == nRelaxZone) .or. (bdyMaskEdge(iEdge) == nRelaxZone-1) ) then - flux_tmp(:,iEdge) = 0. - flux_arr(:,iEdge) = flux_upwind_tmp(:,iEdge) + !$acc loop vector + do k=1,nVertLevels + flux_tmp(k,iEdge) = 0.0_RKIND + flux_arr(k,iEdge) = flux_upwind_tmp(k,iEdge) + end do end if end do + + !$acc end parallel + !$OMP BARRIER + + !$acc parallel + + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd + + !$acc loop seq do i=1,nEdgesOnCell(iCell) iEdge = edgesOnCell(i,iCell) -!DIR$ IVDEP + !$acc loop vector do k=1, nVertLevels scalar_new(k,iCell) = scalar_new(k,iCell) - edgesOnCell_sign(i,iCell) * flux_upwind_tmp(k,iEdge) * invAreaCell(iCell) @@ -3858,6 +3961,7 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do end do + ! ! next, the limiter ! @@ -3865,51 +3969,69 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! simplification of limiter calculations ! worked through algebra and found equivalent form ! added benefit that it should address ifort single prec overflow issue - if (local_advance_density) then - do iCell=cellSolveStart,cellSolveEnd -!DIR$ IVDEP - do k = 1, nVertLevels + if (local_advance_density) then + !$acc loop gang worker + do iCell=cellSolveStart,cellSolveEnd - scale_factor = (s_max(k,iCell)*rho_zz_int(k,iCell) - scalar_new(k,iCell)) / & - (scale_arr(k,SCALE_IN,iCell) + eps) - scale_arr(k,SCALE_IN,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + !$acc loop vector + do k = 1, nVertLevels + scale_factor = (s_max(k,iCell)*rho_zz_int(k,iCell) - scalar_new(k,iCell)) / & + (scale_arr(k,SCALE_IN,iCell) + eps) + scale_arr(k,SCALE_IN,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) - scale_factor = (s_min(k,iCell)*rho_zz_int(k,iCell) - scalar_new(k,iCell)) / & - (scale_arr(k,SCALE_OUT,iCell) - eps) - scale_arr(k,SCALE_OUT,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + scale_factor = (s_min(k,iCell)*rho_zz_int(k,iCell) - scalar_new(k,iCell)) / & + (scale_arr(k,SCALE_OUT,iCell) - eps) + scale_arr(k,SCALE_OUT,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + end do end do - end do - else - do iCell=cellSolveStart,cellSolveEnd -!DIR$ IVDEP - do k = 1, nVertLevels + else + !$acc loop gang worker + do iCell=cellSolveStart,cellSolveEnd - scale_factor = (s_max(k,iCell)*rho_zz_new(k,iCell) - scalar_new(k,iCell)) / & - (scale_arr(k,SCALE_IN,iCell) + eps) - scale_arr(k,SCALE_IN,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + !$acc loop vector + do k = 1, nVertLevels + scale_factor = (s_max(k,iCell)*rho_zz_new(k,iCell) - scalar_new(k,iCell)) / & + (scale_arr(k,SCALE_IN,iCell) + eps) + scale_arr(k,SCALE_IN,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) - scale_factor = (s_min(k,iCell)*rho_zz_new(k,iCell) - scalar_new(k,iCell)) / & - (scale_arr(k,SCALE_OUT,iCell) - eps) - scale_arr(k,SCALE_OUT,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + scale_factor = (s_min(k,iCell)*rho_zz_new(k,iCell) - scalar_new(k,iCell)) / & + (scale_arr(k,SCALE_OUT,iCell) - eps) + scale_arr(k,SCALE_OUT,iCell) = min( 1.0_RKIND, max( 0.0_RKIND, scale_factor) ) + end do end do - end do - end if + end if + + !$acc end parallel ! ! communicate scale factors here. ! communicate only first halo row in these next two exchanges ! + + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + !$acc update self(scale_arr) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') + !$OMP BARRIER !$OMP MASTER call exchange_halo_group(block % domain, 'dynamics:scale') !$OMP END MASTER !$OMP BARRIER + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + !$acc update device(scale_arr) + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') + + !$acc parallel + + !$acc loop gang worker do iEdge=edgeStart,edgeEnd cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) + if (cell1 <= nCellsSolve .or. cell2 <= nCellsSolve) then ! only for owned cells -!DIR$ IVDEP + + !$acc loop vector do k=1, nVertLevels flux_upwind = dvEdge(iEdge) * dt * & (max(0.0_RKIND,uhAvg(k,iEdge))*scalar_old(k,cell1) + min(0.0_RKIND,uhAvg(k,iEdge))*scalar_old(k,cell2)) @@ -3917,7 +4039,10 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do if( config_apply_lbcs .and. (bdyMaskEdge(iEdge) == nRelaxZone) .or. (bdyMaskEdge(iEdge) == nRelaxZone-1) ) then - flux_arr(:,iEdge) = 0. + !$acc loop vector + do k=1,nVertLevels + flux_arr(k,iEdge) = 0.0_RKIND + end do end if end if @@ -3929,11 +4054,14 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! moved assignment to scalar_new from separate loop (see commented code below) ! into the following loops. Avoids having to save elements of flux array + !$acc loop gang worker do iEdge=edgeStart,edgeEnd cell1 = cellsOnEdge(1,iEdge) cell2 = cellsOnEdge(2,iEdge) + if (cell1 <= nCellsSolve .or. cell2 <= nCellsSolve) then -!DIR$ IVDEP + + !$acc loop vector do k = 1, nVertLevels flux = flux_arr(k,iEdge) flux = max(0.0_RKIND,flux) * min(scale_arr(k,SCALE_OUT,cell1), scale_arr(k,SCALE_IN, cell2)) & @@ -3942,14 +4070,21 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do end if end do - - ! - ! rescale the vertical flux - ! + + !$acc end parallel + + ! + ! rescale the vertical flux + ! + !$OMP BARRIER + + !$acc parallel + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd -!DIR$ IVDEP + + !$acc loop vector do k = 2, nVertLevels flux = wdtn(k,iCell) flux = max(0.0_RKIND,flux) * min(scale_arr(k-1,SCALE_OUT,iCell), scale_arr(k ,SCALE_IN,iCell)) & @@ -3958,33 +4093,42 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge end do end do - ! ! do the scalar update now that we have the fluxes ! + !$acc loop gang worker do iCell=cellSolveStart,cellSolveEnd + + !$acc loop seq do i=1,nEdgesOnCell(iCell) iEdge = edgesOnCell(i,iCell) -!DIR$ IVDEP + + !$acc loop vector do k=1,nVertLevels scalar_new(k,iCell) = scalar_new(k,iCell) - edgesOnCell_sign(i,iCell)*flux_arr(k,iEdge) * invAreaCell(iCell) end do end do - if (local_advance_density) then -!DIR$ IVDEP - do k=1,nVertLevels - scalar_new(k,iCell) = ( scalar_new(k,iCell) + (-rdnw(k)*(wdtn(k+1,iCell)-wdtn(k,iCell)) ) )/rho_zz_int(k,iCell) - end do - else -!DIR$ IVDEP - do k=1,nVertLevels - scalar_new(k,iCell) = ( scalar_new(k,iCell) + (-rdnw(k)*(wdtn(k+1,iCell)-wdtn(k,iCell)) ) )/rho_zz_new(k,iCell) - end do - end if + if (local_advance_density) then + !$acc loop vector + do k=1,nVertLevels + scalar_new(k,iCell) = (scalar_new(k,iCell) + (-rdnw(k)*(wdtn(k+1,iCell)-wdtn(k,iCell)) ) )/rho_zz_int(k,iCell) + end do + else + !$acc loop vector + do k=1,nVertLevels + scalar_new(k,iCell) = (scalar_new(k,iCell) + (-rdnw(k)*(wdtn(k+1,iCell)-wdtn(k,iCell)) ) )/rho_zz_new(k,iCell) + end do + end if end do + !$acc end parallel + #ifdef DEBUG_TRANSPORT + !$acc update self(scalar_new) + !$acc update self(s_max) + !$acc update self(s_min) + scmin = scalar_new(1,1) scmax = scalar_new(1,1) do iCell = 1, nCellsSolve @@ -4007,16 +4151,36 @@ subroutine atm_advance_scalars_mono_work(field_name, block, state, nCells, nEdge ! hence the enforcement of PD in the copy back to the model state. !$OMP BARRIER + !$acc parallel + + !$acc loop gang worker do iCell=cellStart,cellEnd if(bdyMaskCell(iCell) <= nSpecZone) then ! regional_MPAS does spec zone update after transport. - do k=1, nVertLevels + !$acc loop vector + do k=1,nVertLevels scalars_new(iScalar,k,iCell) = max(0.0_RKIND,scalar_new(k,iCell)) end do end if end do + !$acc end parallel + end do ! loop over scalars + MPAS_ACC_TIMER_START('atm_advance_scalars_mono [ACC_data_xfer]') + if (local_advance_density) then + !$acc exit data copyout(rho_zz_int) + else + !$acc exit data delete(rho_zz_new) + end if + !$acc exit data copyout(scalars_new) + !$acc exit data delete(scalars_old, scalar_old, scalar_new, scale_arr, s_min, s_max, & + !$acc rho_zz_old, flux_arr, flux_tmp, flux_upwind_tmp, wdtn, wwAvg, & + !$acc uhAvg, fnm, fnp, rdnw) + + !$acc end data + MPAS_ACC_TIMER_STOP('atm_advance_scalars_mono [ACC_data_xfer]') + end subroutine atm_advance_scalars_mono_work From 148dc18b46ad348318d5d81da296c9869e3bb244 Mon Sep 17 00:00:00 2001 From: Laura Fowler Date: Sun, 3 Mar 2024 13:46:54 -0700 Subject: [PATCH 043/115] * Initial implementation of the Noah-MP land surface scheme (LSM): The Noah-MP LSM sourcecode is copied from the Noah-MP github repository and corresponds to release-v5.0.1 (at hash 12a0b51aa52f6f5189525009ff249dfcbc95d29a), i.e.: commit 12a0b51aa52f6f5189525009ff249dfcbc95d29a Merge: 9fd80cb 843a742 Author: Cenlin_He Date: Thu Jan 4 20:21:19 2024 -0700 Merge pull request #108 from NCAR/develop --- .../physics/physics_noahmp/README.md | 88 ++ .../physics/physics_noahmp/RELEASE_NOTES.md | 426 ++++++ ...ctored_variable_name_glossary_Feb2023.xlsx | Bin 0 -> 374306 bytes .../docs/NoahMP_v5_technote.pdf | Bin 0 -> 6824860 bytes .../hrldas/BiochemVarInTransferMod.F90 | 149 +++ .../hrldas/BiochemVarOutTransferMod.F90 | 55 + .../drivers/hrldas/ConfigVarInTransferMod.F90 | 172 +++ .../hrldas/ConfigVarOutTransferMod.F90 | 46 + .../drivers/hrldas/EnergyVarInTransferMod.F90 | 155 +++ .../hrldas/EnergyVarOutTransferMod.F90 | 187 +++ .../hrldas/ForcingVarInTransferMod.F90 | 69 + .../hrldas/ForcingVarOutTransferMod.F90 | 44 + .../physics_noahmp/drivers/hrldas/Makefile | 76 ++ .../drivers/hrldas/NoahmpDriverMainMod.F90 | 215 +++ .../hrldas/NoahmpGroundwaterInitMod.F90 | 326 +++++ .../drivers/hrldas/NoahmpIOVarInitMod.F90 | 856 ++++++++++++ .../drivers/hrldas/NoahmpIOVarType.F90 | 946 +++++++++++++ .../drivers/hrldas/NoahmpInitMainMod.F90 | 272 ++++ .../drivers/hrldas/NoahmpReadNamelistMod.F90 | 406 ++++++ .../drivers/hrldas/NoahmpReadTableMod.F90 | 1182 +++++++++++++++++ .../drivers/hrldas/NoahmpSnowInitMod.F90 | 117 ++ .../drivers/hrldas/PedoTransferSR2006Mod.F90 | 210 +++ .../drivers/hrldas/WaterVarInTransferMod.F90 | 242 ++++ .../drivers/hrldas/WaterVarOutTransferMod.F90 | 154 +++ .../physics_noahmp/src/AtmosForcingMod.F90 | 182 +++ .../src/BalanceErrorCheckGlacierMod.F90 | 163 +++ .../src/BalanceErrorCheckMod.F90 | 255 ++++ .../physics_noahmp/src/BiochemCropMainMod.F90 | 115 ++ .../src/BiochemNatureVegMainMod.F90 | 109 ++ .../physics_noahmp/src/BiochemVarInitMod.F90 | 193 +++ .../physics_noahmp/src/BiochemVarType.F90 | 177 +++ .../physics_noahmp/src/CanopyHydrologyMod.F90 | 141 ++ .../src/CanopyRadiationTwoStreamMod.F90 | 263 ++++ .../src/CanopyWaterInterceptMod.F90 | 155 +++ .../physics_noahmp/src/CarbonFluxCropMod.F90 | 268 ++++ .../src/CarbonFluxNatureVegMod.F90 | 248 ++++ .../physics_noahmp/src/ConfigVarInitMod.F90 | 89 ++ .../physics_noahmp/src/ConfigVarType.F90 | 183 +++ .../physics_noahmp/src/ConstantDefineMod.F90 | 40 + .../src/CropGrowDegreeDayMod.F90 | 107 ++ .../src/CropPhotosynthesisMod.F90 | 109 ++ .../src/EnergyMainGlacierMod.F90 | 173 +++ .../physics_noahmp/src/EnergyMainMod.F90 | 350 +++++ .../physics_noahmp/src/EnergyVarInitMod.F90 | 398 ++++++ .../physics_noahmp/src/EnergyVarType.F90 | 309 +++++ .../physics_noahmp/src/ForcingVarInitMod.F90 | 43 + .../physics_noahmp/src/ForcingVarType.F90 | 37 + .../src/GeneralInitGlacierMod.F90 | 50 + .../physics_noahmp/src/GeneralInitMod.F90 | 61 + .../src/GlacierIceThermalPropertyMod.F90 | 51 + .../src/GlacierPhaseChangeMod.F90 | 440 ++++++ .../src/GlacierTemperatureMainMod.F90 | 80 ++ .../src/GlacierTemperatureSolverMod.F90 | 84 ++ .../src/GlacierThermalDiffusionMod.F90 | 141 ++ .../src/GroundAlbedoGlacierMod.F90 | 51 + .../physics_noahmp/src/GroundAlbedoMod.F90 | 73 + .../src/GroundRoughnessPropertyGlacierMod.F90 | 54 + .../src/GroundRoughnessPropertyMod.F90 | 86 ++ .../src/GroundThermalPropertyGlacierMod.F90 | 84 ++ .../src/GroundThermalPropertyMod.F90 | 111 ++ .../physics_noahmp/src/GroundWaterMmfMod.F90 | 691 ++++++++++ .../src/GroundWaterTopModelMod.F90 | 216 +++ .../src/HumiditySaturationMod.F90 | 63 + .../physics_noahmp/src/IrrigationFloodMod.F90 | 70 + .../src/IrrigationInfilPhilipMod.F90 | 86 ++ .../physics_noahmp/src/IrrigationMicroMod.F90 | 73 + .../src/IrrigationPrepareMod.F90 | 99 ++ .../src/IrrigationSprinklerMod.F90 | 109 ++ .../src/IrrigationTriggerMod.F90 | 144 ++ .../physics/physics_noahmp/src/Makefile | 352 +++++ .../src/MatrixSolverTriDiagonalMod.F90 | 73 + .../src/NoahmpMainGlacierMod.F90 | 77 ++ .../physics_noahmp/src/NoahmpMainMod.F90 | 131 ++ .../physics_noahmp/src/NoahmpVarType.F90 | 31 + .../physics_noahmp/src/PhenologyMainMod.F90 | 169 +++ .../src/PrecipitationHeatAdvectGlacierMod.F90 | 64 + .../src/PrecipitationHeatAdvectMod.F90 | 99 ++ .../src/PsychrometricVariableGlacierMod.F90 | 40 + .../src/PsychrometricVariableMod.F90 | 63 + .../src/ResistanceAboveCanopyChen97Mod.F90 | 209 +++ .../src/ResistanceAboveCanopyMostMod.F90 | 176 +++ .../src/ResistanceBareGroundChen97Mod.F90 | 215 +++ .../src/ResistanceBareGroundMostMod.F90 | 177 +++ .../ResistanceCanopyStomataBallBerryMod.F90 | 173 +++ .../src/ResistanceCanopyStomataJarvisMod.F90 | 112 ++ .../ResistanceGroundEvaporationGlacierMod.F90 | 44 + .../src/ResistanceGroundEvaporationMod.F90 | 101 ++ .../src/ResistanceLeafToGroundMod.F90 | 106 ++ .../src/RunoffSubSurfaceDrainageMod.F90 | 39 + .../src/RunoffSubSurfaceEquiWaterTableMod.F90 | 52 + .../src/RunoffSubSurfaceGroundWaterMod.F90 | 43 + .../src/RunoffSubSurfaceShallowMmfMod.F90 | 52 + .../src/RunoffSurfaceBatsMod.F90 | 68 + .../src/RunoffSurfaceDynamicVicMod.F90 | 300 +++++ .../src/RunoffSurfaceExcessDynamicVicMod.F90 | 88 ++ .../src/RunoffSurfaceFreeDrainMod.F90 | 132 ++ .../src/RunoffSurfaceTopModelEquiMod.F90 | 54 + .../src/RunoffSurfaceTopModelGrdMod.F90 | 57 + .../src/RunoffSurfaceTopModelMmfMod.F90 | 54 + .../src/RunoffSurfaceVicMod.F90 | 100 ++ .../src/RunoffSurfaceXinAnJiangMod.F90 | 110 ++ .../src/ShallowWaterTableMmfMod.F90 | 176 +++ .../physics_noahmp/src/SnowAgingBatsMod.F90 | 74 ++ .../physics_noahmp/src/SnowAlbedoBatsMod.F90 | 68 + .../physics_noahmp/src/SnowAlbedoClassMod.F90 | 68 + .../src/SnowCoverGlacierMod.F90 | 41 + .../src/SnowCoverGroundNiu07Mod.F90 | 51 + .../src/SnowLayerCombineMod.F90 | 185 +++ .../physics_noahmp/src/SnowLayerDivideMod.F90 | 160 +++ .../src/SnowLayerWaterComboMod.F90 | 70 + .../src/SnowThermalPropertyMod.F90 | 85 ++ .../src/SnowWaterMainGlacierMod.F90 | 141 ++ .../physics_noahmp/src/SnowWaterMainMod.F90 | 141 ++ .../src/SnowfallBelowCanopyMod.F90 | 78 ++ .../src/SnowpackCompactionMod.F90 | 126 ++ .../src/SnowpackHydrologyGlacierMod.F90 | 169 +++ .../src/SnowpackHydrologyMod.F90 | 159 +++ .../src/SoilHydraulicPropertyMod.F90 | 118 ++ .../src/SoilMoistureSolverMod.F90 | 148 +++ .../src/SoilSnowTemperatureMainMod.F90 | 84 ++ .../src/SoilSnowTemperatureSolverMod.F90 | 84 ++ .../src/SoilSnowThermalDiffusionMod.F90 | 141 ++ .../src/SoilSnowWaterPhaseChangeMod.F90 | 258 ++++ .../src/SoilThermalPropertyMod.F90 | 112 ++ .../src/SoilWaterDiffusionRichardsMod.F90 | 180 +++ .../src/SoilWaterInfilGreenAmptMod.F90 | 94 ++ .../src/SoilWaterInfilPhilipMod.F90 | 104 ++ .../src/SoilWaterInfilSmithParlangeMod.F90 | 108 ++ .../physics_noahmp/src/SoilWaterMainMod.F90 | 270 ++++ .../src/SoilWaterSupercoolKoren99Mod.F90 | 127 ++ .../src/SoilWaterSupercoolNiu06Mod.F90 | 48 + .../src/SoilWaterTranspirationMod.F90 | 91 ++ .../src/SurfaceAlbedoGlacierMod.F90 | 79 ++ .../physics_noahmp/src/SurfaceAlbedoMod.F90 | 159 +++ .../src/SurfaceEmissivityGlacierMod.F90 | 46 + .../src/SurfaceEmissivityMod.F90 | 61 + .../src/SurfaceEnergyFluxBareGroundMod.F90 | 227 ++++ .../src/SurfaceEnergyFluxGlacierMod.F90 | 231 ++++ .../src/SurfaceEnergyFluxVegetatedMod.F90 | 428 ++++++ .../src/SurfaceRadiationGlacierMod.F90 | 65 + .../src/SurfaceRadiationMod.F90 | 137 ++ .../src/TileDrainageEquiDepthMod.F90 | 69 + .../src/TileDrainageHooghoudtMod.F90 | 188 +++ .../src/TileDrainageSimpleMod.F90 | 213 +++ .../src/VaporPressureSaturationMod.F90 | 69 + .../src/WaterMainGlacierMod.F90 | 158 +++ .../physics_noahmp/src/WaterMainMod.F90 | 209 +++ .../src/WaterTableDepthSearchMod.F90 | 77 ++ .../src/WaterTableEquilibriumMod.F90 | 76 ++ .../physics_noahmp/src/WaterVarInitMod.F90 | 310 +++++ .../physics_noahmp/src/WaterVarType.F90 | 244 ++++ .../physics_noahmp/utility/CheckNanMod.F90 | 26 + .../physics_noahmp/utility/ErrorHandleMod.F90 | 26 + .../physics_noahmp/utility/Machine.F90 | 26 + .../physics/physics_noahmp/utility/Makefile | 33 + 155 files changed, 23894 insertions(+) create mode 100644 src/core_atmosphere/physics/physics_noahmp/README.md create mode 100644 src/core_atmosphere/physics/physics_noahmp/RELEASE_NOTES.md create mode 100644 src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_refactored_variable_name_glossary_Feb2023.xlsx create mode 100644 src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_v5_technote.pdf create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/BiochemVarInTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/BiochemVarOutTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/ConfigVarInTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/ConfigVarOutTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/EnergyVarInTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/EnergyVarOutTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/ForcingVarInTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/ForcingVarOutTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/Makefile create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpDriverMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpGroundwaterInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpIOVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpIOVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpInitMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpReadNamelistMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpReadTableMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/NoahmpSnowInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/PedoTransferSR2006Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/WaterVarInTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/drivers/hrldas/WaterVarOutTransferMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/AtmosForcingMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BalanceErrorCheckGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BalanceErrorCheckMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BiochemCropMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BiochemNatureVegMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BiochemVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/BiochemVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CanopyHydrologyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CanopyRadiationTwoStreamMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CanopyWaterInterceptMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CarbonFluxCropMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CarbonFluxNatureVegMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ConfigVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ConfigVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ConstantDefineMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CropGrowDegreeDayMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/CropPhotosynthesisMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/EnergyMainGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/EnergyMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/EnergyVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/EnergyVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ForcingVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ForcingVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GeneralInitGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GeneralInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GlacierIceThermalPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GlacierPhaseChangeMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GlacierTemperatureMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GlacierTemperatureSolverMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GlacierThermalDiffusionMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundAlbedoGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundAlbedoMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundRoughnessPropertyGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundRoughnessPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundThermalPropertyGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundThermalPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundWaterMmfMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/GroundWaterTopModelMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/HumiditySaturationMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationFloodMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationInfilPhilipMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationMicroMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationPrepareMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationSprinklerMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/IrrigationTriggerMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/Makefile create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/MatrixSolverTriDiagonalMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/NoahmpMainGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/NoahmpMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/NoahmpVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/PhenologyMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/PrecipitationHeatAdvectGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/PrecipitationHeatAdvectMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/PsychrometricVariableGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/PsychrometricVariableMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceAboveCanopyChen97Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceAboveCanopyMostMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceBareGroundChen97Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceBareGroundMostMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceCanopyStomataBallBerryMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceCanopyStomataJarvisMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceGroundEvaporationGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceGroundEvaporationMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ResistanceLeafToGroundMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSubSurfaceDrainageMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSubSurfaceEquiWaterTableMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSubSurfaceGroundWaterMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSubSurfaceShallowMmfMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceBatsMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceDynamicVicMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceExcessDynamicVicMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceFreeDrainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceTopModelEquiMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceTopModelGrdMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceTopModelMmfMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceVicMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/RunoffSurfaceXinAnJiangMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/ShallowWaterTableMmfMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowAgingBatsMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowAlbedoBatsMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowAlbedoClassMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowCoverGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowCoverGroundNiu07Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowLayerCombineMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowLayerDivideMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowLayerWaterComboMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowThermalPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowWaterMainGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowWaterMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowfallBelowCanopyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowpackCompactionMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowpackHydrologyGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SnowpackHydrologyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilHydraulicPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilMoistureSolverMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilSnowTemperatureMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilSnowTemperatureSolverMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilSnowThermalDiffusionMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilSnowWaterPhaseChangeMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilThermalPropertyMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterDiffusionRichardsMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterInfilGreenAmptMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterInfilPhilipMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterInfilSmithParlangeMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterSupercoolKoren99Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterSupercoolNiu06Mod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SoilWaterTranspirationMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceAlbedoGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceAlbedoMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceEmissivityGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceEmissivityMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceEnergyFluxBareGroundMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceEnergyFluxGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceEnergyFluxVegetatedMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceRadiationGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/SurfaceRadiationMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/TileDrainageEquiDepthMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/TileDrainageHooghoudtMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/TileDrainageSimpleMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/VaporPressureSaturationMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterMainGlacierMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterMainMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterTableDepthSearchMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterTableEquilibriumMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterVarInitMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/src/WaterVarType.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/utility/CheckNanMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/utility/ErrorHandleMod.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/utility/Machine.F90 create mode 100644 src/core_atmosphere/physics/physics_noahmp/utility/Makefile diff --git a/src/core_atmosphere/physics/physics_noahmp/README.md b/src/core_atmosphere/physics/physics_noahmp/README.md new file mode 100644 index 0000000000..de0a3fb93d --- /dev/null +++ b/src/core_atmosphere/physics/physics_noahmp/README.md @@ -0,0 +1,88 @@ +![noahmp_logo_update](https://github.com/NCAR/noahmp/assets/43385564/1fb47fc2-99bd-4360-9ed0-6d5656c29626) + + +[![DOI](https://zenodo.org/badge/236657733.svg)](https://zenodo.org/badge/latestdoi/236657733) + + +# Noah-MP® Community Model Repository + +Noah-MP® is a widely-used state-of-the-art land surface model used in many research and operational weather/climate models (e.g., HRLDAS, WRF, MPAS, WRF-Hydro/NWM, NOAA/UFS, NASA/LIS, etc.). + +This is the official Noah-MP land surface model unified repository for code downloading and contribution. Noah-MP is a community open-source model developed with the contributions from the entire scientific community. For development, maintenance, and release of the community Noah-MP GitHub code, please contact: Cenlin He (cenlinhe@ucar.edu) and Fei Chen (feichen@ucar.edu). + +Noah-MP model website: https://ral.ucar.edu/solutions/products/noah-multiparameterization-land-surface-model-noah-mp-lsm + + +## New: Release of Noah-MP version 5.0 (Refactored/Modernized version) + +The latest Noah-MP model version (version 5.0) has been released in March 9, 2023, which is a modernized/refactored version by re-writing the entire model with modern Fortran code infrastructure and data structures. All future Noah-MP developments and updates will be made only to this modernized/refactored version. The version 5.0 has the same model physics as the version 4.5, but with a different code infrastructure. More details about the Noah-MP version 5.0 can be found in the model description paper (He et al., 2023b, in review) and the technical documentation (He et al. 2023a). Currently, the Noah-MP version 5.0 coupling with HRLDAS has been completed, but its coupling with other host models (e.g., WRF-Hydro, NASA/LIS, WRF, MPAS, UFS, etc.) is still on-going. + + +## Noah-MP technical documentation and model description papers + +Technical documentation freely available at http://dx.doi.org/10.5065/ew8g-yr95 + +**To cite the technical documentation**: He, C., P. Valayamkunnath, M. Barlage, F. Chen, D. Gochis, R. Cabell, T. Schneider, R. Rasmussen, G.-Y. Niu, Z.-L. Yang, D. Niyogi, and M. Ek (2023): The Community Noah-MP Land Surface Modeling System Technical Description Version 5.0, (No. NCAR/TN-575+STR). doi:10.5065/ew8g-yr95 + +**Original Noah-MP model description paper**: Niu, G. Y., Yang, Z. L., Mitchell, K. E., Chen, F., Ek, M. B., Barlage, M., ... & Xia, Y. (2011). The community Noah land surface model with multiparameterization options (Noah‐MP): 1. Model description and evaluation with local‐scale measurements. Journal of Geophysical Research: Atmospheres, 116(D12). + +**Noah-MP version 5.0 model description paper**: He, C., Valayamkunnath, P., Barlage, M., Chen, F., Gochis, D., Cabell, R., Schneider, T., Rasmussen, R., Niu, G.-Y., Yang, Z.-L., Niyogi, D., and Ek, M.: Modernizing the open-source community Noah with multi-parameterization options (Noah-MP) land surface model (version 5.0) with enhanced modularity, interoperability, and applicability, Geosci. Model Dev., 16, 5131–5151, https://doi.org/10.5194/gmd-16-5131-2023, 2023. + + +## Noah-MP GitHub structure + +**The folders**: + +1. docs/: Noah-MP variable glossary and technical documentation; + +2. drivers/: Noah-MP driver and interface code to connect to different host models (each host model will has its own subdirectory under this driver/); + +3. parameters/: Noah-MP parameter table (note that the original 3 parameter tables have been merged into one NoahmpTable.TBL starting from version 5.0); + +4. src/: Noah-MP source code modules; + +5. utility/: Noah-MP utility code. + +**The branches**: + +1. "master" branch: (currently version 5.0), most stable & latest version, updated whenever there are bug fixes or major model update/release (by merging from the "develop" branch); + +2. "develop" branch: (currently version 5.0), used for continuous NoahMP development, keep updated by including bug fixes and code updates (e.g., new physics options, processes, etc.); + +3. other version release branches: store different released code versions. + + +## Important notes + +This GitHub repository only provides the Noah-MP source code and driver/interface code. To run Noah-MP in either offline or online mode, users need to have the host model system/framework coupled with Noah-MP. + +NCAR also maintains and releases the HRLDAS (High Resolution Land Data Assimilation System) coupled with Noah-MP to allow offline Noah-MP simulations. Please see the HRLDAS GitHub repository (https://github.com/NCAR/hrldas) for details. For users who are interested in other host models that couple with Noah-MP, please refer to those host model GitHub repositories. + +For users who are interested in previous Noah-MP code versions (prior to version 5.0), please refer to the different GitHub branches in this repository. Particularly, the "release-v4.5-WRF" branch has the same model physics as the Noah-MP version 5.0, but with an old model code structures, which is consistent with the Noah-MP code released along with WRF version 4.5. + + +## Code contribution via GitHub + +Users are welcome to make code development and contributions through GitHub pull requests. The pull request will be reviewed by the Noah-MP model physics and code release team, and if everything looks good, the pull request of new code development or bug fixes will be merged into the develop branch. During each year's major version release period, the updated develop branch will be further merged into the master branch for official release of a new Noah-MP model version. + +Some suggestions for model developers to contribute to Noah-MP code through the GitHub repository (typical procedures): + +1. Step (1) Create a fork of this official Noah-MP repository to your own GitHub account; + +2. Step (2) Create a new branch based on the latest "develop" branch and make code updates/changes in the forked repository under your own account; + +3. Step (3) Finalize and test the code updates you make; + +4. Step (4) Submit a pull request for your code updates from your own forked Github repository to the "develop" branch of this official Noah-MP repository; + +5. Step (5) The Noah-MP physics and code review committee reviews and tests the model updates in the submitted pull request and discusses with the developer if there is any problem; + +6. Step (6) The Noah-MP physics and code review committee confirms the pull request and merges the updated code to the "develop" branch in this official Noah-MP repository; + +7. Step (7) The Noah-MP physics and code review committee merges the updated "develop" branch to the master branch during the annual release of new model versions. + + +## License + +The license and terms of use for this software can be found [here](https://github.com/NCAR/noahmp/blob/develop/LICENSE.txt) + diff --git a/src/core_atmosphere/physics/physics_noahmp/RELEASE_NOTES.md b/src/core_atmosphere/physics/physics_noahmp/RELEASE_NOTES.md new file mode 100644 index 0000000000..ae45c39f5a --- /dev/null +++ b/src/core_atmosphere/physics/physics_noahmp/RELEASE_NOTES.md @@ -0,0 +1,426 @@ +# Noah-MP model release notes + +## Noah-MP version 5.0 release + +### LSM capabilities/enhancements + +- Modernization/refactoring: + + - Major re-structure/refactoring of the entire Noah-MP code with modern Fortran standards without physics changes. + +### LSM bug fixes + +- None + +### External modules capabilities/enhancements + +- None + +### Driver capabilities/enhancements + +- Refactored driver to work with the modernized Noah-MP version 5.0 + +### Driver bug fixes + +- None + + +## Noah-MP version 4.5 release + +### LSM capabilities/enhancements + +- Urban modeling: + + - Update the local climate zone numbers + +- Canopy heat storage: + + - bring hard-coded tunable canopy heat capacity parameter to MPTABLE + +### LSM bug fixes + +- Several bug fixes in urban, runoff, canopy, crop processes + +### External modules capabilities/enhancements + +- None + +### Driver capabilities/enhancements + +- None + +### Driver bug fixes + +- None + + +## Noah-MP version 4.4 release + +### LSM capabilities/enhancements + +- Tile drainage: + + - Add new tile drainage physics and options + +- Snowpack process enhancement: + + - Improved snow viscosity to enhance snowpack compaction + +- Canopy heat storage: + + - add canopy heat storage in vegetation temperature calculation + +- Runoff scheme: + + - Updated formulation in runoff option =1 (TOPMODEL with groundwater) + +- Soil processes: + + - Add new capabilities to allow using a different soil timestep with main Noah-MP timestep using namelist control + +- Input/output: + + - Add new capabilities to output additional detailed Noah-MP water budget terms using namelist control + +### LSM bug fixes + +- Several bug fixes in inout variables, energy, water, and canopy processes + +### External modules capabilities/enhancements + +- None + +### Driver capabilities/enhancements + +- None + +### Driver bug fixes + +- None + + +## Noah-MP version 4.3 release + +### LSM capabilities/enhancements + +- Snow-related updates: + + - Add wet-bulb temperature snow-rain partitioning scheme (OPT_SNF=5) based on Wang et al. 2019 (NWM) + - Add snow retention process at the snowpack bottom to improve streamflow modeling (NWM) + - Modify wind-canopy absorption coefficient (CWPVT) parameter values in MPTABLE to be vegetation dependent based on Goudriaan1977 + - Bring hard-coded snow emissivity and parameter (2.5*z0) in snow cover formulation to tunable MPTABLE parameters + - Update MFSNO in snow cover formulation with optimized vegetation-dependent values + - Limit the bulk leaf boundary layer resistance (RB) to a more realistic range (5~50) + +- New irrigation scheme: + + - multiple irrigation methods: sprinkler, micro, and surface flooding + +- Crop scheme update: + + - separate the original generic crop physiology parameters in the modis vegetation section into C3/C4 specific parameters in the crop section + +- New urban physics working with Noah-MP: + + - Local climate zone (LCZ), solar panel, green roof, new building drag parameterization + +### LSM bug fixes + +- None + +### External modules capabilities/enhancements + +- None + +### Driver capabilities/enhancements + +- None + +### Driver bug fixes + +- None + + +## Noah-MP version 4.1 release + +### LSM capabilities/enhancements + +- Consolidate NWM changes into WRF version (#18) + - add unpopulated header required by NOAA + - add BATS parameters to data structure and output band snow albedo + - update MPTABLE for BATS albedo parameters + - add BATS albedo local variables to noahmpdrv + - transfer new BATS table values to parameters data structure in noahmpdrv + - add RSURF_EXP parameter to data structure and update MPTABLE + - change snow water equivalent limit to 5000mm + - assume LAI is stand LAI and doesn't need to be rescaled by FVEG + - conserve snow pack heat when layer melts completely + - change output messages and Fortran open/read unit numbers to WCOSS standard + - include a few missed changes from WRF + +### LSM bug fixes + +- Define and declare a few variables in physics routines + +- Noah-MP bulk urban roughness length set to table values + +### External modules capabilities/enhancements + +- Air conditioning fraction for BEM model + +- Improve urban memory by allowing different dimensions for urban variables + +### Driver capabilities/enhancements + +- None + +### Driver bug fixes + +- None + + +## Noah-MP version 4.0.1 release + +### LSM capabilities/enhancements + +- None + +### LSM bug fixes + +- Noah-MP frozen soil initialization- An incorrect sign change was introduced in v4.0, impacting soil moisture and soil temperature initialization. + +- Array out of bounds Noah-MP - Fix possible/likely array out of bounds by assuming homogeneous soil with depth.Only applies to opt_run=2. + +- Noah-MP snow liquid water movement - prevent excessive gravitational water movement. Fixes unrealistic snow density values during melt season. + +- Noah-MP divide by zero - Bug fix in v4.0 introduced a possible divide by zero when LAI is zero. + +- Noah-MP leaf aerodynamic resistance - limit leaf aerodynamic resistance to prevent very large canopy exchange coefficients with high wind speed. + +### Driver capabilities/enhancements + +- Add new single point driver based on Bondville data + +### Driver bug fixes + +- Missing quotation mark in spatial_filename check print statement + + +## Noah-MP version 4.0 release + +### LSM capabilities/enhancements + +- Add pedotransfer function option for soil propertis + - add optional read for soil composition and multi-layer soil texture from setup/input file + - activated with opt_soil and opt_pedo + - update MPTABLE.TBL with pedotransfer function coefficients + +- Add Gecros crop model + - activated with opt_crop=2 (Liu et al. crop now opt_crop=1) + - some modifications for crop initialization + +- Groundwater module (opt_run=5) updates + - move init to driver for parallel capability + - remove rivermask/nonriver from input + +- EPA modifications to output total stomatal resistance + +### LSM bug fixes + +- None + +### Driver capabilities/enhancements + +- Change some predefined defaults in user_build_options.compiler files based on some Cheyenne tests + +- Add ISLAKE to the preprocessing and driver to accommodate WRF files that define a distinct lake category + +### Driver bug fixes + +- Change PGSXY and CROPCAT to be initialized undefined_int + + +## Noah-MP version 3.9 release + +### LSM capabilities/enhancements + +- Crop modifications in v3.9 to read in crop datasets and initialize properly + +- Modifications in v3.9 to read in groundwater datasets + +- Noah-MP can now run with single-layer and multi-layer urban models + +### LSM bug fixes + +- Several fixes in Section 1 of SOILPARM.TBL + +- Fix strange Noah-MP behavior in soil water in certain conditions + +- Fix uninitialized variable in Noah-MP surface exchange option + +### Driver capabilities/enhancements + +- Add capability to include snow in forcing files + - Need to set FORCING_NAME_SN and PCP_PARTITION_OPTION = 4 + - Snow is assumed to be <= incoming precipitation + +- Add capability to define name of forcing variables in namelist.hrldas + +- Add spinup option to namelist + - controlled by spinup_loops in namelist.hrldas + - will run kday/khour spinup_loops times before starting the simulation + +- Add capability to exclude the first output file since this file contains only initial states + - and no computed fluxes + - activated by namelist.hrldas option: SKIP_FIRST_OUTPUT = .true. + +- Added README.namelist to describe all the namelist.hrldas options + +### Driver bug fixes + +- None + + +## Noah-MP version 3.8.1 release + +### LSM capabilities/enhancements + +- None + +### LSM bug fixes + +- Change C3C4 in MPTABLE to integer + +- Set some limits on stability function for OPT_SFC = 2 + +- Change limit for minimum wood pool in dynamic vegetation + +- Fix bug in QSFC calculation + +- Prevent divide by zero when soil moisture is zero + +- Fix a few bugs in the crop code; make DVEG = 10 activate crop model + +### Driver capabilities/enhancements + +- Added configure script for generating user_build_options file + +### Driver bug fixes + +- None + + +## Noah-MP version 3.8 release + +### LSM capabilities/enhancements + +- Added 3 new dveg option for reading LAI from forcing and 1 new dveg option for reading FVEG; + + - Also added initial commit of crop model; currently runs crop everywhere + - dveg = 6 -> dynamic vegetation on (use FVEG = SHDFAC from input) + - dveg = 7 -> dynamic vegetation off (use input LAI; use FVEG = SHDFAC from input) + - dveg = 8 -> dynamic vegetation off (use input LAI; calculate FVEG) + - dveg = 9 -> dynamic vegetation off (use input LAI; use maximum vegetation fraction) + - dveg = 10 -> crop model on (use maximum vegetation fraction) + +- Added glacier options: + + - opt_gla = 1 -> original Noah-MP version + - opt_gla = 2 -> no ice phase change or sublimation (like Noah glacier) + +- Added surface resistance as an option (now four options) + + - opt_sfc = 1 -> Sakaguchi and Zeng, 2009 (has been Noah-MP default) + - opt_sfc = 2 -> Sellers (1992) + - opt_sfc = 3 -> adjusted Sellers to decrease RSURF for wet soil + - opt_sfc = 4 -> option 1 for non-snow; rsurf = rsurf_snow for snow (set as RSURF_SNOW in MPTABLE) + +- Made the specification of urban types more general + + - (LOW_DENSITY_RESIDENTIAL, HIGH_DENSITY_RESIDENTIAL, HIGH_INTENSITY_INDUSTRIAL), + - now set in the MPTABLE dependent on classification scheme (i.e., not limited to 31,32,33); + - this is for future coupling with urban models. + +### LSM bug fixes + +- Fixed two bugs with OPT_STC=3 + +- Fixed bug in new surface resistance option causing divide by 0 + +- Write a message if incoming snow water and snow depth are inconsistent; + Reduce SWE to 2000mm if input is >2000mm, Noah-MP limits SWE internally to 2000mm + +- Recalculate ESTG in glacier code when snow is melting, will decrease sublimation, but likely increase melting + +### Driver capabilities/enhancements + +- Added instructions and scripts for extraction of single point forcing and setup files from + 2D datasets (e.g., NLDAS) + +- Structure for spatially-varying soil properties added to DRV and LSM; + Use of the 2D/3D fields in the driver and DRV commented to be consistent with WRF + +### Driver bug fixes + +- Zero forcing where not land to prevent overflow with ifort + + +## Noah-MP version 3.7.1 release + +### LSM capabilities/enhancements + +- Added depth dimension to soil parameters. + +### LSM bug fixes + +- Reorganized parameters to fix problems with OpenMP in WRF simulations. + +### Driver capabilities/enhancements + +- none + +### Driver bug fixes + +- Initialized some accumulated fields at 0 (instead of undefined). + + +## Noah-MP version 3.7 release + +### New capabilities: + +- A parallel capability has been added by Wei Yu (weiyu@ncar.edu) to support mpi only. + + - To compile with parallel version, edit the file 'user_build_options', + uncommment the compiler section with MPI (available for pgf90 and ifort compilers) + - To compile with sequential version, edit the file 'user_build_options', uncommment the compiler section without MPI + +- System setup and execution now requires only a WRF/WPS geo_em file, Dependence on the wrfinput file has been removed. + +- As part of #2, initialization no longer occurs in the first forcing file, + + - but in the file listed in the namelist as: HRLDAS_SETUP_FILE = " + - The initialization fields are: SNOW,CANWAT,TSK,TSLB,SMOIS + - This file also contains the static grid/domain information: XLAT,XLONG,TMN,HGT,SEAICE,MAPFAC_MX,MAPFAC_MY,SHDMAX,SHDMIN,XLAND,IVGTYP,ISLTYP,DZS,ZS + - This file can also contains some optional fields: LAI + - NOTE: a WRF input file can be used as a HRLDAS_SETUP_FILE + +- The timing structure has changed: + + - The initial conditions are the states at START time. + - First forcing file used is START time + FORCING_TIMESTEP + - First integration is START time + NOAH_TIMESTEP + +- First output file is now START time + OUTPUT_TIMESTEP + +- RESTART file states are consistent with OUTPUT file states with the same time stamp + +- Instructions for using GLDAS and NLDAS as forcing has been provided in addition to the NARR instructions (see /docs) + - Also, a NCL script has been included for preparing single- or multi-point forcing + +- Initial LAI (if present in the HRLDAS_SETUP_FILE) will be used to initialize the leaf and stem carbon pools + +- Removed dependence on external GRIB tables for forcing creation; now in namelist only + + + +Updated: March 10, 2023 diff --git a/src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_refactored_variable_name_glossary_Feb2023.xlsx b/src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_refactored_variable_name_glossary_Feb2023.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..8008b630b61ea845284e9daa37ea0f2bf1fe4d94 GIT binary patch literal 374306 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

dnm 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 literal 0 HcmV?d00001 diff --git a/src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_v5_technote.pdf b/src/core_atmosphere/physics/physics_noahmp/docs/NoahMP_v5_technote.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc0e9eaf43e6a3b565c48ad2f9c3999eaeb9a8a4 GIT binary patch literal 6824860 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

  • Ix{Um!eI_6>{I$qk z=~zqlP2evuoYaRN_X;yStZ49h6{Rzjm#*^cQ2pT$?=o^aI>biU$>RTBY%IMl! z*l}{w{M}`CxOD%x-oe7s4wsSPv(6&T|G}w54NZ)U?Q!Xt|Enw`E(6o&v6QZbA&m-+ zyn~*-i?tz*n1!y9A&tU64ppS}ObzwzX_QS2?2Z3-!*=$zhPoEe5TZe+Q+&_>0N(+! ziiNNAt?X7okrUNz`_&@r@XdtggG-TBDXNtW$_CYjvUZ77|5%=)p#PPce-;`PQf?!3E7GfK*tK@C+A=B51FME8s!`Eo|nhgHc zTu9Uj;66xR_%{UhpCZNoj*0#Uf&Ju|Y>fYS!y)(Y@=#`0`v2mglDc+g|7d~XAADKv z{|PSz2cU)O?40j7GC4H+c8>IoUSRC}0_a?W!nSO%4u2u|>)^`>U!L$a3cg0c*C_ZJ z1z)4!|Hq>sdjK0N@{tOSU(OeFIReM?x1R5tZ7=5+4=o)|Fd0n`bWnc$ zSu&(Z5dYKeUAw92Ow5TlO9q>G@gtWbQ-%~4@tD!?dS=^e_Gqvp4j47V9u;Z0hqq$E zO!EP~O>1n8^yOe5i^InFrW;-iVj-98bDhdK)8XBmu7=Ou9lkAu02L3@jO!_ zs1-DlbDD`5CWK&4F37+L`mpqcDktmk148-}dP>c&j*ktc&;O0x+-1W#8OE}l1R{oFP^XOl``T%G#kgGHNKop0^io;*Pzcp1v>=_++iBs&Sh1iKMgDx& z>E=KQ56^M$&S*jh~G8o)Fpatc&AzPD58>u*)a)|cT)-5AHH0G~HOrI1vmO$}}>1W-S!RHe+y zxU%ZKlr(Ig?Tw^Gn;MIMp zq|_LCk+z6ctoxw0ZO@~hqR044uvev22{K>_tyGED6IFJq2Aik%n~fWREZZCk4u(Fl zx|^6_H41?1@B4faNfY^y_Wq;4{k)eLka5Et?LhIS&G^`vN? zm#!X1@r)+ni$_gpRBkc%Cl#~lue8Eioo$hX-M)Vo9SS0Dl6D>^0?((Z3GtAI_4#j@ zf_YThVz_u0G&O3DzoAd7t8USAs{u>E$dR!YfF%b2VT4|R*E`pckuMvBhlD}lb;E+j z_ga0+ubrxnrUp(I3l9knJOob-gN3!Wnx!vz3)ew%qG3Iw)Mhc9Z7q2OnPGx7R7D)1 zmw;c~z2(>&=^tD3acB5ZxLK-3Z>eBeR}(@ga(ZiHRCy~ze{4yW_V_-A0c;4e3Mqzf z->77Jm$UFRi^NR$a>io}k-grEC+KSjv0EJdl5|p?w43SXv8K_ryJZLJG z>N!=7fc8tQI(hln$HzzD)}kAly&4*a&qHmSmt+z2!&WI;7OZw&1BBR_KbfCGq34Dq<6P(4dfEO_nVsC%YPH$Fhrk;JgXIYf20B?pvEsJ388Tg#&jDAd|_2SQB@_gTyoH@m2BFBUex zp49?b(_&j;oWoMv*$QBR=W`cny|!4(WXO>r_T@V*e+Hhd1-?bGSIg3Xl&5jY3w!d5 zpNb9b!(B*G!0JK~II6+_66;kJKE8!7kjbJ^s+2!?lu7;U8EIQtROTej6hdQVVz~twC7G2*V*N7d0{0=+;zpd0}&zHrCV&2zDP3(D}5-op! zxVjGY)N65kVTZL{JGM$)1MhZ+K7PcRSwW>y0tXhAU=&QF9Bnn~=q)~fgs>@| zjMr@-NozM?lO8X{5VKezzkXCZeDRE~&>h-)w89U91w)HZ1j%^-_e(cum+N>qMspCN z5j35kx6JkE&-F~Uy41bCih<<`YEU~bbE?G!bR?IQr`?VP{gqk930y%Lv5zhjEn6YZ z3FDPhb6r>mD{(3M*leC(F>>z_A6Vcl@HW*Iods|Tivz3_MF(H}=B<;H&r*ngiU|T+ z8|;+3l-v6(g`8aUOleY46|vN+zF177VbDxB|7RBnXf$Qg<;?2=t`~Gd;<;FMS=rY} z#?ImF8E)%W)|zIplDMhRE%c*kjy&MCTkv1+SEpUw;TN`>90AdlFqaPG-6&IMvYHP= zc5f|=(y)QtDeRu1bq-c)eo3UU>TWCP2nqg8e&U|VM};&p9WhgLa^I0`vd^H^W( z4LTaEoZVZ(LYNsUpUqf!NSo{2hD38oy-Z+sLbY+%w|E5h2cWnVC>}?~brR2;>`-)$ zz4MI?nEWEVbov<(J~aQ>=uEMcdQdlqQ1DVOT`AcNRthB(JRFp&wAE@|KsaDOe&j8= zcOmhp-$$lF>?2*}G5ossIU~Q8qgGmsn|T#cN#O(YjB7^+;G2XmYetvxv;Zn{D0xIW zVT%k|_n!6Bph{_L+VX03)$^oA?FO_TlY+zrFcr}bMPe5%s3NIJ>3Ze*S&n(WK@Dy`>DooC`Orht4$FOs@M?v!!p z>3Q#7;^tl_WDs$Vi6~K|k#W45_uIK72NZJoimzMij6}v7a>KQe>E>+o(;dt4$Y&jd zCNMTdZJXBwCrjp(1xxId0n6$k>TWngLrGoKP!)6MxO|7)d?kB5oaGSOIEAP^lv>6- z6<5F_MQk~>sA9uO(=rG1gtNeVJg5~ET{C!%0t|=Goo|AX%`-i9_>EM+|B`pEnC({N#EUNR^2X7(%hu5Ph74j zEaTgD>v~AupC1=*AO>N{hpfA+viVV1Nq_Wd#^x73KL$~EQG-uWCO`e&-6ryqN>mg@s>e^?<(0c};kt8Aka#r{nZFUrEhcdiSZ>;_${8E(YQA1D^|+7^QuB+(Ylp!2 z2iPQXJHFCEVR5xe@hJx2dASSPW^>`f`K5M1imOv@r3WfQnfTm?@^=WiK4`nlR+%1k&TjoL_TDl&jwZ_% z6*DtiWUO%zVOsVga|0uIN&ssZtuGyw#MtqeDR?(60B^oQQx|(v+ zriQ-$%JwB1wZ-zRz9MZ6+XvjLOU5*^QeV1mqE*^ z>Z_3%GCEIKlSB)ZMD&lu0~R>G{6Gur%;Dx23i9OZPhU2MShZrE=zj&*Nr|Au(drUPRln$<4kLV$SThxfP$gOkF?F$jN8t0Dh`(zU?Dg@dkpssiE@Ebo} z2tIVJew%LftS2>u_t9 zH=Dr_kC1fI+#@wfk)=eL3Fuh5oqWw)qaGPgDrE}`JPp>_*5Fs`y@hO5yj6yNT!Fa; z>&`M2T3FQD;1XnM!W+5RdN!{}sf!e8Y8&%p@GNVpOv(dTA=*+y}^=(Xs@)^GOz6=~O9HQIW+6tCx7E9q^~#g)+c% zJL6@*VwqsyQHBN1qVQ*1j8yHSnjj&MJEJ{-`~(!PA~DpivGl&2ZGf~}lgb6^beLu1 z=GJW(kz@|veqjmrzSe!O26y^sl%`Tcg;ZLPX5PGp(ZLVdik|JuXD$vqr8=)%XwZl!_qrU!|LkS4hG0Bhn6QiCasDLr!A+!sN;i^uDu2J-&CC*f?k48GjF z5Y1!3xzmIdsaQ8>X69t$CJR~OK4qshW5$!A=x98IFvX1&%Zqf_p#I}r7{a8&sirxJ zj1wc%{n83N$rkm%*)LJMla)B1)JC1Pe`at?rSf;tsyb;i$lKIt zB{zD$L)gFXOc*bn9C~mFr=CBt?ZUJ~?fJ=1rq7tOVpp?iX0Gcq9=d3Lka|P9UNUZuqD3~~>+9zN$Bsnbg zZ&+%^i5UsiaY->)ApJnR+WswwPEFb*lb$Dh^qEhOiOz~xkXh@qC0}YmS{-v!=!L#8?0ev{z_|ny zje=!*Jj`5LdBE}`ll5_ec=)4~Eyj)`xrik;HW0_Vi=i zsPqxj&FaJ?p^x=(q70ysVZ4edqe_KGs7w(|*iS+3X+tf9f`UQhK9?e`_7?qI1;0zw ziCC_41!d@k$0#C*M1&2I_^4l6P->04D={jvBu#Y-Jj}_{2#4%C+Y>Oi6Z;Ax0np2g{9XG^aoi3-d>qrW)0d=_$m5bhM?~%#~+Dq!{oLb{r z42S&DS-0{CZ^{Sel?zo$TFFgfCYPFhwr=nb58W!S$QP>KuS#W{EWIPLy!Vd=)Qr3? z+7I+-s^$a?vSn$Vn!z^l+OJ%`#)^&3EKaW%=2wDqI#stl^WDBK>xk5h*3+mY=d0Lb z=?9jiRdi-7=r26u^9ADAn6e!7bG>rcx^gnAV;1sNFZLdNMiKQ>z{+!??A|z_Og~N= z0_d$Eo+;KRg7UA^6;whNyK(BU#eV}$!gYa+o-%og0C{;o8vL(Ho4ux$uXC-y4!&CQ_Yji7P!&0Nh=c{Y&-5cIUna9!5cw-L2DQ zpG(BP9jBA&tqHrlD_N^nx-H{S^lhjrpBNgNCE;h9>JdJZZw;;{1tzwX zR7Ghnh!|3Zk!z+Di82uC%eJ$QP%kUP-V?o z^#0gXU62zW@S6^Jp7_U#7C?*uwg;VWk%g7il(2aQWP3Berv$E*L~ouDI{R&;FJN?@Obd;BnA+sbz*;?kg#w7$tm9DkC?qT^2uE9S|Qe5lF&P%_rtbC2*Y4RecLIQ8j z__Wm-X&ziAt7Rv$uIygErpFC|;X8+?FyU(|r)IsooXT@YA-GY1kW;QBGFsx0s&z|b zl&Ug$ll(1R{eoek26=2^d4uC1#eiym5~uuU`W+0jh?OB$(^R&`2!+b10pg6KU*w91 z4tfNWtezD|6HfMmn1u%nr#IHiTKtDrLCh5bNQ`skN&`$@MB7)t0f0!q5FaG@a+X-U zw`XHm;Z)r&IvB%J&kuwynUh$n$C9k=J$zqtZ@0zJOOm^2p?*)d!wy7L37!;&F><6Oj!6vLm6n% zOc{=VoFsP31jk<*=skpNCYV~W+%g2kv*#7SC9-^3vW5k{z`m3EU$R=xQ4~U%(H$W6 zifp;{jQr})c}>?4WuUw_eWw?c1^_jXNM?$m>+exn(46xKm*Fh{LVfcCe8sOwpfl{Qk$Y)$Kn; zJzFF8PB4?8=9wAK8!`Y51%ON8+g1%VQtdKjEcchp6Y}acOzf{ng>2}keImwb*%w#M zX^slx=O5%XNrwbg%#a&C`bQ6_hVzkGYZkAEyto?M!{tt3y1@fQ?xrO{dOdCRuUS)2ORc{(7%c@FM^KTW}0fafM5o6nL3ZPYhAYwStq%BZuey>XG# z2%Fy2==WBi<-;!=3(WANjWQKz#2i(8l}6)Jj+)s*p28 z-DG9XX#6d2#>?b5{fruvxvuD;p;o7;mRnK1AqcnQmV0nMWLe((nHg)BMM#X9P!xs2%k zYE55v3@abpOvUCNz!SEqj>*V=8||*80C{qladJ4;Kf~>5VvGXC^3fs_ZkiZbh>)C} zyjoyXv$mTq_i^$4uW$FDWbM$^8noDPC56x#rruJnl-+N}8wW;dXj@|68c0?RhsTGf zk5xflbiS-1F>*;~TYP~wPbbF`GxiKY{!oUfGCr&@N=8kg51KgDMIAS#Y&XTOaezBK z_I3w#P*_2H{F)3C-GCtrD|9Z=sPgWQ#(cp2#OzS-W;<(O%m~aVRw&H7J|w?dEhNYi zY^=uQ^<@c#0Fco6bi?fMZLTxneJ{>f1gRd&SL3_VW)M_zz^a_9rRMqOgyy-KG-EBR z_IY#<&O{UZ_FXVKHOp8^Mv7@`_S}<6702Jg!7Q(7;fCG~&Ey-0x08sWrsF)@cRI0O zrTzRY4#{*aPO(dZpbAqCJP@G~v-WO4D&`nmd^~Aq(0i&8nuX0avNhGk9!rev!>JET z>a#vBstVc=vr<|n92N6&OLj2EM=Nc?yso4BHeZ91G2+`tg|ubz8FOaZEKqN67ip73 zbPlRAN78{V{p7GpMEiJFh$Srz$`A0sC!R_nU{E^oIRKps<}~00!s{0?46&>GWj}8L z_f8r~f^CXD5^w^K{WiIeXGM?mSB^B-esH+ z{5DqFYD3&pb{fEsXcrCU++3*4EznAb?>O=}ZQREzhjTzMhFjS8SXp3LTi1nL1pn)w zOG=rjl+mKbS^2)o6ccS3Tnt6Rj0?(dbUqGYXL=kWR^5Q=ZLq9Nx9s^zXdWTnAvB?S z=wQe=(>{Zs?r8V`7)cYx$giRGvbQy*IvCcQ!jI_W#Z}m2@seRy6s`Kyz3Z%#y)`TGufHH1+)$k5do%`GIb9TfX%pyV622f4 zK%k-)afcxVl-=h*o{{%c9%b^`p?KDt_g&QSif4_*f7|TjwSYR?8XI}2fL6VE+`gIm zc41ddR8&=6#-l$iqF*0HEPMM{zHX@=#&waeO zRJ@5UZptbpcB2?F;4j!PY`+ZBIBFG^)F7hCa!o_>=oqeR>EedrgRcZJJ%SZ!j?V4b zuKPF*L+VP8y?qmkVvQ_mjOMD4p0D3I%<=SLMU(-nci+45)mzC?qD8+*r0xCwiW8J& zgSQ`EqG+(fs&dRE!{V%x zR7_rj>$6Z#PFp&w&muFFW}7nTGh2GKyN=3klV{=gxh52LtYv6|B=A7gplc7eRZvHt z@!gXF#NJPD2IO))c+sx2du0dT>mws|F84^$5iwG5|8j4Lm-Yi zWc84BKcPK%g&!Zn1PWb^QC|Gb_2Jx$u5rX5fq;Spc@qT%16%`)iVBph8w?s2El@Dv zlb~Qf!>gI%eAUr;>RNh7-2=U=_l0d+>jzV(>)DiQlp-Bg#DHOq`v3IdsSasBja#i= z{*Br+ZNRg-A5f=`oW!3Cu#=z;`{Rc=VNR)%`Z~ND5b#+EEmqF8@qRB-knV)nXSgKcFj`~TO-flXsWp$iOrlF>7dUi zDzMHzl|?aCMw=ujp$Kl~_gKw8KsTvDQrEDB8gkB(!}Y7?)m$DrLmRIm(9+2g-x(Q2 z-W*FjxGr&u$<`G#VnaHZKqWnJC}rVWk*>neI5PN6Xk#-R7Q3R|@6B;iO*Mr$mKwx8 zcHirK5L|=0WtO1XpJ?REOzV48;nnl(0y?>*WZqd3#iBye^dTVJFBtx_&WZy#Yd>mT z#%LvEE$d*O95HR;Y-2TQtX}?1Y|Nc!m}!=F%$wdS>!v@0ZE5_(b+?Gr{g{Ry`|b$6 z|7Kb^d~4Tmh1V@~sF6s!fIm-?PtM4>h+a{n*Eg!dNq0 zH_os`>ne)XuZ!w>2_u(5hjmAYBTz$xo^ByBUx6YgA|v?M!)C?2e;qbR)&e`Tw~{y1 z>TxSRv$qf*(q*}0mRrM><96nU5aC*riLmhJupuHa)qANS=TB{VSp_R9n3qR}$M?tKi1V4v_skgnH4LWDxQ3Y8S>QA40Frm`ZG|%x<1Wymfn>LPnX2ULsns;$KC88)WG1T*WN54|twmYU z1K#9xX(T#98dy8^ULva>ABIQdkHwr%9P|!YVekk!dzIhaRTf_66bPF7VNS zGCQ#H9~G&(Q0_(hK@y*Ow&=Q5O!$1m`aDj1+Aap86Kz6SGp*(?&i zhxb{yZ8Lt_Ofo5c@q6Z%7`w4Iv%w2*VM96ty+9MUoW?tOGz>uI!!VitLAkC6q((IH9sUZ z79z2oDu4_*$BU;Nr+mzS)X?sU5(n>1s=(`L$go{>z3pe*pUW|Rg9I6<&NDU=mZT*}!k=cgc@*YNsFdp*c2OI(IOx#M8 zTpK)#spmFgYGD$M%Z{tTeXYZD4FPb@`(#~<50ddAk-Q_%=i0$<%A#sc#Km^ht24_e1leXd??;0O{Xw*oyCjU6JU>0Q+M#TWs) zcqB|O9BpU)x>TJ&w*>r}GHfy)02d=VlSXfunuvN8KD}?WVI}KAP?8;Paoh>&I_>_B zftT4*+2R6fb**R*5{7LFtDkRXm&4}E^^&6XYs7F3UdGsyzyRfbonNZoG3p4VJH;X; z?x-~eecob>m2HK~KzlRgi0_FkBq@6g*9>iRV^-C!#FH$0K=DP{ev?#nf8!IR`wYOh z24VVD9mO`>7ahw=ptNV-9TBz^0rRvOI9f;8teQdbZKj~aZrFOa(sd#{KefOT05B_D zq`!sxVrts9cHn6Gn#5wa@iO@!z_|aO9C=PVkYFJ+)gqyN!#RoYpvGlIL5s%*b?bXO}V zhxJJ;jM`l2fu}3T2Xw{~Kg4L`fqx|Fr5(t}sDl`v8ZC6z%gVmmy0gHLX0ht1Ras$r zzYO)~P^Et7jt5nj!n}2@pezeD-HVRz(kfPkCml_e`e`ety$vfZgBr^|tD70vE0XV% zo8O}b0ClDm$Owt3~;a!AbVY)1pN%I8aOe^C-rC?hpk6J6Oz>oX%RMQCn zQ{-k;aEL}RMgW|@nSJ4v_P8^KKqnOfdNZrp-nz6c>ZHy5y-gFd=;}{z;!ihUe~o%l zsW4?4D*Mm*X$sR4q~EEw`X4d+gj=B58mh`l*edKQ=cwrJCh6(qxWuZaoq977`mo42 zmN1+jsA8QMV9shE!c~}yM6@~ts=MvAnwK@YaPQ83g^LZ4f#LfZ_U&Vxvl78OB*n4a za@KuTHf!BP2ZRNRtAyWPS)y~(WaOAPR;&#JBAgoT&qUjp19*vXQu6;T#Z4DBhYS z!9=iSYD*HG=ub~-Dj-hZv4cH*F4zaz7xOs_`otx`30ke_vA!UNtWSc3ElQbE?%}=R zd=VZ;;Pm~6qGkC*s^E!;dijy@^Lfp%<}RgzUJ1C zjFzslC=O68vaS~U#-MoxYus=3c4+qm-2@5ath89F#M6Yu)MEOdM1Izq-!h;O*cTC} zJwvN~ia`=4M=J`{Jn1JQ#SPFY7s+d4HQfTOU0TdZ!`-N>gcgULq z_ISUrYp@=h;4~@s87Q*~JYX4!o{js>^sD@<6>MwQtdsE*AKpecS$eEde?11iRZ_m< z(zzSDUXAhS`j7ouvy~S_Nx61KxyIon@E0hQ+PU?8xHJDcHhdJDmai1Sr#raqw&{g@ z;S3_nZWiiL1ro?l>A5QNv@Yx>DBR(Al)X>GqiV{KY=!SrJ}obU3J?bEZZ<|{b+qh_ z4&-PAq^OYr;Ls9o7txE+s!4q`a2jDDoPGmg;D+Q7q4*)h{X0S+{tz(qyw6klrB6(2 zd^?+%RvKb=guJV4D)TG~J~|uC5b=@g#ofCA@sWKJz;l~R;Y8ko!QwVw#`M}g?0P;P zkXFcR-En?zC$X#Hlbv&T#3RCRU`0IK?n&L5mPo z;~fj@=raWe=?`5!y{K2D6$<>i3z@FfWp-(}K3U1RV%U9Tri~`q)c7);6qJ?Tjr6Ikk|6%`54d6_R&N%3PUTPekapP zZ#R_*h-Py(?K=onIAS2zPBPf0iR2YMI87LzG`*#-okt?}D!FxmL83F-?dXoAahk&> z$Qj>Tt+X;}DfAq)ps@J+!yM{aT_9$c>siwoN5?V4srS`yJiwV>(eq9V>85P{GT6Uo zG7*m>kG`48gsNFx5LxUoq(1_rLn%+*rBHz@ZyRotT!wh>Nk|CcG#)sK-7mBNMZ+n` zrd%m_DkODW%~suGMqesPs1;T6AcLZMLR-a1S3)5D7UQ`ZAIu2??dBeA#cx1+6KobY z+pny}acvIf%+yD*!Y|`UN48T?Ud5b=3N^4hdGLloQC&$@zgqs7f;(D6mjFc;J<;;h0^; zQr-_raZBx_FV(d_%0dHd#gUR`StfN5whXSSJXsO?kw>bfsC;J%{#8~IgSTN_01y+J zZ*@;Ww?GhtuoLNed>12-lc|||m-)UXrYIvG8sR%g%~|lu`(^~$B3>xKx*vZd#Cxqd zOK-U1oA(r>?7|8h^{wD;Lptz}w6(2;lG!Q$9l?)D^5Uf2cQ-1 zRF1Qr?9N?~jd~ySpk8RCLVu9)Qz@b`4KL!~sQd3tjDgiIc#K z-6Wmjio;pRmlFk`)!W&mSK;ka$vokF?LjJxF;EtAMf}6`F z%+#<|9Pkih)0(;9zeH*4DB??OtEv zZ`0(wwaTzC{%>7_AO>PO6uP*n7EVAaSR6UQb+i)xlRQgI9L|15YrUe5y{y>^K$t!=5J< z)wSe8-<{M*&RT2<5ee-0bPC!LN{N&E$24J6hnbufI3cDg&w#=&P*rqRMA6O0<1{{) z2p6>DsnZrCZ`X&Qin6KBxPE?bi|3Vje7nh&QbSK7Lv!_V;75Rt;cFK;*1>XAs%ed^ zmXnF+=m%U;R53Y7kbcGj{GYIn4>&~p=+g(8VYrCh{eJ@+{R5fuzl4qczva6ye`tmO z3l0fpX2yTZcVXlBceLq$%69qlqyLcXGE4#rLW}}Y4JScP0wV~4*u!tQw1_vHwZZ1=lOru#g7)- z8CoKKa8Z7>wY770(qdxgWcwScr}M!;Y3uyKW$8rx#|VlH!j5+KLU!(2e*i{yCT3y| zE@mADaYs8B`;W7QmHzG+isC{HN({=52DVQ22974SMjn50PyX$|kHMEQF}5)HFF*4^ zi1~*#^P_UEKcpmz42mXBb}o)aCVyBm#Xj2crwV30Mql@?y ztGlPxUY%=``)&~@yFm9=P0Fqq0e(Fjy@d$lm!^SJ&#Q#UqRZQ{(|aGT)%B_*NuYLn zCOPHB`bmsKOnJn-Ynx~OHoaQe*~zvKljFLak7v5^`9N|!KmbFV+~iAK(ZEQTuS60h zHZcB5+ag^?qZ*^TDvKv${GyK2l62X<-WHV ze>HSxeWcT;=Mtr{KLR`(ap#`zf@m%tRad1DRbfUV;_i?ZXXaWfT*1C~LZlTa)b@=Y zy1e{h$tHJErD$_xkiYK^g4EX8RKo z3%nM2RXoh_;UErT>`L&&4*pnIJ%dF+x^4qNTt~NiP~tJ&99El$>pdq1Y4#VSo}{Y8 z+)IZ;fou8~6Q$obluA#kT`n~F5xZh1Bz3)fhJ)kv=Ul~9B%f8qh6=#xAqroVpC)wW3+FDz>sav6X&{e1c~y0Kl~xW`77J0o(NX7BZ_%dNA*lOi zgF}E93p@k!CRgR12KPq}RDWQpkk7+zICS1+&Jr;{$+N^&e*&>B}F zGz9pCyadKfO;VlrU?2u~cbdb5KiA*FMh!ArQNu8A1idYw>{>aV+4;c5u6IxN!uNM> z^-nX`;d|L!PeK`tLK~|N$d>wx$&T-*7Vpc07?a+&i$s6T)49NpUHekrVELGP|M-l( z=&ZX~KFQRtkGPK7&=&B6AKjL?+g)LHL=1L_NPe51Z2#VVVD`E%zCG zuHtjq$ziFg*VdqKA^o#OJwILn|97-2*HxIRuW?%14aWL1c6qEkSt1x2DgmuLTq|p} z#S_{>-hxcrKPbz+K=S*{J)EOvQ)Blwib`iw6_Ptj2g!4EJga}lBq-r+?SRN%I<~8{ z(BZ^n4iR&8<*Alsz`_sN`P<7!TdIUm(NVix2hl>QRu(!b#;rp4hm^%(dKiORM%`WE zXhN4-wB>x=jXqBk{D4iH;a7Xa!>ph>uf`?a#JGjr-($d~Dpw`j>U7sRY%oJ)w9v0Y z(jm?gk`Ex!Q%uY>C`!dB_S>w*TyDwYC;Uxgc_6R>Gd%S<@aqIgV9L>(@~Fzus^)$K zXGSwdPLueAa<9UfC-0JZ!UPqnQMnr)wys;jql9DhQHF<&hswIF+zykMq1<-xLr$v5 zGYRKllo4jJ)hkc~C(g^}b%z?>^iyfEq0ud?j$afE@1OU2ocW>7rn{m*`Y8FbQV12ov^_8EJldC~!B2nh{9@$BM%z%BfvLCTvMtJ>ora zn}^_fR3jNcd{3WPtUart{Sq}%wfp7kNSub04pU+RvFS$y=b&sE4krBg6ZXn;JJ-Mg z^V8j7z0P_t8AY74E#)yADCo)lf}6M*LH4PkxkmHn31aBIrA&H)S~0Q=B-T^Hp;Cj_ zNe%fS)=MC4b z5cUAPOkE`|4D9BKlI|0{H$?5e&UF7Ou3qK8eCslYdy%gtCjc zc}9={>2)yi#dj4dsv^);97y?k*9XY(P^}|^gRkBo#|r>G6z$fc%DXUsP+I4x(2i<+ zC*zpTwhrr`(1hQU-B4Qcg`weu?4e6223Po{Cfs0Gs-a{n$v)?OKkhH}t5A!}utjcM3umJbPuYzY) z`OqCG>O8Dan@S-o0T5}d6wf~Kf>y0u>%xkX6e`BxqIdc|zCuYYbSM?9OPNZ+OzYt) zY%}J1MCvS6+eaHr1wPpmzWWnAkAt?9}os?QgPd(b`g4QN^mY% zc)$##od|26E@qi^ZIMAWkx6UY^`-7o=1|`}^+!f?^^=A>WyBLJdbqIc^q8maSyo+_ zt#t*Fq~L=(f99KtNqKilxpZoQ-3rn_8cy=_Xj;XD*&{)qk-7+%Cg~$~W-zeZp{XUb z5n)2hhPM$-aFta^ll4QZ{qhI@Dt;+K+3!yo6AZ7gK%sW{ifYkx1H&vYWezPEpU~!WMXzy?SFc6g(GrLcRUA~k2h0@gO%Xs(Inumw>bUfI@}A<4)-Iq7l4K;4ED5=TFZnyb$Eh|J{#BXEy zUXe*I;14#Tu<15-a9?SI6F(7*QvJlk>GnQ`+$vExu4Ylw#7xbfYUcMk!Vz@f&qSOv z#sEjskN9w?Q z7ek4CrhJE?%^v$Vx^gjo;oN8SassETC(%B6mf7X6iG=KE7QKUGM0RfE`FKl)B40E} z%oiIQ*rlr*DrRYJwYD4(uPW=lrB^ub_LO#zK@dB;ct!tks}v_fF75~(LvP_<0YInOrT8HPdm zJ6FZMNXecUCzFQXLvfRZ{;$S#9aH#|gOW==q`Z({u9>CHUb&oPN-oU&ey!{&5zFzC z1zc#Nb)pC5WMca3yD#5$=dGyC&l}Ze(j}aU(*hy2szZMx+I9sPdS4-pj}&iJ4IykGdb9DK)ZX0g@Vlt*?Z9s zOHZvu9L4(NUQ$+41lSb=8@<)?cnz2)3m&l^I96WGPrCc%<7D2NFrdkVK`8dyc}$k) z%$8>1fhf%#$;8+Y=lwq)6q8EzTjB$|1Mqb->;l@nw6N>3T-)M?`@T9eop~(QVAMHV z6)Ey^veLRwEWb-sc~Wo);XJART9@gqCgyMK*j|y&ra^zEDZ18)%l;%NRCWipv&Ndm zhDOZC*WagrDIbNRtriFJnb$)~EBUBDcyyha^qjxM*(c12-OpR{P8I7ms!U_OvT2O# z`SV>HR4GFE8hM-(}m24Mb4d?wgS~f%6&B`f^qFg=OrcYkkP)Yn=fCYlDoR!;$ zZ!ahgBTpj;z7fEH9bZSConueSFq32Um*4E zzS(#uIW`K*3*{&Z&%GUsTGfesJS(=9hi6qo(z`R=~7OF;t?3I%I54cGqN z^8!NiL?Xkn+3&r}7Iq#WhPtk4`{U7Qzd0H}ekTc>G^FtBWzmHCiuzkiDpvU*AB@CC zUbB9?sb{23HZT6_k^c@~@#Y@50EsDBex;M8b^Pf;>S7E`7p?7)xeIPIZ;r1{lLxi* z8TQcICvjvcw>ad>1WH$*|4P0|kJN4Fx!BZ^#)K{A&&cC0kGg*L&8Uj@k%)X*0yOK% z?D~LyM93cx9=>AI@{^nTOnD|WH`l&gDrL(z%B)ZYphE-Jzu1r~&FVgcZyXshQf}gF zebDjR^4FT^HJcN@G}6;k#61%+(!1Pn_EN}k=-4M65!#muv%LRg>he=WX2($QOTe)X zUvSZ&0lJVF2e-*T_1Q2+RZ7eDm!kX}kgC1aNcD*dL84t=GBSBW1R+$tj|`H-SPD(7 zfBtxhCMOc=!_4rrH_+MGn|ppDa5di(U`@ihmHUtsVXRoK_$T+}|67_v|5usn|HsNy z|5{*4%)-&hnV6aD-_SG`P9_FfV%EQK4mm?hC1;!efGy0|%N1>`dKppPXdj@-E!M$F z4}+~4O^U6*Z-?am#ImN^QPBFH1yuLhBMckKojJFEo$YxN^qku-w?vsQBnXo=Mt4zi^Xy1hv{#T&yNPyB)IP?9{VA(ec!F}gL=UaX^6@DE7|aq7h7 zZTJW8&8)7XR;OKxT{y4idaUH+Q$Z7Ca@?Qp$mM)jxRW(sS^|lZ**m@V1=DWbzLHUA zb~Y`{$2(SyagICU+#!`u{P--W6~!(SgQlSu09iz?9z)4$w@D*ecbt{SHpWAf|x z>;nnY(D%p{xAU_kTb*Xn0F7JO7p?D*@#(YK-W>FgdYmo8A)~+ZW3>IbC;)~4@<>y1 z@J}ZHKWIVyI|TO^`|kfC5Zs>ze&B)3dVg@YzgT@g3e3cu?0>MqzwKf9DEx(Ie(YiW zIP5Q2@1wx>QTQut@GlJSZ$0~eiQ6*7F1ONoh@k@Y`GG3}~J+u?Jdbe^bPQWc;K!;{0HtpyO<+fX{p41UcaJ?y%;oX`oY&E)R5CI04S#u;;wjvH4tvG{rx zGFHat@#fXAe8Et~zos4ERJOK;eQkTUU$t@X>)S$7mTgC0W!D)uPv73r`r`il=;-_H zA+>yQwa$NhQg1U`WoY5vwyW#8j?K-%t*L9{7p>jFz~vaO0Uzim*v2+hD2>LIGn}n7 zW@*XKtFP~sEmyMm~=#Sh4FUE#W)%pUC&0LD$ z)t*zm z3aXK|qAe#n-yG}qJQ3zxj zBUP&Bun@;3z$>nvAxr3t9nuCr{Po78P?(&%c>rtcNaT_?q+vYU$$62hRgs)sw6Jt& zQ?xJ_HE~kg8Yl!e%~3(>bYFUW@ZcvgnINv&&hQg&<>m{=cQ`j9=IW^Opya-DF|Xpu5!|21oDyv|j32tb9qT$#!2ns5Bpm4BKQgd1mOJZdu6 zB|K5KYl*g5IJv&LA>-+8ZmPsmBux7mpO2tpz2~JXrp&c)_c33wyt0OanlbgU0ke%U z#?xsZNB=?f(fdY}4R&vP*?9WA%n(6L(3rgzUja#@6)H@-pqx1mU{euto_kiAcV04l zS!cssvnO495Kls9<(A+&rE*EQ^Z8VheGnbaN+L1YXrw3}8gz}wEZSy!0=38nc6h`y z^MhlcIHS1+Eym<|?ISb!AD!o;ZeML@Y4ksOhL@NTwT5K_KzThq(GNu+Z_- z2~>Ie+QBk2w`KqH3b58DxWjdtoNr}*|G6+B?s4xYdqLm)SGTld{MLaODQiUDkptQ~AoO%z4mNn%OCc_Ig?r_dT0<)*Sgei2#0( z(HM;YPu`0rqffHsaixjU$K6(Z>pKIBnjY_Ec>b(m4i5(w`%9l@tUd5?TI$&1_l|!X~?9$f2aRqR5EC+9u0AdSBwcw zBt*=Pqm!$GI~e(6DY!HmkDN6*3?Gdk%cKOaegOHl0d3&>ar75!?u02*nsXk5xHG^q|{7>lI!m z%HC$C-*~zuM&?i=f4(qq@DWB(`tuH(Ee?a|DTHtL><^6;pq03cpNx%Giu;NW0i@c< zZl0x4F5XV=5$?O;j&K7kf{g~34bG>a0}bpSUo^w#yL5#>XIK$gw(~R2;QLVFzMl?< zu!djakXw;u?@*}toBq;cdAAV(OOusZ!X?0$myWbc2MJU#IwjR^O=U9@;lN1-02~^j zl5WLwhBVlJ<_h(FRX7<31@F^L<`t8{(lwO3LhWUbB=y(LA*EZ9s;i}rc4XU3p$byB zEzGouWfs(Lu1r`SB*rep8*kDIBCs!=wI@>KD?0jVIG$onnp_rHXYJ7VMLUH#p<@`o zTQsV25-a%rq_77EJ`ndIk1&jKH6=0KDZFpEltd2ce|C+j)$C#ZFQ`)_QTO1zQG zzm{Mhp63?RmqW}H42uJPGlk{_#>Y_IU7RV3WztLMp+pD`UQAeGsqGA19p~C>7JD&L zGZt`RJ`vaF2CO5isOO<+6O>X}70>YLCk&K$!{K)kv~JGr5!%=G&b-LM#WIg05Q`d< zQ&1pFoRlh?w$i|+#_K9RQLgo~w$kvU(pk{PsF=jvmZ7}|BxRP;_3ElTA&QU6s@w`ZDrNQ%P)QsSZKC1nCKq{LGS-a#9-s8kLk%}{EkMod%k*RU&k{_6ndYC}fBl2B z-+%w`kD28^ts(xi=BqygPN#qg6n&wjM-iYcCW+dFuAzo z{emlc|CfAyO~5pd9c&R}{MSQ!d))*~b+cKSy^Tn2xDop{0PN76xEQ6T5#Vtzh8XU9<(|XA>3vCU0$v%;Cw?_@P7VF zR)Z+wp=pfnAX6ZE*|FqW;Odh3gM&%^Zs#je-HY4dXN0$WqV>gR@x+TN;H}!^wwX$C zp+X12PJ~Y*uRRP&rdTXdsRIBbQzl@uy7n!erXap~B2}X!rJ4{qCmI55G=y*f zSW{Sy>@x#i)Q9)^GM;!4!-)< zFx(U#UlMEKV;@1!+dKDy51Q3`PeV_zh6$HEtM)eylk?vMVgF6({%0P8;pdURLet7# z`~4M~_B75lpD2h%h3sbzcW<6AU;wBoWk%kww|Q8)`vp6iCNP+F_1yPnyY$do_@WjT znznlRR`2CqHpY{PvE)8vh3cM$nHh3<_@Dyq6y?=Q9_Ve|_qr-PbRwzkm)!E-7&)h? z*mIbV@$t{v>Xh1%5~qMH-`jXpo-LcFi#`6rsr?h1mTEo9I0LHda>k@KK-pl_wmLQ& z?zz26;5hrMl<7l+vatJ;2yZ#gh||S<&L`b+q6|++8db~l5&1y%WA>w!q_^R~KvWLX zo;0k4ideq8!qJO21q$e+h%{5N64t7Fs$Z=8*F53jeP; z`2X0nx&Jez$S`pT7KaC?FP3z0_4aF!}N)2YEM>mXRsKx zsk==rj*={1057%5@6&obga^Yc_q@wl)HWcB1>7dyFZ*l!?6)L=R;jBd$+icVc$_=p=9d9yB&@)!!4tooY&+c$zJYdk5Vw6 za%i)){@8Y4IAZc+=UpoP7$+N@T>ocl`bD6Lz#G~|MJ82;Bskkk_DtzF!X9U>^Gk9!o7MM_Z^`K{-uP| z*c#hfX7}>Ew@~0o4h1{D)7Wp=7rjQC-(MhhKJ1cv?2j)<@>{oz$r+cs<({r~kG=mU zTY39rHf;4%r(F1k5DZ8V&vpL0g81K}6aD{)?*E4oUC#d=^#2E>%OmhFNSBje00!yu z|5uRiNA*Q4cuq`%e!4m@ODsRU`^vy61e%+-I-?zZ6-(2KEYnN}DpsGqUj;Fl_C`}X zF}$I5TAir2Y8Lf-!~5LoSi%M}8CX)~{K;lz=9Da{b9G?8-kGjDG-6zJCCwe@Kgbe+Z0!fuH|K z1a_l3>^|;4Tt;?v7`*yVQm8r?HRm4$_3wbve}wp!GWu71Z&)e{_8in){{UkZ>^Z5q z{y~&fu;-%Y`jfU8?D)S!iu_~!|G7Wm6#P#!qdHxCM=}Ncr_svYxMB2#M=|aRn|wse zTEYHUv(H~^8m|KZ$ZUK9;GE0HyHda7?qL3X=x6$+DRzjCnvSTBuXCW^)9t3+#nlVE ziy`((Rk@<;J4`>-b$HQ+t_S#T<)lwwnhVEbn>wS5j&2Ef{}&TvTH49zDvmzh+YJm# z5zHjZO%qimPOQH_>)>OVM<_i?fQ=Wt-tn>f%!*%%iA)Cjh<02K>y*%@(lIwDH%Tvg z9cPJW^OiBsQI{E8(9h!xers!|-*w%nyoooaeV}I`{(OIb>mE}e?CLBr?$9zbiytA- zZ^+eG{Y5?yPtpXFjB1ZLw?isuFddFIl8d{AGdH`z-71DJou55_d-5~CE+VTt+IUR? z34jI3B1EPxJTW;{kuHY%2NEzxDBv97jaD!rJp!cq1w2{~D|ih+1W=AvpZL@%c5Q=6 z%x*y=Bm;;+Cok#a$xJRCdxq$KVT4jMOr8BbX!6!E5g zU4D9v5ImyT91~uw+dqAu@OeV4Jue2fyD2F2)f|X3!)qfaWGz?#!db$dLo!n&zOa-| z9bf{Q%h;;FHIm4D8zMI6yOZ&Y3oCx7xIb^a?PZ-!$N;xY4<`+Ia;5})fC4e@&I$|+ zyNTen1FCQBR1Qb;`WSEoY%Ksd(};2cKYwmclL0uQkALrk&#tPH-x58DTyV}$#kD(&P*GPzO)alVLhAg$Tq*#hpaD{); z&V(7!5^doz^F$OFgYm3#$VoR)l2Oj^8%m~8Gy74Ce0gnq3+Up zX1=;l-x;*p2@%+c3Z(yC(BYfJ-Dy#g3!Wqm^CLqgl8EFy&y2 zJJ%87qCXbpjgx5j_ISFzaQ1%r=tJP_O(?s+=JNjLyfKJi1U2IMxx%=90&Rg!1t@L$ zI_9(0`u$FZ{>+JheX7t&o1+lC8slOYqwrY5XCir8G(J?hp}UJ+!#;Lp(HCtOT2dts zxw$njpJxF_V)#zZK3rd2B}BRq$}6=4o?m>hm|_AzI!)Z20!|sjEg48Y|0<`W-_hHUM3z}K@^y0t8>V=stAk}~>P zzXb2K1x}J{UGs5nkh8263G+?29wBK$K#b$reLCN2-#RbH6%^#_eMCbl6*I;@EYJYm z;ipJ)ts>$&2nBcL9Ths8b>;PiyzB=Xa=>pVC3hJXcd)LxnajFQ>2SJ2+R7=)v8%8(X3fO(^bnyP9adp3$LFJpS0l%((&#~8mD>p{ZZ73dXx6rNdK)@0=*_l z9l0j`^>)OIAE^%7S}rTRZyvv28xO#D2zVa)u~9TDzbj2gK{Qwac%m7?=Tkme1Eh%n z--o7}GXe24jZ^ZG3cUky+gL7G-BJLCvvXSMff64$tx4^mVXKows}3=E*$$MI{Vom@ z?rD;O`^-<$$z*iW)_0kyj%v6{(1`xBd}hc*QVRkpT=HO>`u7bjTqMK=EK~adqv&gA z#@|g}A`ExAw_9)D3mef+ZQ}(LJlCA$whE_0SdEb?j6ve`8WCrY+j`w9CHj1F_|C^0|GVAFs>`ot}Dp*Ipg;6zCs| zR|B8A_U=En+P+`kc<=Q#!}d#9v3Q%k@XadlDD8c>UJCj=PYJ;|3(7d=UYevbFtxdk z$SZ&{y!Tw3p|y_bfUa;=PD%G0ZCrSt@d+&i973BOkCVP4x( z#?O3_3Ydzc4A?fTYQHwc7zG#Xb*CB-%FDRF<<8dbj_eM1Y7G-0ytbEdA&Q)(R@3eR zs(k21$ky9`(=f9P-kT%28fy5cAaD8n`04ZKUvgcq#0*uB$gnT#_##FlVk9X^=nrVj z-AU;2KuK66&qA!}j2TO6#eI>q8j_uF@lF85r%ycf{khYAXI9$ZdSq3&zI*p`Ku`#0 zmlHI6^Rn1fjjYkdASpce%czpo(K!< z3=Gt)MYwRo1qszCWlX*ZtK#CqvnuQJ6I^Ck?ude~;5_PsGS!wn6oV(u}d;A@%=e#@)1A^v=IHl4)~y zuw010B}~RnPzYh@(mVWGRIkPRQ(^RLm{Tt+aYuDWP}3BS?$70?X+T5tUV7IO5~ID1 zNrM2->GYd-XY@LYYi54Pp`(ih>l?f1OY4Y5V|8LVXF^B@mE}2QdL`ZN@j{$(>9--o zyhLnNY;JjPJRZ&a;5pn<7pa#AHshQI66#-ZvYv*J3plQegk&?RG)^QwabTE!;dqA? zAjUwG-qah~=N0fvdR+{O8qE`>``CJVGa#^=a6D-zEReI9DxMMZSRY{}`$X{j+NY82 zhjnWnRezFsr+V`-l`pLv1ixat>9)w2Mrc!By_o1pJ36sF)SiW&_!%Jq5Wf@xl0o9R$9 z!(-kFYpvmHniAV|QN35CD#wX);0-7(v*mN#CDXh$33AT$$9}_HbbN*nM8zfA_}HR| z62&)xv;sQzjQH!vr0i*=48N0=%pq5v4gAOS191ReaDrB^y-H}e^X(<`FCNZR_5K~t zQ#!s*N{ZOLBHKC1v9Ii8a^HVq`3-%B4<&dAH%=Ha;d8BxRN%?D{!w4h=AZgi5ZiwJ z6~TPnhrXzZpcQ z?XtEVnVt#A=&ykyUl4B^`F=^_J!Z@*7r1c|?XJCPrYl5XLCH75C$+HR7ZF(^I808y ze>H=RMB7tn{vNfUMYAU~^u4?THc~>woo?H-VR}+=AjW4?cKDUCUvt--SqrjthWQrI zm^qvzqG!K{!26RDhtlr=4k8^8y8oo(EGV}q3C;SFMjIMAzb2#T(PeCuxp%Q z?z>GkwqkQEjBIE3#@M>1NTTNtez)QBz9uWCZLjP;uznw35YQ&^(e{mo%L{r6HH{i! z^YL#JHU8^=aqCVE)v*6=TKR7b5y`)lX#6~E{M4{tTpV1~yn>u;0=(4R90IUEMt>(& z{3B$ehK1w$Lv{J54vbIWKPlG!Z92y-0GkK?$DHe5>ONUVXZwFl-9a!qmbsbhe_-pL zU#D>7Sr`>q2estcfa5qE4eD=HM>n>(>UpMXIdnMqC%CydG=FYw!Pg9%E>SeKRRI?@sbif_?yVw4=HLd?v%J^?WzQ4hX<;|@vtz4-E*cD*nKxZdMyT5dG z7N&MC=KlgF1bO-X=OEv_0(}4e#)oP1ngkjzWS*Z5UNC$m|>bo(^HsmFLHg~M>hO7_bWT6!^^j*FOoP;ywD@*g=bzi=Axn1wOUEe4Qv>Xtz35UMh zshSfEh#Gy8@i{j9nN{D}Wo>(1SMTzUB+T>yc_DE$PY|lcs!5h)Eb8=9X=<{uu40B= zRGED07f&sa$4JF&YO$_yM!;9Kbn1|&4Ji6e?R@IFEMOF_wM(c9k0n$Ud9gdFimohT z6#YI&s&~CgxD1Cp&#aHBT7~6>aDH&VbG1nsi9tcG`|+&(z3o0X1%G2~MuwbZ#rV>j zzA8Tw%iq+a6g-pnJqyNWglCu99Z%4xlMjtoaPBtD!u8jSxb628?V;tnBftyqTJ%b1 zNJNe6^MDV&)X zS_qAdPiXCS26|>*;&5SZIL2e?h(d6wbd-~{Lv^|#r}^5q4C$+QhPK^4tR7c5IZ{^m zcOk$D?`%sea-s0;Y=0}7mQS)dDOL>SjCYYUIjvS4AY8dga^Kh(X zS|(;jW)4>k8;K+LVA&iDeb*<6ewuSPb2?gl+8b+ymx~a zwNF|Zy-`)o#?lwzB6nI~w(ps(=3>x%&b)3E=b(e1u_?+H!u2GlExTi8`TPL<)e2mR zWOPsz`5CbX#Y{p?$Ty@hmRFqonSmUKXd$ihD=$ndI3530JDFKbUAoe!!u?B1>QIkfvj@?|=u2WY zk$%Nak}Gz?h-9aiSlaox<2_tfV8)XU z%xqeF|CK3XYBM~sX@lOG5)C8is|sbi!lHFP{|=)_6vGc=w!pECN1J6oeX(ZH>zrHm ze3NnL>yu@rBZ{|iq3099>wN&A+V$|8cN?0a369Pc87b4)tGBT7GsF zQ&(qen828gpO*vXg#WsYgN=s=wrWf*$j!z_%?I<*yfD$Rx~a8;>tB*xYR-QlXaD@~ z-(|!9bgX~SFqpCzhNN-+f!_XLU)t7o)()0`?&A8F`u7ix#}3kRHFx?eyX<;@KKW{KHIMg3e!oLnl_mc;Q^3b^cR0;kbhfX{oirDa?Yk+ zf7kW=)Aw@m@&4D|my?r&kMl1}x|;t{YI7L<&(4^Wp9>a-@?UGao?j1^&EIN67m-go z75U}om)lEem%-(qcxabFwiPc+D~xQ*zhS(Nq{U`^L(2q8{S=Wy%}RgPu`?V{8WO^N zu58%J?)Skc)Fm^+_UL|Tr*Rb!^0^td!RjLOuZYGwD!>WBq$LVK!$NkU7sXX0!CK-@ z6*1rkt*;&6BxFLi^UA)mfSOhEE*3E$EMANa;5qPypdGLCYL}XM68;n;z#~D75#SkL zJ=5i2|HYhMy#wHh3q^nrkc;8uA17Vt%#D;*%3}v)O5QmE*4%Pk!!8esa;PI_hyjk& zzOMl%NG@hZBi*9Yg!;6;aPd<)GD;c>q>}@1025L(kv9JwK1HsaB4dEzw5GJOq@t>X zOgU@l1t*}(Up9lx%KG9c?@jClQkNd9ejRQ?e6p@4P{VerfecCj2#8DD!#tW-)ltRo z#|RkFufr!y`J!X>sM2h+*btMhXe%RVJ;^Ty$RZb>lvgtY&+<*uYTwcNRwA4TGlA>z zQxdhbff_o``ZWu6*0~jB)Xa=*GbLNk94T;JY-SfcckV#lFZlGn8we-)$=Y3s$-3IN zeBgQ=T@7Gj3LdfT?cwn&SYoJOG+y5=bY58(NJS0?8R{jEq%}h(g~rhth%a#o{mcUAwQZ@eSKS9NUBw7GS(wp-mx8k23&Eiloe}( zuIULOMy)3*m!^MZzG+Z8!%6psX7VQMP=0kBAo=b<-pse0Ms#rqavLZbux2CCSkBDw3V2!3+y6;u~W|H=Fr>$u*6Z5Yj#Yo=! zbCk(zjsSHsdz&KRHvhsIe3fTCf`A=Pgyg(vNn1jl`eRGPq`eG0JM_s$_5det2<2pL zZV9~cB~nmevz$6G+X6$WxjyJ?9SQkL@wlS4rhe>&5eC3)B<7MA<=TpFF;#;JU@VPP z23(&!E4Lj+Eh%kCPB9%t<-2C!-otU2FG>28S{9_3fo=Sg}1Mui7;c+UEHj~-1Efg^^4-Uyk@cORj1@jYHf6x%QM3SEHlCQgp{@&6OnbYl4Bo)!DH_(svx0ime^sWwz+ptNdNG)TqslAo~beOh;kQe4MlI8VNM zwgcQradoaTX1)L6vV?{tW;y$sfJJY_ZG|c1Ss&!urD@B`PRBTNGBZ-yt*9!~F12Ia zUIgZ?vhGHA!+5J6%}2rcT~63suWb)QAUCO~>5K9qFYz#`M0FUqzgyMbT)tdZ)}Ktl zn}12G&ioO;W}^wSUdA|_lCt7eYXBq}8-#U;XV?7|@kMU1&i$yU&vkAvA<7=%9#H_8 z#I}StPmO`MY$+gXTvA$DGd&Zpta@8g!B|$a?MdY@$F)jR({`$wo3IS|L&aZjgPO@n zr-JDkc40@S*4WYHwE|~iCdNfiL#H-|>i4Kzr9$q;t3&T)?JZli-QVZkr>LyhQSTi- zDk?x(rrrn$>3Z{M`qTt=`2?E82dMp!nz3x<@gzMVuWq0Dn+ z0j!lxY`+fEmujg``YgS#L^3g^9-%PEG?R&^{UwQr*qXlQW1pg-WOluN>*(?w?jDF2 z3+jUoXfi8n9v$~vUZ_icdy0?G3Tvc!=7hEt&EHpfmBmFgV40e3*X@MMW7e38???dz zME!{6;hv^iXbjHz67oitA5rTv`g>yJ0zWH@TVzRMP+4?zVvRTK8TS{5YDmltc9m;l zlZ|+Qc#Z{mGpB1+rW#L33bpkw@65e>USj*jdfU}(se#yULbHAegjuw{*8l*g*{}*G z4~n~P()~nke%C&TJ4n-6QHMK7J8f^SSZhaB)cf*qs&n;wU@$TknTRy?o(}IMKQGz28EaW;@g-4c77luP`WFioH@dyuS zGaZ)KGFvtk6@H`mJiG`ABrmZ<)LE>vU#)gYG4@4y%*igUbOeLHmnuO@fA=CbysM7y z&;7q!fe9Rg zn;f8n0BwZ_c&?--6vzrm-4!uU*MA_Ki&#N_!$!kcnm5y78yDDVW3^9CmXWTT!Yl+P zCEvBtfKwVb0EtWAg#iFhra8i8{*CU6lX+?$-E>TBtcBC*lxPR@mM0vn%g2L+M%BtO zn3ryKa+nN8T%PdIdjQ~OXimf8^&Oe7P|3&E7{c^O(y~5!^A|dc?gtC4CeLueVGlyu zQcAO3bJN2I83E=NHt+J}Ak4q9LA>!DD1ZR97%mddA~h79w!KmX>ArmPq%VsN`%Cq5 z$8b9LGvP7glM~z=T)g+M!D!3TV6FI$3%G!+m;wWn;MUS11+y*LWl*=GVi*(fW$Wc0 zKbX3`JxJ_hIQC0ELn$q})$uQxSY_CtZP%{JSqKH29e0q5#9avrK!RgN+sCSt&7QDd zqphSaho7CXFs! zK+u4)nwk1oY`J;JJFAYQKi!0oi!k{4&iFm=$B^WT4v83232rkf-ov>Y-OBWnpD|Lbu8ipLv&3n5l3L1Vl<{}9d6ZJ z$OQxw(DS~mdF2ESHeOUZaXz)7c}>GynKRR2mU7e%t>2H)HyJC-b~N>jp%XrIp9m1L zl&Y~^ASC5or<3?wa=(r;zBjNSjt{qn7IFc+)#G!ekvYMWhS0< z`#RZV3KML^2`aDb`1WNhzu$kacq_TQ2ux2eg;L5UdN-*AmqAw6QId|wQvvDWnk=+L z49^Mex6iB81Oy1Bl1Gy)mF7ljYenfYe;~b`DLE8!ht8DVcJDE7r(@(U*s{T_Vr7~j zdAE)TC>j8@T;_{bwYCIBOSij(Yggfa{_-V33wQ|YRjIZcE@flkXG&pj^`TreD9k$* zZxb$$T^SG%7R@zDxzK4#t~YTUl=P*Iiy3rD$#KHK4AJf7sdK%+vTdxoaI53xJ*hFJ zl(_Ro1X#VmP-5Ok%f$@GI#@3CsT3QQEA!(6`SO18LsbgrrMnqH3A%{>-tbx<)E0J; zj|w=EN+wul7y~sqKhAu+$H@{Q@IKmnDrdIv(j&L7*+P9^(agcYbK4PWZWB!^K`DEe zhzPh@@wB~_4ue&~h*6v8Mg&1SDUc^*I5s#u!Eq6GV)NaWmjBJ1Ws0*u1 z@6QgUKo>dgX1+$OScohuvUli605GZeg!y1}sDH(3o6G9&4NFOO-e^4UyWNV*^Fo2> zN!te}DwmN^Q`j(Mj_xPFyh$;Dx{jsHzBCB3fTdj}M6AgS;#CCghMo^xmuKypi_d5q z+)sN#*XV>(U{VAM`#dFaUOSto$LR0X2_3Q9PKYdG z+eZDXtFr@(LsPv|yDG4>V`(7ABluUh6(LE4;sq{7=t};Blw6^_Qc}!A0y)y}b$L=d3VVOwV zqa~Yuv-NDY7R`1!bq$0*lvcZy zzU~B2Q8}vNFnwxnQvLeruLP^yuQK@jp$j9e?o^`gk@wvt`fgn%2~{~cw7VgYF8`0e zH?zOlZr{(7*d~YtWb36HG}@eH9c=7Fp?mKfEzQi#MNQ$INdmyBU@4C>_yShr4zK&} zjbX$7N3c$eMr)|fx2io`MurN!h0c_bEdB_{9~w*TWNY$R$N?4BT9e2`MR{Q z&n5@p>HXmWul>NF9nDuCG{pl~7 zPO!&v$uIv%oX3wO%Q&?%*a&N;1a=fqFt6M1vk_rzA-(+jKmMbr>6KW1hRZ*L&2|lB?ZOA_0<5M>D6k zS#E8IMn%ItX+ggIpNhCmbw*H~H=lo^3VMMD(wkR+$Rz1Irb{ITytgV>m**$xo7-SV zTU&d3>re{hF4hgbZkvUi{4%gx0z;4vFA$^jhq4b3vng+ND8x|v23@q?7NYF2I3a80 zdrGYdvrC-#GLFl&>$$U=n{$oJTi9ED`7r9BwZmdm?vwfTyQEE~Qoy)#YS2UsSyw;9|7yITl#qkJ6L$qtwc=hX{966n3D1+ zldU55v)w^LFM!N3XK`9DO82qd_c+ju!IKlDW5%(Y5VgBYmW3v(0T(6Ta|ib$KYjzH z;hA^V3_g9=s^3JYl zT(+l?tczDKZ?11hDY1bjklO8_VD2D_?k1-!ro&z2?u zp*dJcH4trhU_foXi~IR$mYC)3o&EhTSmqAk_)5rBW(Lx;z7S0v&N2FOscPJET|mqJ zqxVnIynXD}o15DkPw!TrCNJ2A+V}~*Z>t1alryWX`e*F#uc(Cmwke=fEodM$tn=Y$ zY6gxTN%(6=6W&F)Xi6x8k$ijwKLvOH>}+rEh+B?mDOFfA_8K>zcGcO{v+q?_X)%~k z`OeCr#@iB+&Z{#NVi#St(VDF0QB77JUYINx>FV`cKpZGOygUWzx6Wz*MhKlk{qDE% zrlG=*o48`G&384>OyVP9S;+)X{x!X)_72>dPm~UQH8nshI3J&!41uL+FjS z$`(gTt{-X|bDdKOok?&l&4quBgrftQfsTtV2bfT;#`#oRHk*zX&UBB=o^>H)I?v|? zL9r{MANp@h>||SFaiw-R)NpY4)%b}SMvvdtg@807q&q!>WEm1>XY>hDvQ zx8_|rY;I$yvKUHTcX+aM^Ig7+x}#2%`P`V$D0}%7oJ_p6osF&Edk60w9c|6*&8-#g ztPr}*%=v#o7N4)v{3})(?&r`Z8TQ7^>Z@#$n4hxnHbXv*ca;wnH0j4o%k1y(B(M>S z49w0hE>2A?k1Qt*n#MNpU8w!Y8xvmB8U~qjt_+SiZa*aLdmM>6@$63PQ7$yD*p(3h zM?whuqioqc(KaSSKZifhH;s=?S_w?fj!_%E_RQ?eYAkFmt>sSYwJR@sO&u=L%X0X2 zsqL|FOuxfszk+T+AuIVnYb-s=3N{2A)Y;%9DZDPv+=8BDBp{dQy2P_#e9UDEZ*KKb zc6N8FtF9&qe}xPIHAkWYSGb=*)ebvH!2?BLLd84R_YB)wy>5ssbyevxeiLU;ozLlF zzYH@JP4bxG{ArA^Z<4dJQsOd%b$U|;hw;Y*G4fB{35-OG!Sy$ltgYB6XxiEDOgn6w zVhgKiLtSO#2}phu$J!b3m?tJRV;f&WpN$`3owvW6v$Pk~>-FwG`yZvB* z4184Omlx+1DAW04zISS58Df?g)hkWjdivA!!JL9ySHfpKXi=>s#A6hTjlQ?X*xL(qVRRoMvUi@uWMWU5ViiZKY**OY*tMi_ek5@%F#&KtscaW2^#8%kRo?ED`5 z9t@T~4CFo-7@Hh5MPQjNCT508sLQiqdoZLLoyHgZLFOBG&_r2KXkG{yWQH%); zS)lv*6)$gdv_X0OIRQD5c1*oMYXR%vRax|3Adz_)y}p8 z)vP)WYyhz>I5EG{Ju^D^1OM2>TFlnRGA@A8B`qU4gbAc`-(6Z2Uv)zm{K0)S?AA{; z`A2$Q6e?U^oTU}2Xv(h47KgXmfV8a-5WBY^ma6)DP*PG-Jpy4_az%cy&RRrm4~MA+ zimd0Mu4%t?b|^hHtdJ(9xP%YAQrmo(hk&$2XD-$y-gA0@RNC)Ds zRcD34kd{NAAk{=ME%_V-pmaGA@P$4oi0R?uT7!6@*Ie`rUhKNe-HWj8cbC0OP`}jN z&-LZ`p`j<2y(}y&tmS3)6m74^jA~$k$)w~E)DW{ac8K*JdAv1zw3oSqkxQv@bLkHYl~Fm5{f(5^mS@e#4QlC(p_I6Tv`3j5+P-mMc_QIWvvcDl0bS1U71bJOm8 zZqPT`sypE2`eHg2n(RAS+&yCFz1_eOCHS%!w|ZIBw~w^G>F|tV#+eQdpTEAOu(P)> zdmW#tR0l>bO~ZIHY;?Q+z41od4UAOQVjLP8fE3f$+^yg z-s8tO8JoLcM>8D=&W7vDTw&l0pKDcmE!bYC3LS6lI`{!m)(FQ`#w?DSN7u?}E!&8B zM<8xuc4BiZNh1$OWsSGPIJ2T+R8cWtA@!pikJ(kjV%90h-kclmb zDbY>ELv#m+pis@#c$Snxe&Xfrt7|2Q(FcZmO+Iq)^II~Y2rr^-q#afj3{-vC_^YxU z9xNklvlzC180$6*WKg34J>tTEU>{kI^xJ6;CZZ|=x`U+%vwJ@FlX}jXshPEu8DeNI z-c4v+N;nL2c_mj8HV;xE5%1{sHiyk^NwupM>U^G0Yx5k{I=aZ3i_Au35RLgTDTpY^ znq2w~*~3>aZoXg2-0>hjZEQh*|2{f8+7p@R9$oN$n5F)K4#akV<0dYjZ`v8x5CVN0 zkm`=nj3FX&BH!pq``+6Mg!PZsT~n}HYe{_~npIp&#Jb#Me%&D@r=mziM2uvy}69N}qWgNnocu58|)Wx4HIdk!KDtz0$V zAxiNpelRrFG}KN_dEDOGm^M&IF*8fWBAxW0R=c~K=CD8vwB+m={U+iKUWPYOA`pGK z;=LDjL5lkE{h;BUZ`3og+>d3S2b$xd=SPsthu;I&mBwP;o(#9%JzG|j{4|b5JH@7D z%>YUwzu!M&lWITO4eTXW=tAVFLc4|@cEP-sE0ZI_Y9`7}=U=gbGW1xG()1z0(w`$gHCMVMdK}OOql%+ZmiXbY4>L=;nY`I(mk6*%4KR_E_n9z zvw_6=#Vf>2)4pY&6S2meh|m%^6Gbs|%XYuh&57kjg;_H*#K)g7I2rd1=8uT>eInH~ zp6>XyC1fZ8zGsk0*Yv98SX!s&#wa(9Yt`WJATyJxOM6Li&AN-VwT6bD@%Db59OJJK zAF4SuH1L8FdqHreN2C&nENd>&QI=|y!d0g@ju-?8_V8+~pT#%=-#iOO%{t8AJ34t9 z4)zYmZGC0c#$sd~92xX{y!f>&tPpWp{n4NcHm%OJi8BPt;v%Ye{!D-&1)lS1wlKVY z;08(g-gjo{Hj4jHz)Orq@EbNTG@k++sG_5x0n|6tj(=v`nEx!?h`;{MEH{^y*7K?F zSpowC4FhrEb}CS=f%SgbFE1gJNLSw^Z%ktiyHoId)_&fDM?ggE_V<3Ad7hFMOmjfA zGco@0Ixed+FQkeaob++Z=rT43_CkQsU6=}|LW_@zD!(3*e^+=giGnJ8*o%NpO z&<9bskz{u>JS{gm#G)+UtxszW<;CfOxmN|xXB?M&cy88{^5iOOq7-JyRGFAZpHpwQ zZ>LZ^K7Xz-j@{fY*Q?*o8C5wneDDFBu*lw|A!MYCIX7}{biqo{jL0t;hp^1zu^N2Z zV)UHZ>def#AqA9>u=b*d=Jd#zFu^Jo%w&&OTT|hT3a79_ocKzroJRl@Y0N$l$^#n!-4$TOW;p|vSM@fW{XzZMLeG$ddHQwWN|Nkgk@2pAmR8UwBTP-~o{l2xvF&n6Q;o-B_%OJ z-{Ft92P@xfb)gJ>@x1_nt@Y-qfj9^KOB`Zzn2#zp|=R$+7(#vU7U_Coo& zrOLC53=THA{U^d+hO33hm~>uW*sG#J2?*uiFf;!2eZJbNmAiIamH)J{-6IVM96-fb zs`dNDLyRFhU2bvyO~`ljp?^r%VUY?y^Mab2nf+NyK`@9=oe3Hfp^ZEA7@zQTb5tHu zdQlK7KkNp0V3FNzo?^gpr15nv1F^LR-) z+H4H=L>k!^^b_=s`U(Xo_->2H3ALbRKxvViEw#GIwLW3J3X(IzEvYS}y3S|4#<6assi zko{;I{Sffkch~i%emXkN3(2*rNB`{_k5KpoGXX~JYP)B$H~;BE(#>4zn@x@Y@AwMB zHZV*DZGeMl9NCocZ~+;BpA08KZ68cj^AbE>?eNU>egSJvJ5~%qeDcrvW6WqLcI?r3I{@W;cJZ z)n?3>LiU<71u8{=ik2SmYgS6y?b&Va^d|Y~ho7d@W%4Qbqv;~{SFl&mbrktX`!M)O z+rByWH8e0=!*XfR7qL=h(Ql3GMwmuNJ##c3;9R3cj=;#Zu>`>o&B zU|hS4oLHP=<4(^r>MbIo*FkG^My7Ki*ubciNzb}*Z|Bqn%W~S< z%Ic_vH@0%8GiED|Vmc{eD3Ia9UAu1;{9yC*`IoMI>Da)uW>g?x^~O;1OUmQZ$WUE4 ztXt^qk;Wy-!%)+@o#@^hgY4rVajqYUGQPRdHq=CSYnkw;7( zQB10Z5;EktFzlrSESs<5-^C{^b4HI+!Yu>Ll_WZR(vT?I-3Zr(;vBuE=RzUioP}$P zb@eJaj5E)0N6u{f8h^ItWns(+6()b{sr`j$XQ#vedha&(9_H;qsiBldxEx-Tkw(oP3%E1w*(loF zWwc37Hc|qraoira5plPnX=-udm678BGkc@`IHhD?d za+}|wqM`B&BDXFz8{_u$wv)=2D5KKGD$UOaZmMGFgaDqNoynYsuVsynlT@ops?ylO z+ctLDIYE#}h=Ds|W=#9j124BO4G8Y-xi(UDVjB)AH12q%CBc(dj7SiZtTfxZ9^Bu6 zVA+GOshQP2Iyx{e1gJ8RfffcWl?_J|t7&Q_uIDObMRx7m5S0Y1?y%@rTfq1YYzzhF zUy}U`$bqn`+l7=gOnsHlB7T23G*GOKolAw=yAz?_JL}E+JZ9e-%x=`0bhqgS^b>>* z5d*&G)HQLi-%I@%Vu;g(MF#2zi&oi*lTjq4UX_F#{gqXK+B>A`vxm0E$}AD(Y!rfx z++6uA*j|v(Aw0nMh>kBhqSRLx6Wo@Wy1^@sB@V2?Gh~wI9yY+(MIDAM@(&# zKd+Js0MHam@y&6b3-@3zCQJ52iW0g(g6<;&0(8F+`3-+eyE?fl&$HEKqYFP}nVdxf z04j^$FtZH~{TlrE?doJSrj!#CSysps9lDPI2$=O{8#bS*`jWS=yB^>B3AU^c0Gvdz zo9D|Q3Csl-KjboWh3fWY+QQbY#4m6LxD1bE& zlR+hM!tHH!UY0|L!TOs|PKcbbw2zO-09+oE$jFsWB}-9icR~z;`PhqVV!&H zrooZhlOq}Zz2&};PbVj^TllCSeUSjTL`nUj^J(l^%bh;wvOSQwU8l(%@lM)DUqk?| z(3W|>%x&{Lm2uu`XUZ2`Ey6ze6od|myG0ZL^#PMoWX(#aqQ4XW?RI_05a&-*Eb2!X zA0mK>aH~HH{j8?exKJGCloqx=eL@xbl)y$H5`NJLGt-_1@Z$6_<6__%R#VhIMRj9< zO5&dy0D!j$OoK{A6v>}2uWn&J4Syq-HdOdi!jn7f5`iz<;C=k*1N2e2F%dt+NdpDS zE)D?j5V&Z_`8l|6N7YR)MxZ4~Cicqv&%*%%R61U4S+@HoxIeFyXQ1i6L*ffhc;Z3; z05Wud;?!4rUVH8PXcHRR_ypf6WbcMBU=`#lzlmf2G3sLao{^uR^2d+(3Ssf6ixdI? zpegT+TQoKG`E;Xn2j_TMIXc3^z3+zYuN2_{07e;^`D2rOaYYpc)wUnvQ9|3ovL;__eh82A3U}DZ!*w9zR+eugus{hdr5h@8IU9jW8 zu9ZZN<@d`VH48eLi29`_zMvu?gaKfaSe%n4gaBC2ouB1g!vz~OJMq&)7m`4l7z7Ib zunPgJA8!ry&x$$N8P0VUdRzJN-{qu9L>mZ3UvyH!*cC>%g)l#xGDbOx^XY>h%zXZ= z003$vd)5$aKp&rRDfBq8oDos2jl1y{o9?j^5de_TIW49ZK8KtS6gPe*Aed_?3clz> z2LKRX!Wv{xPuoE>ah#UpN_0$2Y;3gM6~eo`XWo+|ll5zG^39?$7$INGFaCr+)2UV{?iiWna$H*ij;~rw~pW6E{B!9W-X# zmd)C0N8P&8Ts4G;Vq*c+8mB(Ar^nuF6zZ`OJFl<;{Cattzs7|xyK|Du9^U1Ko12Ke z4#P$PIQBuaV}E_0wVq|_A2$W8Nm=7WNreOcpE!D25zw)G#r}r%`$vEOPp$m_4(s=? z$VvaT;Nrg}{c`c}a&fV1{UegpKQ>qWm(WDP9>#tCPf8PZUF-L*RxmR3|C#iAt2OP> z@O-K<&feRFis>owhRu}xg?e-iP>NT3ibWK}Lg@a6SkX|OE+Sb`IZ%m>O+y|xCnp~q zLS3qayi<9f33WMd7LCDpa}u@Y%Dew78W-4|Dx%-r?s^;I5d<15AV^RkL_Fkh~Xnb&0B0tD3mz~4<8>NKmSOT^LTfv zRCabY{Dqm4l9G;YVRhBn_cuO#wvfLs;xUY%vf$&#{z;da`FUGg+tt5Sf>*Cz<>KPv z=58Aw4~$91i~^x{_}*13H+S2-O$DDAufVa&knI zADx~Y-@bj@P@4GMxpRbs8IzabdIR)*4z@5rk`|0R4K?+!xjQ{j}$&wDyc3Q z4u4J*6&7|*x(qGvz>^df7RJWL4h;?c{Q0xUsOpV0?C~a|tMx=Mx+Y3-M$+W2_~_{9 z*w~K`zQ20$;>E;-`5ZqW=EP=_=|6aqi3>Hx#c$rc`TF(i(a{lH?f<8yt*J>qFffqM z$IiDN@EyJVWov^5hS^b4S7#g%D&@8Ek)9bJAKz)Xyme~>@D$|`ixJ_6KXr{CKFn{P z`~|;Fvys{Mf=Gv&*KVyIbSVoye#t`0QXv=-CANC1ZYb!v_bj^7@j} z(;K~3$Nrm=<-b*-&!6Ms;~(trCz*kYa>WciC+AGm<^X5%FJUocrix)4#>h<>a z`kEWWgtj1aJ;2o0p$^yFd$qCQT05GSl$389pPiKj(-agG^vP+|-gg+%3pz@uJ|1Qq z-NOrSQ4nYJtR1zfc(^VkDk=)rJ1eU>tli1U$#rB^^rh4VnUQ6rkYIdOS0^n~!N|bC zKtVwPfekS@3^8c_dvAaL(Qx_A0rRI%pMLrBC0FkS3}R@(SRkPf(;pHlAt3>S4GRl{ zC56Eb6ieC3A6T)Td^kAJvoyHpj8~M$qr>CtA80hKg>FBsSO!^#L-~%zD&SOg#@sOZC ze?9_&2No$T?6!)EimK`_?1{1ZC%ac(VRC>}p-S~(Bj`5YF!+)C?p@2bZy_Nezt-T1 z_E06<8I8&OuE?xC`b$GWF-eU#Qsb6Kjn~=Mrtc^78i@pyUtGs5FE8(p?(X=T<^0Lk z$BfL(%#4hkDb{dl{6}MTJ_X5oR6@MGs_|FX*VkbJApVTCsay;aP5WR@Q5}VKbtACP z0AJ?k=jY~f^YS`;rKF{e}-Z9ty?(h8nNGoi$BM-oV6;N(eS3JA1SHuyeb5Nk4oEbqyBf z_nMHPpmTbyH#eW(BX91-KzcxjQVKs-B05IKB?(sX;jVCO7)wbi_e8l+J+N5_t(5X| zVF;ZE|$B);CRUOA0QbXYR=xlFd6=9lOy>?z=E8n_hgcIadW1!VUVnpW0(g*e%JZ8OX zjWKB`yO@}s=f(2v7m<;p4gODHHRa_|*0AH^6KGIH+~#(6??*h@+1cx}(6wHxq9%?; z-_=WskSAu*GBq{T*3Kd!dn9V4tgNi9{btDwR&{Q8?dO*0dB9@J3S^mtgzh?}T3A@< z>d6;jQQ{fn<oubHeNSPyX(m|p__!DF zj4RXyqmcn02_|&h*Vj)>NT`Ag1&aGUFi1Mvb&^*&;fxW)r?_|`a>t%BAtG+Cc!2QI(oz7K)uA$W0Rass zNq4*vJM|KOLkd`{rct!q`(K3mhSgd<>k?$(%0*a@KF3wcalYY za|uGvlj_wYxIv@R>YVq-!e+NtI2i|K-!pA3xsIXD(fQ z@ZdpnbMv#HAS;K5zRBlNd#~YY06UzltP_HP`yH^Pg~e#dqlWnEu+zC&bL9Bh`}lz4 zqEH3zV58Z4C&t9Yq@@W+b-{G@goJh);G^TRwd7Cb96e$pT!0D~M*>=&95$XFMhG^r z5)taC3*JY*pQv~5o>j%L)dgOuzUt~~$b^u%&}dYjkv&R3;pq5ymh#_kI+yRSnBL+8 zcJ=SGKG|6sUfh{YFne1}hIMM=D+BnAGJnJ)C@9Fo^H`kGPO`38P2YUr+L zje!YPmDA{lNGy0p1a+91Ps~oY&0JG~*4}YFJRCnQj%)h(@#822_;AH7oTrAA?|5H` zbZpTBP6Gqbf~%#crza)xNR30(AUkv=QKAFo_bvBM@<-ymdAU=AY&1kTWVfjB@bIv( z-Wy*4lmbr=$Gw*S#GQnWIz1UFy!Msx!Z%+l-%Mm-&FguuT=9@hg{<=j`lYX2frz=4 z1Ifw0`9@!I0E!`X4pmf)c71pd=mcwErl_cRvQyPqe~qZxZNA&2*3*CqTW0a;*9tln zRq}?GtslrVpi5vHyu=wHFO+*}XlM+Cg#P{XC}vs0O&e9n$VARaMYRP1A_7DL^3kt5 z9cVMZ^_%c?%mf;ziC%L!VT51jlS~!hQmD1Zy3NgBzbYnoaY;E1=RqeI2gh>=ciB$+ zbMKE)I3rt1rKE(fA|oRsBGfcA#xNEZRBQgN@+Iueru*`2K|^-xf)|ksIRePsxRulP z3N}puETrU>R(EUcCi_0&48Nmi&z^}8(NR-#4n7Brs}Wy#Y+iF$-!@=(X*ip+A&Lt} zj*;RWC84))Jpx%Mbf8;}F{BnCi=?6185yiV3^_SDMMZTPnDKFO9Y;U^?&*n&>1gtW zywZO?!!PB=jT-=Betvb#xSys14bP2K*!DoCs#gt)C?xXD!3`tCjvV_=y;CO?y7PiRUqD#^Yv#32TGpFe*N0S=VQp+cVf8kjo^_xYm4}v^b-777)CKhK7EA zM>_zhkN)P8kR?^T{C&y!S`W9myu5ryGBw`ISFbc6TdAvWy(O)C$31b#|3v9^ENkgX zV#8%5KQ__d*VVPD`n$QY0o)m8VtQ)I-7vhdu@U1-IZ)M=Eaq_WXE?Ugc!NncdPB62 zJENOmzw_64s82V|ey2h6bxK^nXBY-SWNd|GFe&GWh^*w|Qc@V1n3yOjA?;N;4l6FX zG#|K73Be7q`t#{gvNG1JV6m3`{$k#{cR)7S*&l50?ww~3N>8GE zM@Q($oxA!T8PDw5*}TuyLmW9TJka!g(g_Q<}OfD z>Pisp$+9?cRKN4hxKH^mf)(xGf9@=*DiMObyaR#+78zk|5LQY`xC8`;z?22z9uY!5 z_)~5j0mHHerkyZomW?*Vzs`Vng!byDKk0nI8i|X=Z*?FG$^eC8h_!9L@t@8}OoY8n zO;4}d+}!%N&Zokb>TVy}mrWcNgo{hL7TX@{CuHkN;lAXJ)9r>A8S%IY^c4LcG6wT4 zJ_Mm;e{4lkAXi*tfh?${72RbMbH&Kl*B8L>-o1M&Ds2NrMt25hUJieJ7z68StJegq z6yOiv<#H=(q<5uR!_& zw^h=}>vO6C*=cKK#c}zv!#Xe@m!de5O1k$VO{Jwmk=Xyx6MK8!`|X2zRBJf0^ZhQL zZ?P-%_#(4cNZ(f_f?TFa*rmo8q7A}!tJBrW$_lclsI>7ni4IdO`I1RiLmbG1>bGyN zhhx)UB(Hl}NR>XAKdJeiz&8%Jam)Om3b#}tsR3b*u*r2FK70r}+SD{{2}=id!1OdQ zIV1}@4wtuaXNX*!0dffv&%@;S5Y;oxmM-ToRKaU^Acli-&Rx|*u7SSqG12t&$B!TX z{{4IV_U(rcAAbGPt{rU%JUxLgLf}9~1mn+@IAN#$I zQ!5w}2qXVzNQOcczJN=8`}XZdC~2y+&&JYlg^7vDAkZz3Mcu%_(}{_R>|0T3vi_35 zH$+6X54IPFhYfuAPjimUN=)kyy2QpmR#yJ*??=er%uM1~jX;HUib&yo1sf8aHIiIs z!QOtDAM9dlpnl+@Pr7^?Kr=zR(T>g`ClgpI-6E zXOBe)PRM`2yU#hA!pYV=Tv|~|s{tWI9FKyph(d`z#~~o?@9+29{;jwA5__!r@iZVPfPou2 zogB~DdPAo@DzCj6L=&V5qbjFVxxj{^q9W)Wnsvp@%)+c$4>t)cvAyS1*x$XthTuF( zFxNQ_x%Pw(DWmvL;LM;qdV3$wbtV-T7sI4PVuQ^i)yYAA2N-Wmc>CaNN%8@KfQHF*`y6FDNJ|D*A0_3B$N^=S~hojndhq$bVukzfhKiF2CPv ztYm9D?=|iZRJ0OwGBF9sLnI!Qu;kKda4J1A>ppvRO$U|69$$CMT*I=8itd~+)CjUjx~rT% zdh{qxs&b?RmfgX@Ve#KTbwM^{RE27g4azfL9|t?iYotngtWUMBtT+K@f#;>iOG!=5 zIjCBi;r#t(0v0ENRuGK4fWzggva+i_UE>C1TN{fdjjy7jIx0Zd%t*D3s}xi^kJatZ zvyebruFVXCtlwT~W24zgwQWyY+?|{w45aMNZUcN&df6|JuQ|Vrvuqn%Ae5dFkPX!M zd{TdBh74=suT`b92cDyo(*SqI60JtM>@qbTBkV`U3=IMB5&bv|;y8(rDQ@0{wZ9Xv7cxp`?EHo{C^dcePx71@BJ>bm<@ z1^U3n?%plkd&+}C`#Y3q?8yQX?sMx>RePa(UCSXX(rHT#5gP-kfU)uMGzL5Avi^qI zXfdaepWGA2hr0j<=`v4p*%jZP6wwzEb$4~OcNFJ^6up?Zr52>xpr6JTD9*=bcOOr0 z<$L_;xqYp4X&+&6@u9ze`J6BNn6-12fte^KHn>H@h#I*5ET@s$141t5vL>^~uA1~z zu3HN2j#{BBdjetw@e3N*Jn_Km=bnHq^TgM8WvpIGNXYyqmJAX$dNF$JUoaR>hgb8E5UNah%=KFHsrG+5;jEvpL`6Kvh~&;_TwGc5-|O2@66aEp5QmO-M~G zXdr(Qa`F25<02xs_1@9G+rF<)RvLX;a&jO2sv-9|fw7~bx;lng>eu57U!D9zmeiT>pfjv8d}=Fj-p@(tv%v$a9K2X@}zb|a7!UMnOarab>>B3 z?#K9{{{DN5TvgP44p25kH6`=wSTFPP4fW+|ro*m9lF?)+%XOl?i7(GCYo-C1(-s;u z!_NJq;xh6mnnK|$9)04|=;K!(bkXljeweWAtZhHfCfGgwJ!*Bd7CQVPbbW@;>FVkI zUEV1K$NY&eN?#+S;}OHRvIpNa(xivS#stU!aYtZ}jEo?-3qaN*(XAM7@A~}`vQB7C z_Qm#KEqNyLkuGvIZvVO{@dkavKuOJ9i8!LTC+$``Mc%^{rf8wFx2$YuTH> z8I;}d!OX-l($jwqIQ9iJ%DfReldY$#tE;cC(tHE)+7B+ivKLriU^%9ooy*eEo00o> zah|IR5+;n`Y+ddGbojoU?T4e?-KmQ!D-CcZAPh}SXllHa#Kgq3w1Dk@ahM-O@#-CS zb#LFbC5eiP67(1-O{4#0L!v`%d}(uYbK}nsH5p-HHkKw(Dgmd*yD+)M1qFRL9l2E} zs8ViaJ}dq5ogL5R1a7jemlXq)V1bSe3r0&IM)u+h2vL*4U%y-zer9F|Dq#s4SN|Lx z^@s7K2cGP&Pk(PbIanMSNzo&HJ=NnoBjPY5DIzT@`f2Y)#&4CM^!$ofT_Q_m6F0oT zw8bng)_Si`!MxKmFj(i!xl4kH238j41Nc-deIA1R3E>2Z zEZxotJSy?`(9nCWCg+CzxsBNlB-df`(!qUa1_az&e~^W4P-QsR4L_Zo-re-3N5dAd zO9uM;WBo2T3c3EZ0uh4AheEBf#uy!;YsTAjAaTp5CN zNA06)n6F*VSXYG^8;3hCIdc0UBe>1c39=TI#Y3ahaCSWu9`8-)@ zhUYNNZUd#txU}OcciDlwgjfTaD!#Pwik^w79&Qc}&#b-MR7)5{70Bq+)JLD=QB7h= zS8jhHNC7(f{z*o~9Hr5y)jI!f$)7)lU7SA}p>uzR5)0Mzma~J};Pb+{i0qZq9!%0T zTQK4V`}*7#2d)%hfy;I$fxPt3be-Gu;C=Xwm9a|5px${~?=;sX!@Vz&14 z=b1OKeEM2ilP=;L8yn&^#1n3G#aF+0fpSr2VU%#4dH>`U45KI@EX^$iS#R`jAdP_4 zX);fCYF8U-eYfoc0~_P9SY&*+mWHoIV*g+sapy#Z)cb6HlN2fB{KDBqA79e1(|q7* zIUuClh9F}8+}zyEmCLkcP)Y!T8wh!|e3DmCu&1X-%)}K{+D%u)fpwafo!$H|;XU=u z-k~A8uE#q|32lr}<}o(_-E**5Vx8DV2{@c4lQXoP+d7G7hPCdTKf0zv+wpl zSV{tX{EvJYqCV_IFUWpAYfj_*lG9BeV8*V1-23sLwYAm=TA1VP2PQTO_?Dns zJE}2Ejutk;#*R6o5c^|6Zux4IA9R4||&B!ymKIz+CFxF>jQy z0I_%1CT}bgiNihsfpP8Hja^axxWU57ao|K3Y)BUKCt-kkPM!4MLUQurW^p)KvVhdX z@;VF_x98M?T7XihO~vwfVs*ge!Dlj;~yUU~UeZObu9ALug1 z#`gw3s>wbk+5FL?B0Z|oii*B}MBY%ygaO@AS5F+Umj(lCXc0@nQB*?!r{RnHReXJ0_n~lE*(uM3pO`dKSB?PHbjv#!brWoiB`mN!fveYn!h-50J^=x+e*m;;pyy>}W$-`X zoVW;G=(t%BbRN=fd31&@-eoSXt$v}3kf+vSa&m&FKQ61u+QHg?X945qPoF;J=eLJrr%AZYB|A3& z#i{u($$%#fQekhe8k5THm()!^@FK&*UVqF(&7K3cd(pkce2eg>XoEj%cV&A)&ehk~ zyShae-SzjcAMuBqhcRJ0q+r;HN)_rM1d#j+KfivliRthqcuzE8m6&SgRwY8c#M*)s z9H}4mb0CXp1&pg9%)zE2ARt&BZ#MRKy8DPd0DkO9I&jXx@MWOddD2ZL(x? z1A-p&-M4f21E=pSrL~^^{rlFwRYWL#9-u*vj{Ogfb*a`M$CPjWTZDIk(E9>I8ycd^ zkt=Kf>t}$yIU1gycU&?T|^t-o)Pte z@I?yFb>3y5alyF&!&pixdFE0nkvgp?s_+BoDBwmcfVc~RbCfU>B9Qli^8o@SP7|X# zinFp5i$8+KqsNneJk-VR zhjIW+-FhT$kwNo@@nXMFt2`=VeP`LI#<=bG1E95`ECB#yjxh6G5goJTf0v;m9G`&6 z!b6KF^@unK^wLii9#a|_87;z`GcZ)f>l+x{7N9`If*0$C1_A7P92@a(&@9k@@@p{c zc5pLJHaZ0VP=lMcw=t{M_g8S@)J|zFwIW1>vpVqw?2_3q(~1zVTlHxmN(Jt^4qt?l zDp=bXOf*CBk}g!^xxn=`L~s9aH^6T4osCm-grXc^K|w(b!^b$aSOO3z6AXZBtb^BU zS{_m%vN{h$91!drwS?Iw$ z^N-2}OkbYd$zJwIhIKP|32cYaP{te?G4A_KYwj;(@(?xQ@aON}BI7LSQr9p;wOA<+ z6O&Zw*UO)zf7%#BE>4`H#wEG~|Bh&68LPLXhfWdKuU3tXLAFJ}wArkWawJ|nh? z>44K`-89ivD{pK_P7etD=R4dWMD%H)Dm;tLIVe*z(#~|0U=~p0u{aQXo_2;tu<8U# z)8GdIJqEUJs;)Fj~+6^-kQZSkvH5Mj1a^$YVbdV z+5)&t%nS_4X=$SMMOd<_dh7~|{cCIt=L~O!%<^m~`FxJY<-x~Zy9%4c{}==`1H?F( znvzmd)(mWi&|$D~bmZ5~|KQm*6Al#GYqOK{AET{L#`oj5$;q<{0M<~`fTo8urvc-v zIE^EM8l|Q|A7v~N0&ZF;AcAW7_ci!DJsu++9TeKeK?{6R4f3_u=a&VgmR}K)mzS3$ zLTug)FA_*7NH->~oU|}AGt<=61c~|JL3Z9FJQ@Gu8i+2h1wNQE0~ORy_uJ{8*{ z5;2w_w}Sx{pOKrZEZeaW28y}xFZddPAmt$tM?ZTwKzxI1poBHqT&NrbwG?0bJ;=l9 zq7L5n_TdK2s8W?pC)Z)9=)-J%DwKg%5Fn-;4B=4625-G@meKrX;@B`wQ~2gmg54~o z$168AwTSM=1BxwQk>|xNefd!=Um2^i3hjqK+iZ6etG2e*d8B$0>KrFWHOg2?l-TK3 z9u$6?bCL15@UZnZB!XO=b}$VZBz-F6sQ6$gGUvSby;fRPrAKq6yzzBquXtQu8SmMTR57 zauu~kg22v36tm2)YaPqW%TQZH1nBmqiE;JScUb1ly~a}%Vjwl45(-!ikZY*cZ=6Ma z2P_)dbP?8}x1{{e*L*s_xuPk6Er57xtE()`%%*gBaEnUJwupI}trBAK`PvV;4XlOs zkUr_A-;oqK`V$$;igF}}`>$Ywzg50M&&U{St#50a=SU7^1qB5Ku(aUhBnesB4|V4R zXt;M>8Y*js^yJa=magVkzeaKwE)WX_k zT@DJ|pQV*)R}s55(F}~(&CLy}8E+=0*n|G4{0t}jmv15Ki$d>0S5n~NPSJ?qe>TDA z+S;BJ33di7gH5T_ZfFJSv*y?n?~^h|HC^@vTVlWJcTr|$W?5P92TtZa%^Au;ru`=m zMTV{s>6@7e1|B1fj%p1`Appft6@bziB_6J9CkUZ#nqGtEKR4I1BXMOQYf?SpXe+dU z3d5TxF{097Ii6N{&1-6n4WBff=1V2rR?SO^HLwxBeMj3mMLqt9?jSWg5lxo1(#zoL zXl{BJo&+UgUit_8rB5vvLzpqCW3;}RwV1fE+J|;4yTo}L>VaVt9ABF^0*+l4b$@L= zU*1e{6Hj*&04M7+$VxVOB0{iLt(m>|zRR6xEp1R1Qd;KKKu3>~?CH^FkL=;gLrS^5 ziDzVTM{DWVM31LZy~cbH`|rDfv2*?QK%s6E=pQgsK;l3S z>|$D_!yaT-{h?xuOpX@{L2%`ky*Xi-m)+@dW{^yEb(MSBgQKZBorg-Xo@kp}v}hP% zq2#U7Pp2y2?puADHGdMPEhRPmj zI^xang=(Ab3$o@V<8>Nxy}#|Di8q&CLZ6;4wMEpmT~3;W3#a=% zfenW%wNUJv`rB0z!YR;`t7O5OAw>CFHW+wlpY8V|GyyOG&!wUEn9Ip;-xeF!eEl5~ zA0H2ugiLDki5fm9iaL%Vf;02u0?>=qAwVQMn`@(j0zS-;M~+u|86 zCLuvB$c_R$R_`n@czid0x$QvX8MJX7?ks0FB~H18Bg{JLX{f{Vp@(1#H#vSSRTAJJ z8Vy6pbK}XjU@>R+=ZT}1fflnW>|fu19YU*>e@~hW`0#~AMbw5^!TIPBL^An*q{iZZ zdU=H&65LML#my0s&MQG%mXiZQ_%I8oBMq>}w}f&C_+%`gr1b-bOifLVhbwToa!}N9 z2>mp);LT7CD-2-uzP5HbxbNUr!^(r7Ti(#nP*$b|@AD9TM*Akq7{w}3Oz=x^y3nL~ zlZ8X21Zq}XRfHQw7QTE-P`5$p3qQKHAQ1o@5g_6&dBcP6q|Dw>5mGkRH^sDcFN3F* zW)5{v;K<|9VC9SheL)3a?-Uoy`X5}!= zis2>jD>Lu5&2K{8AW1#s#6mbporAJW|E1~Nx_633Ub__}8)ka?HyyL1*FJy#4E%=k z+8^5&Ou<-%DveGQ@9s@OY3lr#NGGR)DSr?Rbe*8BbG#=ew-*PY+-9t&_Z^4qbUiB2 zaisb&B(=qXqUNu$af(Yy5ZnVFQ^6F4UMt`lP$>bC`pDk?;N)->_BkizZB5N6-2#y$ z^{4WzG!X#R$K#f7Q&QCP`ofgh7)hfdBWsKW^7}=lO$Bv0?fj3xB*3y> zav?VN;W6beFI5Pt@FdwRvLL2}xY6$gQi^#R096!dXJo(iYH74KVd@lmrRvweF~I09 z)H361a(M=UO>8MV?}Kgu6X~tTeCEPQomRpTCS-oP zie{Fg$vLOenS#;Y(##1R)}qPVzV(WkuRCUCWMoDXR3s%OeLTmxnN zoaW0u8Ra`N3Qv+gBMSs{n&{X2H0892<)d+E$w0qwJ9vY=X%=|wVKH%uCijKfk|QN- z_75;^x==g6e;>@IC6I(LIk6|>(1BT06lsLD?RyN))OC8Oh*H)5sd9%p3#=+{98s|1 z7xSOXo>4DfCU)6m_rCA7yT==6EWpCZIOEFZU(`Z6fJ!U$9uy*@q%y>vzoz0cP&_#> zpleY^82%K(?CwhfX6;TFh(rhks8HU`TK_`8QU_v+LDaD+EtZqZGah;eItZ(<<6~o& z#_DUK5?NR02LcY>&L|1i85C>5$-j{l@R%=Se3cCU83dXU*5EyvH3MoQyn}<8&Hbg9 zGsG+KYG`)vqI+f|?`*qRT?K0vv|9Ea8bo-8IN*(jtqp{Ikw z@$aXiy1JvE$jeEY3Q9^ET_&+L@f@9|Wfl`xSY#ef#AtSFzOn9KJrYr}@Xi<_K+_%Nlq7B0FG6Og!F4tE}z@@tQ< zy%2!?jM69N?$6W@o{9%;kSgJp`}ydaXL24XEb2hK=JL=O&OaJ<7Lrfja6thM;qCd*gsQRU_{n zueI<+GZz|VE>#Z7Elz$QFZZI)=CrwYZqpI)}vXksGWEXCRKg|58zx$Q!&< zp0cbL3sbETQ0bkWodt66aJ{LS*3?^JiE^}@)zg(2RT=_)9l>e0pi}}nMGm$Nh}vox z>Q+O8Y>lzgb$Sy4J#H%1ygtjp*C-okN!^OM7}5H5vUGfP*ISx2wAr$3VcR!SIr}d6 zf^9Xl)YR4*u|>aNA}e+rVdEyItb>fUNzd`Zk`*Qr1%?R}>Kg&xfOh}SXhmW!MpG6# za{Bm6>dI|)-@Qn^j)N-nR^(%q(S@d2=!_?0lDwy<=LN;69}7G(t7pDaxnU6$fdQ}S zh`-rFM<^8e6f;>p_X#GvlAt6CcyvG+932J;XK`CHRU@L+Qiv{AHOE+Bb$OXuSK>VT zg~2&y8jIJg3AmWTYG43&$^3FnnvE&naaVbl5gH=<8LoO3_74nb>%wryy{99=pa?S= zdeYsZQHzCYQTl!e_7gNo>geizD?%J02ntXlSFC4apLuzBP*-7xC}w&~ck5vF5)rQX z^$PaS%vi~$)9OlWw!xnHx4CaDKzqyuql;6$*%;^V@Bg)}#rk&w_eVk^PK7ZM>C^wu zeP=<4(wF5H$`*>UlqUKsU|OdSS=Q9_1o|r)_vezoHZ{u~O_Es-9?>W+F*2ddd0hA= zpxZ_>MZCAa-+lRyh-y8?5!Q)`k&(&}YkFN=H4w$u3iJUMl7li@<@u_(+m&8NQHM&y zO2aPyFi3kK@ghFD&JNawAf+kWQ4wQ^za<)jm#2nE{U!u-n7$N6X6x}SbZQHv`sXgR-vLY;@RE~HL)Gx-R4&2Zami)M$eRUmtLO36l8 zcer8(7iV?lP03T*t$q>_mWFrzQ=?Mm`gN|UAf+b$y>>noQSd$9<;6ul=A=ElZ-w3^ z{`kjkVM>aE*|dG3z#-=ijBtZZngMDrc#>q_1a^Wlzn`TN1u2i*8`uI;rGug^L|WkP zs22j>z`{l#C#NpppgJv}`3d%`ng90hunU)=7zmtD^*cZ3VC{D!R1o{R~XK?Jw;2g z1u|cISAcU;v6$9+E`zlk`wz5))9B~z`rWa^MX>K7sby*qq8z#k^U;cY<~llkaeR8u zb>*{r7dH2?pQ5Z+;9mt2Zpe_M0xqve%rJFf+{|@(gCm0L#r8zm})>VV${_*41bd+4c zbfg$89W_kNb+LrjVj3t$d;(;F)(6N12>AsCR$H6=#vzkhh(2;|)2FNhA65Ex{mm?t z|ICE|wr(jaciL>Ot(6)U1z2*r(Bx=CcdI&AOdke1Hgm)>tFpvWM82R0OI*yddgeF1 zr9Ep?NhRw|OMcsf1GiAL_iEEszXljO5D_!rj zSIGO1pw#0o3B^IEubjg2{{HbD0~Td*^mIln|lQ>6EN z-NDJ9kX`!QmlT<^Yo;Z(lS( zu@)8{Y$vEB0h2~B?_WQUYCCkTmOt#vMcm`*Z;_3G6PZJt1StL7h4&POSm5x3r~^}0 zF_f|jTbuGxr6Er}(CkkwP5&H zR`QHk13SET?>wO4V5H?DY9M2Z=F2@^YNFr;G*A>%4sL|JgL)V~@bc~g`%o4!^Qxaf6q~TZ6L&f=^%y!n9#8E zz%^Lt5Nw1Fl{P5f3YdIGcIv09Dj*I&UhxQ$0t>&Ge=q#Mu#S&{8Dt(v=(52ihAU@F zXP0;nmMUiM711a#bF^Ivg2EV0MC+_89`;k%vBm=5FONZ^qUu8ms+*a2$pLU_@7UdW zw~FV_3EpIlbca}Vjy6w}`cfLq7EiQFX(-Y}ZJq<1dK?^6%blhrov6N;Vlh)MX>7xNl$gJ zmL@7@{=~R%UD|qD=O9iWnX8=-jGYQ6L0L9EZ`GVFI-^9||AN0P%lKm&Ph~PNCy9xn zLG5Rs>Jpk3311qGrEtQgx2zwrL0duc12(Y@ovL8>&O(}|3{w(F(4kS^7o0V#FvJ?1 zGm${)8-PJF>=;k$^7A1ado0xDV{&p^p`Wv4T}4zg1ZJIs{(FL7QhkRd845uT&wnPg zv0tbWi4H(bt$VYQPi*tS=u0BWh>2BlewmfH(n!%DXM516l(l}?r5|GB;(*u={Qmuz zq_n1HA0idhMJ%=(AFFj&tdtHZr>7GEYOPjXQxn)U2uLO;IIC!P-M-Q=Sn;ZD1Z$?= zuf<2A$$yvUW-(h%!;Um=l)6_B=4^zMtb}imJDs#&WMc9VXWa6eIngfWaJ!_nM28&q zFuy`sTZmmc5(gsgPbCQ80^nFsPjhgnA@&BN1)P^8b!Y)qPa@5cF4N~{j-su?rXj*B z>k~$y@v<(c4~e9xaKO|kXO~sqT;r(?iBru{&hCYDQ=cXaQtfg~dt9{x9gXH=Gq%&V z^){uG{LOtoSWD65$h1#e)7OQBJ-o-YvOf zR9{bpI@jXrDsXF%bZ;&Kx>|fJnnJ{nbOL%m8r_a@`} zbeUn1pLL=UZn~_>-60W2;Uq@V(4P4SCAKXm#RyjXb6?*IJH%aU@6H&HkY}Cnti=qr zm& zmm8|;1?$Q?HsPYo`}+F8>uR?WrVMjAjOntuMjr`ioPV#|_H~9~5u~^+ErA3+a>Ad7 zkWtjRp2g6ZTX>IZN;5|(XKzW(ZtjmbiM0xWsty=jpml>5kTZeBz=!nNn@e1%RmCm1 z`wsJmopm(5k+5c2Y&lQT2#N*%;0!}k1S z8%QP6{|B?+IoMRd+ZsX?FZmV#jC~};<|hGfX+DUOIZ0)m>{#}fb50*-Myh)RffOGc zHCx-u|E)<_n2B}}wIf(rKx=@^z-$0fhS>lUGAHpWse?(q3Hlhkyx6UU6?`h{aKKbQ*)tT8#GF7+W zx4F>IheFq{bHubm*%PK}=poo^s6s`{gtz8C!%#wmNdUwG)Ib{cq2UNxmp*+G4Ogo) zyfT})j-(tTtl$-@vS|ktdKQxA+wR*SpWz5UbS8|ezsvUMruh=svt$GI3I4OEFd(U) zhih>bFcpQmBMJJ_!qHU{fFv&BOS^|AaBSE9_u@8hoT@+q?JlRMhsSLW$|Va3QuID~ ztpMKC5ICg3HlTG0G_F5X;1~cn>YpThRUzWxIVVCN3DPz=!!q<699sPidj$@80_8aq zs*I##B4F`&NB!%Q2{?iY>PzaZ4Z(TZ1jj&xliuwrMX;iz@dQOxbF={s&z#9#3OEPl zD9XU3U|1AiBC!jQ>FGITk2pYtEya3Y+?tEfa0YS`?+dIDSf5a;tah1HbaT7rUjl)e zrkAdfcP)t+umrd|AbZY?`)7P?tf=od+Qr3oTp}h?YC|x7xr3X<7OL}@j9jnms@XGt zzRB&&e3+21mffA11|`V`IL-`UGOd!`+cvuaO+^L;DP>3sHutztTa9-fG_jV6i9d*9 z#NDiZoSl;s%qA8-6|2hG>Jj_k;P^zJU-@>yP%k&CiB~DfgEtO10RZTsn>ttDkr&CP zL04_a_ix|0#b`k^(Gj9Lh*H(4G;{kN67gexX0u21$c*K;%%>R(%%AVJ%tMaGtTDbY zSr0lLDz`pgg}w40>xMbF1w}=l4UQ`86DT54`9G{QjA(_F>n$Z@9b01zo2ZNv7d5f} zHZ5(=q}hE8xU0Z9*tTQr8Hwv#Ce2$x5GBk}m#K(aryomJ`Lxl2S73fKSwuM6=mL*? zj(J?d)yS7G=^~XIruh>(a=a6pCFz4Mz5?lXnP@t#U0NeL2soYUjrLrN_<*f8YLL)I0)%|Sjw@dp$n z)FBX}2EsddmKDJ-^sW4R087v~b&t1|9Sed(9S;|!Pv2S_64TC+fD2w!t0kmXHw_Ao zE&58sJA%2f@v`Bv@uZ%r-WZZzHc&c3U<*tQD22yk+)08J!J!dIh;Rry(ql+c=ZaIU z$r^%Af!^MypOJ!z8;57)BTk+xSCG>-&-nJ2&`@}Z#`o#W*Idym zFPL1Qr81D{S*+uR%L%N2VUcIrGu->UalLl$rc)^aBe<97zkMV?p|n7MLol{m0pq2m ztT{Kb?CEwTx_db@^HRga%Q!xWjPtCX%Xh5cASmoaK|&~AY=J6=Zi&F7^;<+j@ck~E z&BJ4u1D^F6UHK6%927ZiYV%jv0Sq1+#Hep&K#z;!L3f1gO zJC{MBXkIH2)Eb)WWYDh`1f!zwVF~EnH85>ow_AbgrdrEJ@`*gFXQoq_-+C+Ue>EYf zRxTmuF2EBd!iSLHj)1#Y{bdSM0-pg@+Np(|sFCNh%mryJHJLZ=ACF#0#QA6LOFAE* zXoi`I`aZoC600$#3GYC1_}$x*i$Es>u>I6B z04;u|vh&{OtB_q;>qV=HS6EUa2jc*Hv!@8{S_2KYhsP&V(P%p)7Upc0>B04beYtC6 zfBmh55pDzm-*>;wuX}T2y==AIqM8V~0Jw>2xi_f*u&42LM-P*Q5bEgD=$n5vzhK1Cm-7db5EwL*G<`+x#mfw#j_7WNNof z#bZ8JPBc_+QH6J<9eL@9wNI?8{`w%xpv6t)_K6TqPb9t(sTl683b~Q_6EG9V{H*H` zHNa3rxUCsS%xzU=Zcb2alLooJ?J)|XLPBUn_v-Vs@E)HlLQ7MZLdh&Ma}vyZ$YEfw z!&@ZaysJ~y6I~Wo1R{00Ee2hH;9G?|lO%W9bZ4fGv9;|6!x&6Ustk*O|M~ezr)oS1 zXN8%)q3L+%-8`!dE&%w#0{0+g&Hc1AcN`oXzrLh$;9=0Ht4~wQ49!{wIy!E1ofn<( z{Pxx|@A1y!eHkI513hXG7EcBz>O!0!-ejXF8I%$hwuCx{GCM?C537Q2l4;5O<(oou zFO{>yl!AU0_{j?H*aEFzOX+`P%Y^4E>XH1`n#eQ8SaA~d+*-!6EOfP3`p zOVeMD^f5M-({NLmLwNA!$u)23Xcdkmb($)|EH$LqR<0PGZw6@zAYIe6WN^`45_45j zTAF{06B5^o8uaA0Aoh+omu5Zz0?bg9v+YiKcy{zIhZbxs3mpzI?=^kzGL|$b=u&ZC zZMUiDwYyGENT_znLz1b-H60!wd{RyF#&N+V`nhd3%RpDy*nG^poEvOH0vsDmwt0QG zd(3?8H(54dD?!i1-#>p^G?d|)hb17sp=b!Eq?Dv2u#{QX^;Q83=CcJJAUzYG(JC#g zyPG+eD-DnLXf+!J`IqQ{Q-RSw#+%TQDF+WJuhi&t=iTK1$B@BAkJ{0#YFYt2!h)3j z@@v)+mbS&nuv-G)6?f=1?pwgcW7(m*^#{dVqeJ5R-}c$Pc2$2d%}{)=4Y_>za_dPa z4Bq_Gp1s={8IU%7K8;)Tw+kn9pBGEeltL;S4~3q;y>tui%P$$ev$-z~vX6x&@9y}l zt5yn}LYqrr+gnXCX@<0E>L^6Fke#A&d7M6X3o9Z7_V_@?*HdR#*EeFNcb`wJdwUC? z!y_XKwsdiUrA8l8LW?=n3|+=ABCPW892|!3VF_OR&$64}lt|S$>1));%YNZ6TN~m- zbp>x9$~aKFQw@Sa3kA0Nhr#Mo5v}vuCU+^Xhq;D;`-#E$z;V2x_NypV1~`SK+OwNJ z;q^NC_xNefhc;8WLRqHXRC9eNrM1bRHe}gT%3r+xws4ZtRm2UA*Iw^eB6U0pXzZDv zHq0_Cnls=A;DBADCxHN``PCQ4@OB-vPf}VMoI|9NAi%~-=(rgTAp&h;X{W^&k;)H5 zlT$S=)Cd|J98&#-6#b{Gu02DN;VX{%M$Kc$|;a9LV zO9laGVU9QV6*KR$MZ?jZrZbZoeV;46XYSlQ-MUGpnF ziB0<2yWC2XQ-Io<#h^f7?Vx`Sn$;gQvUy6tgj_1?xd~b#>n=AOt_E|xL3-+}L=tQZ zEc|N)M2Enbh&qef)v>)jalC+PL8Ow1YJ}H;aE#k#iuWyUYj?I+D&=V3o?L)|14VRp zb_U}bj_?k(LQF)r$j-w?c>9x0r}NrkZ>LY+FMywl`TSnN>f?dBu1H2 z+yOIZb6=gSd0m^E3QT3sT7PgaU|D%Geqr1}7h0AUILE-lsPCAb-m<*YBUwDxKJti_tb2Zb?xXaydFS1Gx8WT7= z9WfVWn4>7)SyBWa>rDotud4f;nw{L@6N6K2S>%3lS0W)R~J@gXP3bM*ZF5nLOD8hcRq)#}s{`gNkmW~u)&3`p2m6gbTQ4le5KQDnR z_z0+L5E=k{H(ErP-T)4wRkLoY+?AeZM2sE`y%7kS18U3@)ink%i>18y57+=a0b6?< z*bok4tZo8d#Uo7W31DCPj6Swvt4X~f1a-fG4u<@x@C$gMLgZc~s%utZh$@RaUy-b@ zzfsJ5GCv5B0nec93ZwymDg-)|W0AkibbM^ASJ##kA7JoK?41n>{hotH(gaziV4GPln+D3KT#KXZM5MbR zk|m5#AOLjin*sn%mq9Dj1ef9f8^FGd^5MyNeblyI0y*P+zoTB;{_SILfb0X7xl7_7 zn)VvOtglH!itXE~JXu{}5CC{=Z!hG=>?v&`*MblwP{f_}$*&<=N;1N-xfbA;0%;d| z8^CmS<@)9v$}{KL{TpU}AN=HBi^v2@tFRI9#Z#%1*#~_jjH9gsDU%=r$-vO?v;H#V zv#hnKF9eHfLk#fXDaysZ)^Ow0W=;bYTuhavJ0zKHI(pJ6GFYzhcs0aX@uK5u!MRlj4S*bbE5DfwtDz{5(yVSOP=@S4G@OQ7; zp}|4xb1N+U^+OPyfCSv*TSCog`dH={1tL}JrvmZnEa~zkNpQ6w3+5y(YAr{`kg~h7 zi5v}Ldjbr_dHk_=|vHO+XH$}*p2*b= zYP1;dO6w9S{{HvJKP}2fmu()OfZdF%m^{AZC-1XBJ1r~h-WI+1G;FTX&^#sceDpO zBn<{2Wf3MuJaXZm=c-(+$fjX+`bxCr(24{7*Be2+e3}1-6J9VWpue2TZ`ZS}{F~jJ zh*5n3oazB91{StCN5*!*i}2|j{&R4XBg;`w&-Oz%D5?OeQ`$7!tuN74E;oW5 zD8{c4@5qz&n;{Lq;n-VtsV+9}I_#ep@YfeOPNlDq;s+lex|CmTJG3%hZp)QWVy}aS zz>Wm-@ZIrQ+N7#Y) z5Xl1ugAGNya?y#c2D$p=` zvbmX6wJ2M7dY&2Ed>rr<#Bt#Y?J+}zlU0C{=N`Y4w59Zm3Q%4P@ZO1V7Rfv0F8R<7 z_Ufz^wc}@iSXt7y+Y<9FP$%etj&1n|P$(R_&_gHvV*wy~xA8{m&mVwW0Cs(3AK>`) z=d99<>0@$oaxjnAH2>I_=ngCE7n-1n-;}oRF84qtazhoU_Q!;`-I!>!8)d&9zYp-~ zkjbvM0YNy(hm^87{b##EY-fQruOReIet{X=vQejYIXT0>S$FZN55O+kWLaJ8fYt87 zrWcbp;|C?LYLUIQzku}V@I%Q&F18-}yyUthj0A?8+guQjkzJ3DD4k8JE@`r<7GTC?=28p zR%i%E9bi)gXMxd2R1P=BkYUE}0S0Xv%-BIYjRdfO*oe@ngbR^zB;L7hnJ5+5?^+bsn%B9UNF}tXV||6l z=DSt?4mU(#4=a7HgzCY=GbkD+3PdPCfUs%@jwAzY-~gN4E%D1D#dR$`%y12ua=o?7 zPEhkIL*YPaN#(a%`JY@ov9|SQvNDht$258DN~oBNx%4mcfheOu@ZI***LEdwODwft zZ+Be(n^b>yc?@=aQ-H$bV^Y;FU%dP71yC=!2>>X}^_AN8Rxj-D@S1|p0A-gq&6}l2 z5Uz@29YYZ&_Mh$^cpI8vz*xWV-6D>m(zY(Sv@H-d*W@h6!ED=M;(#|r^H1a^2`|`a zw>JD6!URuXZEh>VnMcQ!4@lr6Vggr9w!J?~je`OCY-k|t3Yb!DRNJ~pl)tZ0TkKcx z?_WW51BHVzfddcmS0Yd_80a?|mi}@X#v6g6#us6#1G7cL+gB9 z7PajcfOP%};chHqcJ}v+j0qNPnrE#*^o$wNCl^0__m`K#!`^?o=v%@ZocSIbrq8CC zC}HH(W4-0HC*|*qgL5h{G@sQ8Ut42R{{xG_UwolEz61pwmVaDrBo^}@3PHMZCgfxS-yDyAu?;sg*cd(Z8`8pz=f4- zG}x~@XaDm0+3tV=V}|+<=mkFao0kw6Z=fvhqug|81?!0+6}bLfyuOi98ro7G21OqQ6Xw1m?Eyt8cM_l2Fmr$vn^M78c+b5U%r+4m;_JQ3Q=WLti`%cLVJ=+MdxZ@Y9 zb}brL&u=UnGf;rV8vUC@@b_Vvx$^}mqx-y8tMZ%M+K($PTTq7(A1MsroiGv$9W5Xf za}xkDXpubImPnMW>!JVj@m7u(YXPtCFB<>rKtW%mirz61g(prQy8<{)j3_cqRI_OF z5B?G%LHn-}Ob7KaBvqRXY60{DQM&(kHzjjF-rkn=QO56|RO|u)=BC3wAFbwpmc1dFYk{ICPJG}8zWC%S?a@l&du7??)JUoNrQ=Al-AD|SB z8G1~k9~%C0cHjv_b`v5SV0#a|>R9pixnMjn&4AAq$qSeU zYw449CfJ3W4hd3JUx}8&2L5+*WQqFFT}#vF(5hFv4CLG3&8l`CHDQ5YXG7r!z8!>l z99lomf3s;u3Vx#p<4)Dr#QL{bHh6lqL83$Jdi7twSW_7epa=_zKPc1nw@I^RU3U^` zV9Wpnll|9M|K0VU=jj2ewBrF{=IwL9f`i@FgwUPA4alzX!-nianm&LW9-c4p#CZND zM*MwP#{GM4{I=aU$ISkoSgHVVbYT&b&xSJ4P$g9ab{G08$0U(hf7_g=J(k5lo>S4?y8=0#`z;|K*4QkdVQE0n`w{spIUW)@v;} zW~jAVjN3Q+d=^w<|Mp}j0^lQK0$FyI#&E@XfF3}g*QUAfA6X{&joUV`u)%8lXOaJC z|NDKg^~*n1vdow1uag@v)5t2wKJxq~IRRe*yBe5z>d=4P(P1{!74XZ=53M8LtrAtK`H z=3;JakBa1#eVXO{9(NgcWCRvt)e{mj3RO|PaVMOhNKGV4suxy~J2NtG_>&D$(J;4l zMLkOtEklf+V%)3*R#9{Gw`1%+36bVKG)hWJq(~;U5J=2bGoSM|&hyQTw#zN-qb}>m z+lPn@SCCG5X>M`Wb~Ck(cRVFLXW#8MkF4ZlSY8fO|{)-0n|OB9xlyo{C@>_M9XZlF)YMl>vE|`kWXCl8n3ce8``v@g+62Hw-UK zQ;O$#}iB)4VSaIc!~xjj0Rt6pJLEeinHK^CZe5$t<^Y?v#1P zFQxM%$ylaGc+LqbGEP7t2?ek|RbzBvH&-wf2D-W4z$kaQHs>;x1ZsRDxT;%PMt>7@ zd`@oo#|eBZ0a<>w(-cwH?XQ9)qq#2K_C2R%*ajZ9ICv3S;73kdnhiN@uA>moxpSB6 zveIcupquTst-sIb+C%~Hc3zi}XFi5Oc;5+Ni+`3p{pk*muN=Tp@ylWV!QRDM6fzeG zHTPA2KVbH%nFr@1(lV;+%!A1q^H(~Goc9-cU96vT=8~YMmjiegd-nO;u1Rl(lTsP+ zx<%N(Bc`Jbe*3v|Mvf=KR_IvPrmL-oBy(8VuCkj)f)&O6$(!9F1YTN7WLa5Y;z!m; z-4!}G+e*eq5o=vOSMF6-P!jktH2t$sxg8OA!1LU}=|e&;V@>BKNP%{$Jh@oIR}`+z zRNrA;SKn3F%S_bO6*12d>?CV$F`NGeTisb2yW+GP!|THsZ$RBt$^h+Xd6;@t!AzfB zLT`r?>zQYfEm#J}Yp#~29kWn)mPWquO}gN)y@T=s{wG0)2EIuodUiT|y1p^~rS9M-}@h?M%-S5&NtKw^wrgvC* zbykXytC`pH`xEk{kDyoBQ0I&NE1t7d(jPXy9^d_G(1j4Q^akR>KQa$COPOQod_YQS z-OP)-7LIo9NH=;o?%#6TTWS(}=8w{LlcNuivB(beTOU>b1)1Fcgs|2WFOg@flx6{Zg`T3#kVq3>TB%`|Hh+k#MK8BhnldR1n%w zS=2QtMz1ivMqC^Rwz+hEoCgKtoM>E3n%-cosgG)^+^(8>5p#`w$II-;a^f?31*7a$ zo9nsbThM6l6D<}LU|qtjllw_=TtNBX>TIEpI5UBWY z^5%9IYu&ESuP^?yaF`Gt>~46UNAL}^+!Itf|3hd!PG3!D@D zk3qo~3K}!hFp|dnO~bk}##D#GRk)6pGHYX-FM?}aFmf?@8cU0IQhixCAKXO6R98Y; zzvtGW1f$~&_6slHA#7QvrO1T7nd8iRhfex9oS##B)iG&)S=(1I9yPeq=$ov2 zn{xM1`@0H_d5Fj;2&bGsuN1wh8}F^O_=wdnD5pc~^Vrl*a${PR-YrQAp_?~4zx$0A znp2WLqx<6Oex>ZGJ2d!Q`Mfrp+fT!dv|%Namsec8;|A$S+8Eov{c2ohpxY34OH|U& z7;Ad`hctGNe;pL8j~!J(uOA#*Ne~iJf0xnhXO2ELara!JwwjS}o(fZv&y(LLQP!sf z@n$%y)sXzPd&PZe56;7U?^ZsRw_)rnj?Z1e)93&3R_yV$Vxl^Q zpG3wQV|JQ2nuoo?^Af1was2he&E_34-eec0Fmk~R?SU&-X@X9>)~Art*DvNcp_Y3- z%KTwnUX^`Gk~sv6*sLjPR%<@Qlf17p(QQnTy0!aWYbx!UvL!SJ_Aghw=1H?PH4-&3 z6SjW$=S3rVwiS;!${<*%HLQ zN&?Ga(Oq?`@M36WNK=3j!aER#+v7(Y@K_`qX8Y%c1O=%dHXT-mE*8SHx^26J1d4ZP zp+kikuZ@Au$?vzU?zirik{$c-V01#|pGVpBNNB4@k850^A~$vFUB8LNrOPM>$M86O zal=u&WU=!~-s3e;hMD;IP8RkKCH|5SlAa!%rj~x`qYmSS5-qV1lZW$09-hJZvZGGz z7H@(&5sf2vqL&~Wv@YQkre93QH=q(+>o*Gn^BZB4eAw!DII{Kk>HOZSQR)obI=rcB ziGq}8oD{{r9~@p}boq2n^~DEWxFeJEsI}t?kO`)fskjXS-BFT3m-q3-T0El`I5qP{ zkUX$wG#n?6Mf6Ux2e)ZMA)-cEa-~2ETcgK-sL#74g)3)^VltSORxdbTF#Y*@m2CJqL2c z3p%Vm>1e9|bXj1Y7Kh;*|4WYva#6tX7t%t}&2xU5mI?`BN~PLtt(>$E=xdyUF^bD0hvcz( zt}qR*mE4MnJ7{XssKTo9&jMjTD63pUl?rn4Q&PaqN`~U?KFwuy7cOFbC6A9W-uNsB zxzl4~QzD+%lNq3-WR5_T+uolWNR3-zW^f6@SE_fiJ)0{Fkqf@>1wOiE`d3ND=l_bJ zk3Yek_d<_)@(H0z&@QqqAOF2?pKsGVxXp{U~BAKlE6S~&PzWjfOm^uFM5cB_h zch~;}nE5%_*#2{K7sp?iuJ(TqnDyZ`)MfGg5fP~uREk>z>4I@^B{vtFd5e)FS0)%% z)){IVOe8bsRF}6fVSmBPHp9N9NO05*oKIE1c9E|lT`<51cQE%>yqE`bqQGz$*{-a|7zj!WZV>~^{EZ=wC zJWe)CM@);#2zcAde_veb!WVDNc{Y9ewOxp=h%BF5$1vuoleE6K*#%WtmGjul)G>!+ z9v_afjhovuxufA66D@y<9PJ{CZ+3L>bi;mgmo*tNy}fyVvsj|1to;7@rng*h9erCy zrX8o{6s6A8KtmVe3t1(a7wqXbVg8MVb2@iZTO`Hq5=Tim!b}KOvdw+16m6$A5|-BN z3Fhj(v=nVT-1I|SoI_uR+mBED`+nES+T@@FvFp`YW3o0GlweD#LClt)@nLBX-Y{7P zW(JS5V)SxSj_?RvmZz)c5|8~i;v}(fsa>&8%3^bmkJyP}%QtC4Z5nBJ+3MNwFt7O3 zw8og}E9saR?y?O(rDnZcn=0K`qPLQFcV8&qCtluolD1*?oU4tdsrQVKXOX(QsaaKw z^ncxqc(E|smKLkll;6%k;gAXG=z|uK?68nT8H*;!ZeHRSoO+mV8S}QDh^{$f_~4wA zd{f`hP>5v-|2audYl@zM2>#jfZLaA};zpHc{_TAOR zX!o$%oYg@C=Sa)BE%nPi-LVEvddd+#UdW!;70Zvl`Bv>SAwiE{eP=~4gQp!$F7xGK zzeY-{g*j~QwjkB}tM219IIXBA&=YsFdY^E`f7=kMenoz35@9acVJ;~EDcG>oc3?-8 z9^fT8)Qj_l|wVwkOFm~Ez+xpMFhF$U!=uI9xst^!W!6|h z4*S!B`bu=ZX}#?}ztR?Wbbg%`t?*i`C#Ya)Sjnk(?Hn$Lg-->IHB~u(D2G`^w;CyD zn;B+Hg!-y6UL%kTnrtNQA&`H>K2J{nE&Z*FDm8C=e{x4l%Z2|iJ1MC_`7X>+#4M!9 zc{lGhz2%vMQX5hIzTM3IzH1@c6H(^(HZRYcsDe^IDMrHP5i2C-O*oFxH~piiD+}VE z0vM74Lw?UE#af)-9=6^_$uCJ%p$HL@T`*agIS0e@&W0tQFpQ!}#J$ql4RKjYVB#ax zdEU#bh;||42DgWekH0YwM1Q_Le6YRA-AB9qdh3U;{d~8a?QXrVeSU+oHt%`_7h@b` zgEoc3td5d=7%_T*YotKJLq(X?f}T!oXM=_JG4_s}n(u8+W)-jPNPbv-OmKQ>sA2$- za07K8>56LF&Ncs5V>r?1CWN8s>5TFR3;b=_%E@VJFI7#Qp!M}L zTG6eS<9B@Z=B_uIE?0o-@;BlYY|~F?@^vgCpMp?nYd7W;sRq!a z!U_9cH~&=m)UxfrHGC(pogIBK9er8T-#q;J-E`Hv4S2)jB*G>3l=g9c7<0ngXS*WXy}JClkPYs zN3T7U1X;K=UkDEKej^!ne(ikT87jEEc@etx98H_QESwvzUD@w8x@4W-XCA55yh0ud zukH_jj=%a8s`D6JKH6Y!ZiOc^5-G4?q_F;S`4~Ei8#G<`$bkKRd|zK=XqSO%O_;0*rIn>vsVN_H$7uj)W$wgOEHHnwH@omgQ z@6$}6kBsB}KSeD*7k6q{&CB{;yL*I;CS)38|@coha6rkGqK{MFZKO6pnl5vex z($=)Ax2KG0v}RWlHbPzHodSVsz|)h{$Zh~-OP)T)2d};Ht~2D;MBFM?vSD zrAUklOSYp<0%EL4{-=2UmmpOA;HSL=9n@YfMRtbj5@OZxa|FeyNZr&R-wO}dmQa?5 zC-)}Si^9mAA>HH2I>@}6N#+3ej&K~@?CAdfy;gFUGm$Ai@59{|@#SSZVNOf^?GEzi=7nWTPFcX2(dOn( z(pj3edhHnVOUd#dm`X(3ML%tIp)^WQ;zTI?86xoz4DS2sArfDRBgyX_hYRaSZNs0LH+|A{C z6ZGxFej%`~wzM~F6=D-yipe^8q@UvCbg|Mp_!x|x7}`LQWG#A(-|e67_b~edJN;!d zEu5*$Th)3$?bIWq=iBGNcdiExwS(_NJ_ZwXs;FRarxh;e0)+O#^m{l#*xFn*(?Dy; zkr~XZXZX4?Yf_7sHp{EYIWJzNU|Ww^X^WG<4d&!=gRQsLO{tn7gTxzF(oysX7>*Cu z_xr*ljy3D<{;H3&hT5mZcwd@tVqvnPesDd#r8|=kOAfYFWEL~l^V)XjviKfJZ`0(a zH*vw7e@DoUn@+!DSd5~B;m7R)MThLf!a=ucX5Y2^Ky|_RIDa4O0r)J-{zHqAiUf&$kYD zr#FZorAk>ge6sP8BPy*BNMq`{W)im5%;AyCERALohdtEd3g?h|l0t3<(VHAO(;1wU z69sN>Np}o^5E^OiV&88wCi3hi3}gwJNflh&-&#e}y2QnFkF%|Kal+-$n5M_dAk0?of&We~9*JzT*QHhvSD5QW7K zWn~Tu>K{1};|dBZ3pe53Rh8P77+cjE@6C)?b;L`u3QzdMokkF>p>Q|2vbT8hp6vt; zZf%Y(twL<7DyMa$syxRW$n%O)-O4~t4f(SbR$1Dww)#kE2Fp8lu8&*<@&Axc6Y6>& zHLlGFAnRYNF>&j4wRI_eeC8LW3&wos&Kfc0A?Wfwex{k(Q!1Pdo*`rtf<~_$PayW*qsM00_?)6vMbxRj z+)(*+mxu6@^fe{p%XZF^2hpR6L^8d>mi}YTS8mYpoJpIL%DphjRZB{cw?+{ouHAWdr-1pakmpr?b3@`B2w`Cp5^zQlJ%C_!uCYB&o%hW zz;IE0-}xeGYfzAZe4O2^lwl;Mzpk&NIaCg?^M&te7J6cB*VD|^1*s+eFxj*FmB@5& zb&rCwl`zZOEnDv^jW9Y$?pb>jDcnuyMby(>=Vd?2nK)|{-100EftJK-WTHuL;c?}W zJ^aL;U}^OC6!#vaNRd?BFuyp@1&~HrhEi?y{`7Vf^6ISU`x*dT*OUFkca zHiy-3AwSEMN$yaU>C;cKkQgFTeQc2Fr~Rxuxsi#(0bpMV8=T_7A*sH)YEnW9xCK{C z^;gH_#=|#9CH)Uy9!^9-H7A(dWcv$Kp=*-j3QfTfcHVt!uuQ8mc$|_D* zR96{_bkk>tkoAKjmcd*+H79g%y$gj&tGpz=w5ttLA9eDsu-+vyu-``AJ!7i zt%lJ*?8;}vIEId(Vn$ehXI(Sj4llp0rMZqpLQX4>o(&62qv!=YT;61ZifV2ph$D;x zFH#zktGQU8vaW^PNi)Z+67BGwWm`O=P)%r_0XTi>+$!~ zU6z%BpwA5~8U00B)zB9iGZF5e>XFk3n;uu++`Qu1rqmBhRwW?ZU_KH0#QiH185IJqcK513%f5D$K5zTNx4Uw%C>yG5 zEW!e%Xd}4Dsr(9&im1t@tG9SLX`JY@iuD&y1(Q(c*9F@e3v804;pejt!SZNaiOFnN z_&C_HO+-?pC~JbvXFTnxcgk2#B;i&KFTqec*A7tC1r?_Bv+V4H2m_fOZ(>hQWbs*l z4s$eNdU0J~rbHIwQ@|K9gH5oKpeRd-O^`{ruSq7%$LT9G+bqm|N0xUPlWT5f(Eh|k zxQw%-uAtjIjV+nCw`w|IZIxR{rbZzZi~Sl67+2p?WG{~#zYL}*?R>0cObu^IDm}}F zRg~+5f@(%_P31Yx-=t}!y>pI+aA>$wflw_0b=VlwjsorP`R|XMCHjF{d zI5+d2?4ZJ@;CoW07B1I_uEL8=C2FK)QFL2KQHbGb9P<;OOT`}!qfMcl8anY{#=aKf z{FrR0^7zyK=x|-R&lgHs5JMT+&G5_Jak=xbX@41+{15X%Wh_o8DK@s}=1IVk(}9Gt zx*Y0_Kv@MTj6@dyf!?sG6r-a;NEw{$0`^;9o0AVjv_?m&ZtK@HSF&8pl;r{X5tsvm z7NJHP&@~dRis!T|zm9D!VT{E}P88Ntu{h$0MfqMgDL?;0*nv)D$?~wf zGko;gQ%AIcKJ?TR2}Rf$`sUVHS{OeZ4R>}NdXD|`WU7l#2{0J_2=(};stati#4Z;G zJ)02D!QUw_6xpB>#Kz#MrJ3~J;hz8DZ&Kb$#BiXAkdA&V{7gvBy5ZaKa1wWMY8enC z!sS0imVTGjt`KE$SA&I>AQ?-*3QN`N0{8iyfhzKO9(PL@Z>-XV*^r})GeJScyjFfA zcbqH*e?{$5s|DTgG4`wqN;F(2Rua_?bVX<>MV~?(1l1012}~q>X$1>^XY3@;#ItC0 zJVhI>Ye-t^umFDORljTyoRQk+5=4((QsiT6x~(le zrk6NE2fQM_wDG}`5UUinb;P0?T*BP>DY)<*!HUJ1RzPx}*aT)*OF{Mu8RY?I-+<&A znG$v!=|D>(ut@**LD0m(g4m_0hy*$#;*Sh? z5lKy0OuzA`_ZR1vFG}y9w@X6;YFGX&$AW7OV_I)M;W-Kk#D4E?LUe}-EU19q%wO_& zO9q0-dW+xb0vVqoZLktH3hbjzzxLyMs#mcX>j^U^ zo>c5m%{>j_<+rU`tlg4Q6o!J$4;zEas$1s9!bnqtmq+w`*;N~l9m*W>**!fXcfZMr zl@t(VU0&>6d0*by_k7f4&5G=f-VNsNMF?z9?BXwfeR1^jKmz|P$}BXqM)UM1TP{^! zukh+oM0i0?Zz|nFxh1^dNK+Ah6gO3q-V4*wuODpv#M4%|r~=96bA62#5|mKRNpMf0 z`^4rjHS|A^?0j36J_~hP?jG91(2q}yi<$*=-<|(R;q)}UHh7QY2|R(Y`0>-KwF}OK zC%0}@pe45=h9zu5I56Nrr(7~K9#~Y!8q`!xlkG?Z3}tf#t73`C$J0E&7HyXePbO(q z0;hj`Dw!i+j69B)-CH$dJ_^Ij3nEDR7qN(ZU zX~ah5P44TQFSzwj8=YlMvwazdLJo6u5e>ddd@gh<|uo?B&=?JRrmLMspI=@bg zovA<3`LH!LfVzfW&@`x)C--RWmCvNn#2o6MTyD`TntTF}q>-&o@lZ!=5X$-1puF!6 zAv!xLoSiH34aHQi51V976hl9zGiL{sV(iN+0kHW{oFJJx~2I$~Bl%5Ou zQkhMZXC%T)Gp%lU9{I#LCt9&|M7hC0qKb>GBPue+G~`II2N&9|ex~gVnTAETN)(=O zTl-V9ufCiv@RnwpqUcea_;oZva-f2yS|`Hvy_Umb=9Egw7-I;cM56k~BE~r!jowYI zIX1|&Z_UJkE+%)cW&3>9RBYOF-t@Rj?G)GLJRM&;-Taogaq$)VT`@lX*uVF>Ry4c) z-pX}+aVPHe=kT)|-KOT_KVAdu1)q+8)0)AcC<07A_DeR=`88&2e&Lqp!}e5nyZr~= zmm{Lz(V4WQT`LD}I`iSQ5-EBamk(`JDcq}+)4?go^ub6b8-4RDTd0|9GfS&8!>gl9 zL!(ouZ79vgkqh~K_|qQ} zS}Y%fJzD|mfXpL!KVlV+G~%P^z#wH*#-%or@;)li?zN%U(iLfou~a^j`m0zg2P*=1 z>O=qi%LP;qp^a}ljQ2Cv^AVIb-LYe$pH)tKE*TnS%-y!2wqJd>bYFX<;bf=a~d1JE6FbW!UhCLn@1R!4?NMg9v6KC5i@3*^Mpe z$FtTZlB@lNd%z`4zyHulbM?JJ^d*xh^Cxyw<$NSXEUkbKl?WA^nc%ly>Gc?{9&h)Q zC`}dD@VZ6~Y#K*0dz;Tk3`h41N-ay~#^0A{+ETAk;89dG&%wbw*En*2%svX`=p(Ay z$1n;7$GzLm&qmGp@si5n6)bTDZ>_@%+TrW2+_^-bfT4Q?2O3PRW~=$^Eh`f&L=7DDQjW zF25B`h#FPfYn4#p)wIs##6l~dK;p;!ZKuFtV|H{(GXLH5=#-|JLdV!e7rO~7-baZm z(J%Zb+GkVssWf-*eHVjobn+a8yy{IajE|zi~sThZbfRcYe-$y^gML*tp+63R};`E>}!r4kLw9 zXSN;{DfsJHFv<+ZP>SvuR?GE}yAQSBKIuCL5&h`1BL!>;3zZW&BzF;TY^$tPX)0C+ zayllv9cD0*FOb){z>0egA-*t4Jh(n@n$`Z9;g6~@|+fHIULfN0iD zxWcC@8y_em)yroco8)1GE$6;|UBETrGX*$@gP7MfhAH(Dc%q#{owA}g^Cp5zo&v_P zJG0VaI>?5LHZY>}Qf0(z0jsoDm{JS!(WRzfGpRp(MPpoH%g%a?9qb>1dT-a7Md>w#s&D|HBBVExyBV$F zJmPn9o1~pzNuRhBNV{9#sb8`|B~sc?b+&C3#Y749&doI}pS#ouk4COI1s2c=cq$1< zL4d1&YSum>CY~1$U!o3`7tFKKDt|0E2QA6o+tEn6`=~WHFRf~C+XUkHDNj6p7BH9S zuNJvTATojpPxso_Q7~&hjMEY`_QZWHFG1wH9g85-UrMslX2x_g`--vy+~9sY6ws!3 zO{%SdrT<9BO~vLrmCm|d&PnFkZ~qzqyFe(B=4S*lN9SZWNg@ExHk=MB`-1R3?(ucr z$FFJFYe-38re)G3VG?wcaU0|fwbCJ#>7OnM_sFQ+KUly}4nZ=%d_^~T?ToyQ5hm#^ zX>R?Rm7%guqD9e^01~~j=2T)ZhYrViX)pgo_nI3UMUPuD?wxQxyT&N8L!ID0Ns6y3 z2Z=`C6`=}!`$rB+NU7crrEI(;nflFN&;FB1HLMk!Q+!&g7{mZSJn(%Ogb(R=%q zUh8kPoLTidN-Bo2R(ax#VZx82vpjxdj^e)7(!;WJCkm>N<#DuD#Qw$lhH?kl;UYs| zt~yQOP5BuI>CxNq$cshjPDu`^0qxqi^nFkUJw@bfB~hBk3B3p(4b|~rrw+RXr1@}e zUT#$M#s9Rwi8F(Nhz$T{AX-odJ*}uH7=PCGUe(GgnwvihidlZ@7OJCRFMPwOJIsVy z2Tyzy()v~|7p?hn*$Q?-pbwIaibR4FO1zu{g*3+CD7b)4lx-~21@02wSfbZIENXp< zhGkF77fK40>(`K%ca!qlCxjGM?1h6#z*VuQBHcZETq?y+5{$iI>;vLCDsv6x7@&3@Z52-h#LWAJplUg?7FBV|Z+vyKh&Ef@-M_^K5CqspVw3Rq=a&TnEVG?{_^sspB$}~LZ9Yi3&Q%x*~ zpeOOY_#SAWz%BgiMlldlOLg;ItG(l8P0^T^a89{JzvwFjhALT}x_ORMN(^zWxxI;k zu-&&NQai1M=HDZ^!k{y7x}~nq=Il-TBFLjL)sxHic?|g*9!}Sn@9ztP!3lSgYD$D^mUF@8ED6u1 z=|M^NUY71443i39Rm0n~o)uWn>4flB+tr${;c^8RoT^+njnQOy9Yl;E1i|tm;J+)( zp(KU~3to;*rrqAPAuKk2AGt`qm8lK0Ll$Kmv|ap14XY@>+2GL%_<)rc+Y4QBzgbLT zUu{wjs^a)*s(b-O;}&cNOr9ZU=r<8n7U% z(zd`%nj7S36e<6Jit5{@E0M?EtgBYnHgbZ^!=@pzd~B1?JubDF^7Pi0*P`Bs%^$@+ z`xkqhW2H3L6T|g0t&s)>qdP)uoC#7QQ$)XrS2qdAaTWY-i}cr_SSTvF?;om=iNqI+ z_u1Zx@9rTFKsEXda7d=T>Rv8p{bhJrLscSkCzToOhSARfV~DswqZ!-ICWeAOL~A!V zTs<;OgOpw$N{x{0^?vkxzn+~NOPjIC6xQ4fg=LmH>TRvR>ZfgiNk?WLO00AQ>TZf% zned2Rtmr{YRF+pVonl&4zjVXAs|UlY2ZglrmyH=e_I{W?Y=$y)MH(EG$%d|krm0wT z*c6N{*eGj*FlXk(ZrXr(@#xLzbYGKcSc40zs4}itFU6mouecGyZOO81rdKNx0m&|S zJv)pUMe{*LgR~AaTcr5td=}8Qv@)<2N?8WO*ABqbAVPX7e6}a2WJDx_VeT;Amq6%D zr`;yLp$AM*P*Lav#FGc~4(>BlKpfBN(D$UB;Fn zhu3CP{!Ax@o}#W&z-TjryI3h%RKIGDgOoEyN&3dUVuv7PU zhI*wLav+g#5IYljG^5@oM{MuCm2PCl;hzaC3#|VoC^vdh4SAmx+<+I`I+|r6*uwFn zbm$D^Ea)gsBP~GIy~)PX1=<@ixc_{?Ab)|U<{EJR@5D-+|6hug*!ejA2YEjyKR@sP zS)s(m$^O4f`hV)fztb4G?%`P|^Zqu}ls<^3ho!FYt3)XI(;(J|T6Q8^EYrOh6G!&U zcY$FgR8Vr5b;xsq^5PPYTlo}9&D{0m^|up$tfnLvyXjsCv*r(TEwG%O zI`sGUdU?HKdNWi?cczZRAt!t3w*xc!CN>C%5ia3PJ$cc?vCLOeP-kO6#i~-wJYD6t zFAm4ssUYDJC}IZpI+IbSlv~uj_57BKtuqM}l-Oq!W0rAFsYKJm3M<3oH}+L@w%&t1 zs%K;i*|Y1U(Lq78wKFVY%|Udo*hqe{DYf@0EE~<#db%itQFF`rHllNv@Sw2}$Ws%I z-S|C`q{awiE0qD|aC5brVfO5Nf(I4`&$ntnXXAo`3ZguyFKDe*YA`($Tya`ZGK>g+ zBOsB=>U`8!l5JIr>)LNp{t98^pmkITkeM||+0p^NhJ`H4%aY1>L-xK_jh-^eA_ z78bXat)OUbO77j~>ZT{RymE%FxR$1|pfhKW_KmZXTDITdkRlCK!^}WW=!as)G?NS#5-x%vKLr5p*o&?Xy%sV28KAR*m_L=-#@bWxp{7#Rr> za9I`=d;7>KHfS~n6;tbYByPmLg^tot+j@VNa_Gx-y~34XUCZ~9RY!rq8NB0mLHsyI zgCM^YCBI48kuHvFF4p<;&u@*^a`+;2ehdCIuCylEbt`hM_X*>yMWL*J3^7Y2B)-(M zmrF}Qf_d|N^(DODa6y_PB}!AOSf_YAg5{5xx*m3|(2>N(SVEVG|J<`Izq5`?l<;}I zazhfona{@AFHfN@VX_ZGgBi*935c-lNN<+;Ler44dEuR*L9KQ%M>2jy(T!(rpMDEKjc6()5NY9NFky5P2Sia zFsMbw94K+nf;$VN%A>S&SA{zYAI+}Es3pYgpL%=*F)%Q?kG#Elyw{0eqUJ2M0?L~! zc7*I4W@|wzE%>uRvHSmWm;< zc@A05>XvH1;sCh)pTx7Dcz-t0bs}Lopj*U9Db6ome36^RZIh@vY`05L;a@2D5mqWQ z$%mWCTQD#%`XKTTuwp_o4E`%f;Hh?ZL4DyOpT%9|84J1a_PX@|y*>YDBfn4U|aRo5j-lR!M9{lTAjYWjcLI6L{oS7d40= zzfi23XX-@tpo6dWU-N{+6M74Zluc)q-Yi(<2&Hdi`*F$rL+|mzz`*DU6q~bR z!axG$A3>@iUy`blKJxrnKSK#cgReQieu#IZu%U>dT~#gOn2M&;iRH$;k`F!8pL0xn z)-iFIO&npyV@%P6Ma*ON3C}quz37y*@?PGb@ul_|l_ia>4Q)(obo?g%$+$nqyG+nq z)8`QHy1yG;uHm6wc$!>U)v<&~ePW7CyE=Fn7#IdZ?J09=qM~UXdNSjeEIhWOoD|aR%Jm~CR7=p?h z-5W>@42*7|DTQ>9(sz%*gUMCG15qWDT~kP=;!qNxq1cZ(0oihRkJ!Y2b1VCD zPIZk)iw51)*2GCMf7R(#J?Dsq|*Whe_WcsnDP!je&u|h&*FmzHk&1 z^39ZQs%RE`dHpL^Oh^fYQ(fP@SA0*i^1DTKvu+b?AdmGr0csHxNlJXuAz^=XNm;Y{i2zM) z&AY>Q!=tfUMdT14d3{_V6sQ!zwp_szX7BmoaHJl60DbCY9)5A*Dk3!C?&!2s3 z4$BVt`sUY7%J!7@Hk7tPJ0Hq|p(TEU>Lc;CWekj-MX8+*qY1o>aUUXa=iIO`20qeEPZ_|dxdY_ zqPsc&?YIKzE%&tH)^Q|fD(>xa?dCDVEn|;zYpZ#tKFLAOk3K@7JV?w;?Vd}FOhveGY) z;81%&^r9V7&y9K1E@A$ioWn7E;I!%%Rx!JnkykJBxnK8VNa0ksv>{fpU2*2&@Sd?x zxR|LPN5Z%G9(ls4PCn!iCt^>k+*#vK8J7p4jP+zVL<|g!2ZIU^6flso`8|(x{ZizF%=w8P3npR#{SCm$MF8oB4WtF)%n5mjk%J;K1i=qZTn zQPfx_u@L?h{|S$GQXwZJldaFoSR+Jd+$MxW@wmI?1 zu}zO0*=TfV{XpYY#NOpv5?qJ>9^Ghk^oLAofzc~y&LR(~WU!l%A*9YI-|=hsZXHa> zCD#c(3siz#pNTIWVj07h2|2vSZR7Vw6&E#Xk>46>%QE6`x|^>wKk)X!b;SPF#J&~e zPx$>1r1g*n&?hpF;x6OW#DTSh>AuNsoaJdT-gQ;QT0809{rdl2&ypLU*|mR~ds<$d zN}PwF(xAue9@D+{zlJOg$~?Vu zw43?r{B$kneu|~-7c;BIxumdN?d0&Lx~Ar-?%ngu^BQV3Oob1rz-1qKeSELj&p;!J zfq|hv>Y_=LC4=20_z_eWsmNX zE_2VVF|uS4c#v8lTy!@#w@yWrl1ioNvDd7Q&Hy10gf~(V?im_XN$beEK!Y|v_+Co1 zhg9Rly-QhDFJDSxB_eWo?|Y^Tl>C3%5!xEMl`thn*^b&1xkr6F9tH-+gGX&Bx$B?7 z#X8~@)LN;?9>NbXvNU4yr7LSU&s|o94|H(~JcX7#U5PjyI!IBR@@XAn*h$s{bkMNErS0(qrpkiQP z=!teIN?xdAwNNR3HN3y?droIkkh#QTc8|qWbQ+x_${PP=8?T!Q&10T+NVr#`62YdW zx$f4b-G?_AQTE>lPlGCyNJ*rFuGwvEtW^oR)zl{46Isk^H=h}AnQva31n;E7!03CZ zk3~U7OiUQ_4!KFT17;~49SX8JVV}`?EM`@Uc#><1Zg&)O-dk>|2?7-d!rWAU^ZnEI zuIQ#xOlV78EDc(+Zv}Dgx3M|NzG@wLI-zVZSJze=U`vx|`;1D2fq~K2kgPL|T;h4h(FOIL$8&(N#D)oH-_EIT z?PL{^u>P{i;(aUi5C|bB@Y~+yq<#7555p~wd~nU~hntQ+C5B(FC{C#?%}`E)lCudPRJ?fTIJrej(O+KXj5*Pa9CRZ`-ox#As z=rt4^WfThuRM8obA-68~al6Nv?IyMvwu<~=rH#W#TF{{#&%B;ht7KECt-5b_@^g^c zSW0ULDIb_a>j$6zee4Z~or&Qtz)s>e?Hg4z0U~HaEk8B->a9yZpWie7@P;9zR?gOA zhm#^@Dds)km zx}#^puWrtgb_CgLXq8O!NY@eHz&z$n*VHm4?U-MXaDLAOirjQ_5$OuJf;hSLiEDOS z^V5UdMBNp-+FFH$Sz))Gem%A0X(bg~M*{iq+;6X!-A__3ijz`7K0Al^(xoJe)QVQs zhz%GR7<~&>KIB*~$)bSsmxaVeESFPn-Q3Il}t~|i==%3r3p(Iru4Ff(r zyX&>evaB9$5(Wl_;n6BUVNcTP$Uu_0`xJT0n#-TL_$-51_@w<)_ZvGS8_c<#t;24@ z;h7|Ny6OoVtGS2X*C`W%kS4QPlozKyuzsp8&%1206jWxNTmSa1AkOZ7tww<3ul5hr zH;Dpy1!Yx@y0cI16EjBAYE z1xy%Gn?%$qX%UGt@&(rdGo5cGZ9MG#)fUIs=bYbs^m=bM5Tmz|JfBuahU*D46&Xd6 z*0(*T(QY~65>Gii&2N;umk7nucbM%a7BR0nCo8)YdRlMXyIdC&t|ZR?KCw72`a$=S z5h_=;jlyDVV9loFe`q|bi{)A2N#zWp;ZgHHs`68tES6PjnXEJ8)g*O(MPFiRNKbP%s z*InELM09e=Nt+Pa%sJx_cHSw%+?8kN)iHTG5{#gyUwV3;psumy0gRxqrLDH1rLwj; zHK)QaD$nJ1vct6mwI*3zjf3e2ZT`nG0&+GqiMZ~()AnH;*J$~iyq0h+Fe5s-7@D1X zzZw$!l8{jvo>=4?k?Zc8ruKmF;82w84YKrzm0k3Y&a0|xhV~fj*+hI4_AITA>`$Q5 z&MhQCCBXx@0~o}@U&A|(PIkzwWZrBtz#`^)L9HTxY_QFNH3JW>)1iL4a+WvNsqBF3 z6*M(eUN%{#2ote?HL-sU;dFLBzd$7_bxa!ng|GersRQ1-aq~>z=h(Ry#wewU3(ekJ zW%|6q;v>>bYV$%skiOS-?awZfIwy$~2O>>1^w$u|XUrggOD62onWXV+%SayE;l zZ@Q;3?Lp@7R{M7@sR{U*$2N^(UW)@J^s?C?kr?2xCxbvDZu7bFhb-nH$M~)ESZ~cd zKrf4bbNy_i{rK-pVTdO#FjIa3WogP{&ZLDL_%D294brg4q~bX{oj?D<9_H0Jk^#)9 zTF8nzlB`~Hs1)8KnAqQJzx3N#A47g*`wZgJ`HOa6fev|diMfmqHHV;YlHuh$$#Z^k z{&LI3sZ`5h3c>5IwecOZ$n2fv+@i7`JTTGN)SqOb#pI`ioJbnYfa@@$U|vCk-(O|9 zc=r`hd`c@DR_*hc_lpbgC-opE&{T~%DW92BR0m}|Rob}k$h&0I719*yLk5|lIuIv- z8{x`YW6zNIqHaB2+6pEeIdzF5V|{D=^NyowO($fWu4RhMmvgF_6l8A9)Ak7k9WhQN zk~aH4|I2JN0Vede-6)mzx#;%+UPl7GkBeHE*4|464KPer9x?NOxvUsUwFI&Xd>`S> zHAt)4+uO@38={hmeZq4#9Q1-2rTOka0{uNSz9^@tx<%AiJ~2H6;Q6@p((A#QtM^`o zPfx!fLm8^;nq$-WL9qqLEQ6-6vDW%MRV4WKfi~SkEh(v}|8R{p10loQp1#_8{Xs7a zH(pRoK}LS1@~XaAB2CUNhX?t`G5m`kFHX>ylWGZAZs{Jk-~REj_m02nmj<7PvyS0E z9=oyH`06_=EP)=?S^^&nn9@hML88_!O=fW;>1$0#h9EJPJ1O#B&GQ^+K9IrD+ULGJ zUO}6*{Xf?-naGgCI~Ct4a7Ou=Gc%#_O2UJ?N;8CDze96N8_bipmvOc7A&77@H(xB^ z*BZ7`m>ZjpUQ?TUFmp^V_vX55Z=tnKvg^zp&96hBB|~MT=2pzyVk9B$Lnk+sFnb- zB1nlp{dK#!3p!3+7eiDH9llL-@>H56U!ny&zi8{mFSE4G)95`tds3LVdpD zFbeOlw$dsUKrP>FcWP|bLFwsvf^W86(qvTN!`=V*z*kSdCoKAh(T@CI)UlQO1f=e+({U@-5`>&LwqPKyEnh*tdd~2@k9xk07Zid8kfAY709Ojj{n$sCR#;;Z6|NCDIv3<@}qS&nwtCTb1v9>C+OFjq;HvY zxhHv zjdD}{^?RuP0M3;1!UeZ?R$VMU)Li3mI-b!HNt4RvxkA zG#GW#B9K&VirL$eS}RfH>oiU^1PUIC>SGjn_eUR~wIf>)Z+X0}2+MFKr+NV6YT=O> z`7l8bU$tD%;9?C5vaj1-wvW@Va5o}{VfkeWwGwXY6|cJ>*6{RCA4AnhI@JBoO>ZUQ z;ld${zBupj`SLvu!ls%tKfgd{LbG9gqPtmYQj%XB~UW6|KMEyi=swnr%NNLrwKi@g@CcyHkT9ws|_= zPG(r&?hYBYx3_QBaQf;389Lrb)Fi{Hlv&v~l0~aP>PwkNLxym15UL4O6ra{WHGIdY!UmiQ?fuP_y0)_hi6I@eix8Rxcmix*Z244i{^Ye{qbY$aI#ATBO?7N~rLP3Tw z?lzvW+fLkMP<&uajZOW#xd%TcrR1$;q;nlqqK(73EWHQ`^uI z8eb^WFSO*+A5LnnmNQPpyoZ5fx&Y&VGt_62#mR%2#CrJ=}BC=x?6 zfSGTFWZ8MgS-9~oUQ2+dfGct7d;@wgf{K@zS>^{7g=X7$#&O+aoNgugM&?3AAn0~y zla5|wC~6f)CKbbLb?HW;rF+cfJIU~SKyUHb07Wy0$Rxsa6KqfGt^$^D$oMcFMqsP zQc>T98oN)1^-UrmrJbj4f3y7(e1$bU%SoHy`1DfUC2D{r8A7L>vJ3royA!Yq z`Mk;xJI`ds2HRD8uU_>_YwDT62z1aS!=$Y8sWd(bl#fkUUMLv8ueLhEY@9IP^!tO} z5-GX%*f+`0`F66VqZ+jQ)9>v{*?b6ccF>=aOrW|>&+V1>R?(W0&4|6xat|Cyd;7Gj z>9p1pGoC}1eE(NPN&1N`|I)f(NI67P1>|-3FByYwzR6cx9PPa0^(Bhn*n-vj zuF4`YLO+b7;(U&$;x)mavOu*{sZE7Y5xj$ME;0Z4^zDL@TD@w~NrqLm%||VR-dkxo zmZBZ4!$CG_fhn-f!e6h%XLN;=y9P}%luFxwIIP7-Wh!O(05WeD>K(-ezRR*Mf}giT z<#9^;CK+mVt%2FN{D161m!~eFRg-}Xn>tn6`9AX*{AxJK7P4%aH7&H(6K?EKtGH0U zoT8H=oc7X0W-wkwc-wAf-wFK}3}gtOV3_S%{iYP(dYD4`YNK5yL%*oJueUiuJ0~f{ zc>sZJ{Q)ogYYCTbCdtyp8;R@odxActcqK`)ntNgP4rkCY*;G_r*Sycf?+tnMPIF*X zXz;Ip--W5}aWBn3I?p>G18P~j-&4lAvRY&-S|6{oxgMxTs1{~2j7Yo>%nvWPLPVd! z><+rX^zCI9JrOHLD>TUv;2V)kw|5w>tIaW;Xm3aB4tTjJ}lA)FwCa zhu=9%w_vz;IguRcqDNQuTQHCzprJ{$;gC0jrz`NGiA$7THFkjv#bW7kt6-TBsNe+B z@A1!DsW}yzaZ%t(Y#M*nUJvEX9TZV;E!=p_aa4-S>lg2Km90>bM7qFi>+u^o_p3E? zLOGZ3q`bSrQaM%$DXcE$__0|nr@%mlL9qqXR&ZsH46HkzQi`Fjx0agAbY!hAZP0)Z z)>vm1RO(`$Pb-gD#q~Z&hV@ONPrkQP zTWN>R`QpcmRcu1xwN)`W8HPTIgoUzOYDUxd)YKT??e|6+3lGZ`Xk+vb8@m+8LsvH;jm@o_k6u@%8rex1XB@)mOdi0xn~z;rP$)e0#>3vNj7tIT_tMm2ph4Sa zZFQ`w73zF6L_>z_4tRwp-UlXx_Zx5P^1YEqHICid<4=8B?Sz?})rN_xZ`#JvOD8cx{HP$5+oy%^0 zkPMw}C8>#p`t2-e6QIyhv`&W6Q&5}y@ynXZUvzv)`>te)3@bXw&^5Q3feb(LOjn!- z%Gp0fD;XYGL!AHpHL>`Cu0{72bdn*WJOih%vZ4!nIEj>1EP`VTSk|Z)83NrIoBEBJ zb3tv29^?eDvEeo}wSM=ri?Rd-?;}v0JI(yOcs)UR0UTa8e-<*{CZJr^w*aWy(j!La zjYu0A!uRE)bv7TawVt%d44OJ~vxAp^Mw_;^h?Z9IpEe=nLZXJ^3}W!TE^&fhpd-V| zn&wY8+G%ybhWrQ316Y>N7c|URZ##+lgzYy|382^4$gsSs@pCfNgPB@m4zYe%iVPps zPKE&livN!yrfX(x)?lk4bWVoKWOzJ=PfLaz-u4i=sM+2wWgx=~d&WqmJ^o?s3t&Tr zfB;@TFdp5h6Ck>L{)0Ws@WOhLp{HNES|ram7Mg*i%KoSna`&IAx5FeVluAav`o?+C z@4nu4Nx}I*O7AS^rse7mPjNjkQ%x(R{E(g5?77e+Ls`|(KX85FuUAUSb(rjp&HTpC z*LaKPn{GOCt*4LkrXxeZUv{Bd9k3@;@%>5#tTwsZdc{HcmdQG}^CZx#l`HL^qw8#T5{18|`ONM5=zY^qb z@Qw9?e|Ej1)vpE^()Q%c-Z&P%7r>GX0U+(eD^I`w)O6)ukGe+PL(iTJ@0ZnqjHI>* z15-{ftsDqp9ck%MVN|Gk>+u_E`wCNYDyY3wD%se?a;&No!V@X?4EzrIAdiJBrdBeP zasKR`&gCp3W7IXa{8uCV6m;(gYplEM*T)hJWSCu8MY$hqnJQ!1^=h-Q4ZeCXa4_Pl z_FYvwfAfKnA#3Zi zp7P0_3_&we+bB)BXIv8Ld1i{MPpVp&EO<$wC^h4<^Q|PcY?G+f@9H`otAEYfPUQgA zo{d$PMlv*?y4XA{f$edVCN5E$?rrcaU5NRt7Z}J8QS_pf=P9w-MW?5ee{|mev3C{V zQCw?#acH5vm0P*>a}C@J|Gdw6`jpMgnKNhRyz_nMvnh+X#OLpp%8d*R8BSiLzv0BK z_D<}ThOcT@m$0F^1LVMJzTi$+?s?1bA9rA}TCztEGzbHLA7NQ(JOUk&;VifJWXZd} zqb0*DQZg*fy?=83NK!I9w2~8c`>Yo8`7nYx86td>YWGFoi4^gtgeY~zHj2IzhGdA9 z>A??EeAP8JUL#D4X#p`wNv4H$y6b{Mu?)|k?8&P7=0bg61~2xX*8-G?6jqjrtNI{r zQZk&p&|v3z4GMXr=`@<4LcTf4Y6S*=E*C)7ih6PQ|Mv6C1XKtshu% z!EPrz@06yN4lM?tD>9tz_I{^^WLTIPc5KZM(#%~zhWGuiX>&UdAv7XG0KD_R9K1o}0Zzd>7q0_MKKCTvtZo0cg3wPg8lHBkBG4nFH9XX=Hk^H_WRziA} zDU*_^XDz~%MhjE4_mZ#L6G_PskKWQ?MYpzfeX`C{xq9y+gM-)lHz_ea8487BU=Pw) z1%BLk%1cDOrU5dKNT{t%_)VUWO<*7NfdM%ArZMUNjJYxy!u+f|>Y?^TRWbwy{`^;Kjkf!` zxj5J}cpSuq zaCdjC1jf9bj@!<7@3`P|<WAsWdH**Y_l!7<5F2)10TbbxSsOzGX&+CArZj){Qtp zp(clWpVz_NJq*x-3;}T&74PerO`Td zG{sei`>MO0uulIn4V6C(D-9NydGPwZy_fxnZ#~2QNy%{KLG@gutE@H04TC4B?61z> z<_B>J@=JEFG;}r+M=td*U}8Y2F3UKx`AI4RijV!Ce!1Vl z2kpoZa3?$$-!P%bfTxu%9lBwq2S8|e7(?bAE#P8CNpsQe6d12qvSGmud7;iwW+ zzi9gslL!=U8jq3;jp9}YNNiX=VzJ>7*6F%WWC%jqA^kv_G6C?X(~5d1Vn&94nT1YL zNs9-IUEfh-Q!;_P(z;nHSvT=j?5K5uueSE?+J@GOn&y(q#=V#Q$?7@{MluAp0g1i5 zx~ZVNp`ff@sio)FL?xH{M&`Nrrkmc3KWiTD9hys3=z$3t0uIAVLg7mZBUDO!bU#gE zgN9Q)g0iUkd=$x$k0PF?j!k|Jbx3j#b_hFW-JC@mn=A<^@GWbi3CEjwBfVQJ3&)#I z9ga6%B-Cba>Y+nl$Pm!cDO`KhLzTFQM#R1;1*S0}!)<50RjrW!#foujNrtfemHeV{ zEsXo+X4@KOCI51Y_^}xkCa&?jF5cb!_uWmWyq4~B{&KU;M{6x+uQVlD>4TCC8=BiU zpZ1!&(fWhcW;4hinIVz=42Cgjk-_-+*Fmmpr0^ACNQNmn)zc}G?SKRrtmqzq^@)4b ze7)6{#)tnABtuaLihGw~)|wyh{z#p*W>k8e#GOM;q6UYwE-4vWp8J9-QN!ttW6KK| z#g;zo=pz{diYgku++<6W$pMy?ywfZbGF*S$Q@3QuZ)_tYLqlLQnkWxolDLeD^Og~y zxPf3f8Ox4nKxB3$+$vz{jh}a&usc5#WN7J;_~wt-XwvqoKEBy2O>#@>NH5Be3_*j~ zc#1s9Ay2yeq=^d84{7*M5(GBiTOPo6m3mG5{&FOWnrr$*aTC3ii%igV}xM?{`Z$PnR~SBdlj zq-$#OVuNqD*%J<9Ovv!KVGwDOOs&a~S1(W{L(tKd?spN1lsClkO6zdlpWwh=T7Uu1 z{>2nl2QXNEX+5akGPmIiRuK<{0p*lw=o`3XICUu($V92hv}2$JU=`@_wePR~wBLow zmzX&jc613-yn02P{ANLj66L{pj!a(Ii9q8YpFkvIF%~4QOhh z?2i0hcI0~=)HP7Jai&?4yq8rasb@Biqe}a4bZkb?{{tI}uE-Ez;ub#v&oM&Ehw!E? z-RIma=qxO+S4)Q0UP-EU8O(s9c`P0QVBmLGD(4NrtjQ|**l&mCe7x2|g`l|at}r=o z8D2o)Jo(^VYnYK?!2JS{;XmJK{q+{xueU0+Z?@Vk+2g$7xaXd~eNPw#U$Kocb5F4H zN`|SUx+rrpM0iU431qf5VCFgNtw28ai_XW=Gya5m-Kfn;{%De6(P`T1crGM)3=LB}-l`7G2%{26;iKwL?yB7*ko4Kr-M*3pyl2z~45J zG-rP$bsK6-Og7tZQuhbb}RX7C4vz)0+vu;>A0Zn3=x*(Fp^X_oQ_9vO5Tcv`i^(i zhd@4>WY|%J!iH128ph2)B8joDv7>3S^AsxYn$c#XqpKw5r@N(1L#e9cnI?=dNeGwL zgi4OEJwic-peY+4e^=PuKcP2+2D&9fgl8xIafc(7vkjpZ$+(D$3~L)&Kl@c#iqL&H zo?>ZlQ@42K)DZacjL%S?mXIYwCS;gbT2ESIUGClB!nd-KLA=|eNrs)3DB>wfSHtkp zsI&J~{OtB;l-q_}j!}lBKweX)@MVWo%4(s8aaU3#L3u5WymJ)QLNSNKHA9QCLI!Rs z9t3nwhJfOV#xFP9OrbC?%L`^Si5iw4aD7WL7lb5H1M}3ua=2(6sib!UCxh0;mx_E{ zLeckFnrr1mvcJ*h_LPAoLxz=DcV6%zP2C`SCC*!hGwJ8iB*PvtO8tRi+Yo*nh8lYd zGwqGsM@fc89KFC^o%%Dc9GY#zk8Wj4FD|mX`~#J62%561;fjHqiU)!IAVWY@O4&Qh zDa!dtoyMN9WNtL_Buy4V|bnq9=l@^>i;EieFkCPf}uGGt7K z5lN*}DZY|KDjSA%{T@v+1Z3$^8kFJpq9d{cy-U170;IB`yyp12%!YD3t%k#;*fumt z7;B!CQ7_4IlMrHYWEF=rmly7R{di3Uv*K0{C;EvD5ne0|&-O;ihxBAvRM7zJq@1u6 z^RA)u#U({eeJd6oE62>!@TA1@MXYWHW~%DZ7#ZGS$&eBR8G?-c%@$kLAaqi|hY6;I z$^m=BiCatx#{hgI@<^+ZPFQfAK5Z-&c3-@!McRMequhkjpbWoffxIVqpjq|VPgy-h z9-(Z?8EG;qq#}ekGL|P8ZJtP8N*>pgFG!1_w6*Xr?0A++QwHJC-E_@>&c?vPH!5F7 zhBQeCwS$psJXK_hS~7%Hyz9bUlC=Lj9J;zRD_ei_o^n>b$%_q^{ox7=Q~nroGGrzh zp0yxL)S%+GqY6Xk*oT)4|M+H{&E zMh1RacU()Got6+JQAXs!?@=$wY$$*kZZjwyY`C0riIO~o-Qu1}&KVr4P!yy1cib}D zrRIBYo9%}wystqxJh^^ENp9r8&BnmO*)N?i@Bta#3Dcm^5);5%wC{=^l>t$04U}X_ zOskSaXP}V;EAHu8bHqcba@mx{$~8b?agA4X=9z!p+=G#O)nS7`rQ4i>7duva;$@qt ziOMHF9ApS091%4M59ob8v-)O6b)o@HEgj!(x0|Yxx%bocmetJS!~r0&lZMg&8ER1@ zRnXQ6n!c(}I99KDjYUO`ngWHoL?;hLze>S}927Phwe)_S|A;<78HZxbneG0b?8xKs zl^kv?l}(vr93NOAxyP!Klv5iY`5MK}Ckpt!n^X)d^DY8{6Jf*^`mIZ=srRQ}+p}-_p5WSLn+Q^e(^&)ey!nsv5G&_UEI zS6K^O+uO-h{qyPsf7?V7nO>Am#JFg;Q>QwO{uHpil9_u6_sh*THFYF;aj5`=w^wEV z9|o{sw-fVDG(}n-Z<^FOZ~|rpj$nRnS+#PK!-)$F0%J6g=(e9FiC&+MZ-8t#aZA&C zfiLFU6t$}eO}VREvz?hfq3AEVZNt=gpzaU{Hg~nWX#XPBwjl_OXA>lz(p{pScW-7< z+LTQbMw%z4)=4%x$_wI7t{-)LEjbw;U&A@Qaa>t}ma$-i7T%!>)z5*itZ%6=XsZPh zv#a3Ct3)+S$PkcURzG*6wUVAYbt(6TUpoDXbxmz+j=0NH1Tf*Z+wDn<-HXIMn@`_X zm0)4P&RlM6?w-)l+)k{B&TdglTUUHWB?x1m|7s1Vz zZ^X#&t%*e9Rfle>ekOo{V;R(3mZ7!1>ob+$4lLclDzp4D@`N*e$G$6mGH+6%G(1(T zA}QpP91(rHGl_4Rs@*S0GfYNsZo|g&pDys!>aa)|>P(fJjZ6sxRv*^j1poDzVmN&5k|IcyLpZzs|T>YLgx*+xxM%p48_02w|et(>8P zFTWuSpOQoR_ZVKoBYE-?c|Qa!dFyr5-_9JI?z|S2PbPtmq}& zHAg*ehvgKMH<0Su)qDZ;c7l9|`8@iqUC?IonKGONuCoH%Q>l&{HYcL7VQ!3Z6NO?FC zm}&yPgl8->&MK-^e*p#nMdKJZNVe~-5g8&pt2Suyuo5TYMQjNg0Y0CwKwsW8IT_DD zg(sE8>f28H+3?qsw+Oyc3;1MU<>2S*PazYudRP4tE?g88e^?Zu{x>?uD`XIOI(-gas>IqFF^P-eknu*I&}Nx7F#M- zIb#+EQ%&>j8+zH}tZL0?{G zAj*Q{D+qf-U@9(XvQw%7cn*}V*Ptm!zlgdduIaF*fbJ;0uT41Pti~0$NR*M(x;8q8 zL(_y|#_^s-k~gHQtIhnck8mGsNHqb~cCbxhjWn*NB+y1cK z{ts81gVF~I!j20*@@?xGZ}|NKJ#$?6!Hxtn%+?VZB7AoXmw~076!r(zo1~C}aF^&2MEf3^pBKe-QbA4IEmc|n9 z55GB_BTMH6clYPDd()R;JTDm)zL3A(YG-phnaG=sXQ`6R?d+ANi+*?7bXxH#ocCFM z#C`5YYvM3C{l}dSN|fRmlm%mxJtI)Y7wmF`IZ=9=FxB60w}&T46tjkrMyCNCr%HBr6Bk_nX+ND=9HhQwf4IK!!?jZ;Aymig zzIYeDFH&i|_w9vwgS&&dQkuH;$35rmbc6|!Ob)i4f-&ctKVBoO)f-RVA~KW9I)wJw zuU2qJTh1uo(bluxppSgH$!5AFm4svfMD9oE^CU&J)4rmk6h%Hu>2L_bA+Ogo=3nYh zDH-Cz;nCP*#F6k0tqLrn6Aq2zCpl*{bV!7~ilT&*8%9z2VE6K&)#jd_LBxmQcP;>j zA6~_=I5W36nxJS?F&ue46Plnw+yPyrUb=5Sxu z`C$X>zb=01po!C0&dn^Wy<~%p>aaoJal_!C*un;>4_>!W1Y$NZx6t4gNCP)SA~CN{ zAbSL=`<(DZU>NW~rTsKCQ97a{iS}k~Wt$tDYvFQ~=Kjpk;Qm+GG``Y?e z;uz3v;gpi9M*5!l4Q*LPd>Uo5zNy_mDj(($glgHm!Gs9fC<9*L1%nA8j?5~ojZQ7Q zcfSAzL*(n`H@5jk<^^LNR>?Z7=C@G!QNY3h;XkibGKVnQxb%vUxFQ%8G}1KbxdN}K;t7H;cm9Bu3E<))Vjq$Y(%qQ@$jO`ids`1g2JCbt-W=H zE+$>1^uET0!&C96We0BxrQJC+Nf>Stf3IBPgDnyXZ|EHBB|59HbYA4WWprFklO`yOnVH#Q zh7vO~lVve8vt%(dGs|K|%N8>;Tg*%r!DMnOG;yY>c$8JhJu!WTp3-a{nuKb_(e+Uk}q>>k94N$CAVDQCXX(mjR~0Hr@xoi ztv${gdXINSkb4=<-AUNXiF9==;!qBJO(yYFsoex;1%4(toptRN*`LI4Nc*8;(rLm= z-{wV`BxSI~8IKv0pGKpt;dVsJ19lw|*WOiJFCU96xwnutQc|BVhMEU)EoG|Db0xK9 zR67WC#<>ax9XMA(gjc@FCFX@6nEZNuSjm@=vcepyxS<7T+;uDrG2+$M)#-N&bC&*! zw&>e!`wGJvQFyu(^%ONYP6Uj32DPF_Er&=EF`XmLW+01@y<2JPWlia+#v{2p&$ya` zoD2y{QUb!Tx17r4@}f^bot&Fn){v$;U!JY(`*+a0=dNS6v0Qoew33!;L=3wF#5x7% zLJS9Hmy;6t#rb}z_cV1|9l0T5Ju}1;;H$3l286&AGmk=A@Gesar<0g9^NxQ*3dPq6 zRN8J5pcH@9wX<1Rmy`~^TNr31HhK-T>sA|z)GTA#YO|T#H3J{^EVaS%b^3fS>TQx3 zLR||SsVjX&_q6H+mZ4~uw|b-5li5M-sA7i(980#j;yg}|p_nk`AF3R!%zMlYeXIS^ zzj}w^`QBF}CFakFMjB0tD`eXBIu2Zmey~+tY|$9jh3O^ZZF}H0>K>-U(93YJy1jiT zCevJq&6Bw;R3LP{2yw9E`rf{`h@>CG0USK@;AU@h{t$T;`HVP{{>0@3FS6H*Q3YC=To!my*YsQP;S(OZOoV?tL`~Wd2X`owhdRkSo(rU2{{WH{u`PhWkOnxCApLf<7Tu{4+3O)T+| zSTFyaWrfj{9PRugi@3S~Z2*3Na7g|W$Z}nAK)v58uSEJ4hDHi!ux-j-O=Kl%RQDR< z{N>-*IPWoidI+tGLdDuYTyWv^W*EqL{*D zibO{0G*Z{~1wcgl3mTED!$w5FGjCm@k)O{CGEP0?XBh4ktigIZ)#@BvT3CjUJY2$z zk{`T${r-AheFu`-`*|T&(aKPLkBYdFtW$rRl&TichCpFqRoB_WjJgBugqUP`C~*sT z<9s``wu_H$s}^a!v?aVGoX-J?+lAwx#!9TPS|J(%N2k-|-9AJqNV=f*v1a1O4=6t~ z32kw1l6A@y$B7HjNy%;T;cw{RY+DX3B)N=e^*ob0&LOb0<2 zmacOc%DDU0?apxKOU*SS<$ZndTa_z z@ZeUG3T{ZsLLv02nomHEo>-wDZ-S?AD*TL}*o6$m9$ekM)qqt5&cIs?KGLKYglzjT zh$8${0V9_wT=tQA5;Lm@4y}QeeTM1pE%nrDl49?@TGcpG-ocW_$SBb<;{$X*Gc3os zEra$}Hm9O)HG^ra?fo>AJ;-20!nMmeBRVtG$^4$CTMIiwUbI(wo-7*lna!t=Lxd$1 zGm?b>@P438MMH=OP4hp`FS)ZRAP#zEhBb`8Cp9_CLtcfix6-k5zKqfwDLXcKU)#mk zvQn=NY)-8zOXFj!_u*S_MrhnCgdwn;ohwUfYR}C)o@Mi%#+ak34E>&KBM*kxcq;pH z8fZA=F|q$BGn{I|)vE>6^l$NRtY;G>P{rP%HcZkE4VU}&iCfOb<~<%`r**3o>-8$i zk2W={-&qonh_=PjyDj3fIwg&zc_DGW;xToeC zrTReY)OqPKE!o56Q*i(aZcNSM{q;sH423ugh2E*6i7);8Z_92q(8k zh#lrE>~x&GIwOFnJrRn>{r$u{;N`|hI84pPghN?~w9{t(S3$gKcoev>a0h#g0FEBD z9stnB@JR8TO7(d>j&;HNG$t&&pS~aX0ur!i`Y{arF5w

    |!tMCXRCf{EGbhI6%0#7ji#D0k79~E}R3tL|dNhipOA) z(l-R%jRCCHl8`Trw|>~wdURtQyS$qD9@G+Wo&H~sg3rc+hPEFHY^Rq6FMS+hBxZ~=Pk23^}`d-t}6o7WUh)+P6 zxs+vYry#9G4Q`+hep&{Qm}ig zK64g_isG#v;Lje;$|rGC*A1=vF#rI6fPbi7_nTQmKDL1Ec6OPBYeLI%T1pd z5~17L!lTrBKhN344fhM}t7-h0CuwFxF|vS;SEMT&n;lJ&PgD5LL!r-1{2U4Eu+yls zkOn14Sv0ymD3nF#&o~Z@%hC;5pzC_=&SWj@ait>LyUFC7G~}nkM`xQg+_yV5?_j|t z3Q(y;KEh$1BqA;=Vm(VvD#qpYLjkmsYro~>fvt9Thy^uP~vlbkfp?kGJNP0^7h+DI3HA)ak~ zr?w^J0qF1PO>Re*rJX z(DQ{)SDH;@qz#f|?Lvv;3lV_1B&)S*hbB1K7876Jej!h(i>(X4UK7l}HZcE0acy8T zalQ8Cer|~Pg$aCvJrD)3HntRU{>qhy+uo~@em8j{9^>;lU9&* zr0X@ZL|hL$pmASPKRi6d#f`YPcvhDRu#jjTUteDgdzrwXppO*Lmh+f+_Dv68S60y9 zG7Ci6^cdsid9ur@m*}~7L9AmO5kB8hoa0+w>?Dp8_Qx$66ji@6{#bxiQyOkyiMe2v z^`)Mz!!y+Km=Jc(hec&uUK#LWpH{K{c5J?k|8;9)IX>>dvnAdn-?0wjf-xS`BU<;D zLI_(^Lp@b4oIm-y&F+`A%>%ucm&@r_Sbf_02%vbJJ^Wx*uXbS}w0ae*@%W*jM!1Za zB*e?Op2CL6M(7Gmo-1uSE;M8H2&2VJyGH`dIOvUh!b{b9A^udZHIKZ8Ud|VMA@%;rvpt;*MszO&Ol=gMIOCW=sBh5E(_OG_c^@hewb-2m9`HY zEWL9RAj66^WrDJ=;ChH3U&3MOo~8k@Mfzk={ukV`5QX|NYawZZ;ZJUd=y0q$a61)$ zdvcsRD(*D8A+!%PlJUX_sgW59dn9OLm^6N(g&xm)ASPtgua?2Y;1hvy@frG%gXqZ4 z(6PhkwILNx8h)A3F8OgBjv@#%$ zQC@L%I%YH3S&0MI;{NJy)?lm4W%q@)sV5Oe(YdG;e#+u&X5dyw*Xv`a9b&LMaHZE$ z?QAL(Ctpk)2SYL#jmhb+*MPrZ;a3ZQ|Jd!xHn(GO)E0<;b|b%f^;RguvJ1kz560e3 zCJ(^@)v-!@s{R0WvcMYlCAoFp6^4nU*_SvT1Og%ayV-;_$3lcIhYO=gjNZBVq_R z^xWQS@ENKNwzaIr9~q&H!YweXPhFAwyzYOF7tCdNiE3iqpV9@PMNY<$WO>g_lqT{p zEto{MJ5o*gf>8Gb_xqF!@t6;uT%macim)6rgVH&K#HdgMz({2t>!suHRsC`QDpL$3 zW&f>K`h%<2Hi52j!wgVL@T69iA*J|i{{X>~h#w;-!Qf{%B90ueR#cGws|#YAz(Lq@ zk~d`m;7ODK5XWiWmc`3>(*0y=^!pPf1nPt-;d_D3oe-5<5kN45c}@WdNNLO{i`-z< zE&IN;hQd|wpOBaPfO-M~0x;D%I628mNRUy{#Y+|`&s~@F6)AX(`K%LV8|8b^YS9Kk z<-=b=9dkB%d*B^#^C(X8l=j#;^E6HOjcwz%)t{T3;#+dVT>Brc;fz_0>93h+X0so^ zWIybRXHR1W9-DD}u{DqE+Z#lXrmys^GM8nB_4cxyQJS%myn@Fr$eX zYedtnpa3oa8$8Tir7^)xf~TTb-?3fY-39wNBz|RpWozEaLui_ymIuZa*_t1GG+%)C zSZiucQP09#6n}znYjBc9sB`q$ro~-D5)L{;>sZmwk7F%iOYb}HT=$`?terg})xiuK zmpR3uF8&5@5JgMPc3DW!N&oFAM|6Y5YB*99HZ3B@s5KV59sT_~{MdZeNIx|tA&!W3HZplb2s`{cV^b{I;w-o5UKV-&$UGDH z;4RLH!4P~pmG6S_OSrO_b}mBv5$ZGHYxkMo!WWj*7{p-9W&Bmu9&xkWf)M$e0n(K0 zr_CI4ly!RB0c(jFiQP8BoxlB*gXw}sMpDcP4||G8sV6#YB+xWuI?plV%yG!U^LUsU z{hZbvIbgp5ju_7G0>JY+(5QxuT?O*dKuF%Nv?=Fh&tA!`%}vlD@8a&>3cAUdFM(x? z;9^xmkNIK{)brtJ0q?HB?afVP9}4w{tW2nFT{DQLl(z&LeY1ZX{jp$$0-2450&f_I z`+@1}{@*`4_%sm}Ah1c}v?2K-l?@%Gg3@t@3b6gmx;RImMj{Oh3sXQ8Yyi;^tgNi^ ztV~RiR3F;&zSLlayGexCD#lyaM7Qg>N zqCa$5y6&7SUNEhSHJjq6;&HwTzjvRbJbn86S-bq;bkiiI&8czgB}me@rm8*!wrwAl z5@G$UCgj_-*EE-*RHj|Lp;C7IysQi;jp*OZaDqZr7pEgM4rB>W)1z3Z*)A* ztS{YCU*ORm($pMw5Mp^&hQ;L7;3-B4E4K?R_TU#qY8e)dMJC?6a#{PEqDkh#@m@F> z7S`|#yWp7FjzOSXoOb?miWV1H?2);tj4HwD`u&&ZvO+Ye%E$VG%JtI9TKfg41An6H z3<{cFy~o|T!Ikj1!auZV+^5SHc=LlM((;9E*kvvho-WL{zgKecSI;Y+clF4VO6`9& z!%km@!|)TNl}pQ{rrxcIxum|3s<2_$CY38ANAUE`Rxx2c-a1zy+9{1$hx>)0 zG!LqNSh3Z{UY_4HBCQ=?s+H@M`{h;BU&|#**W@zU={h}g!gD*`3zCV^UGVYgAcC)u z1pKgTvtQ)$Dk&;j!){FE@+8%7fxjT3mVTCyAJAQ)tl{M@K+&v`3|=OdBZT{-gM;4# z=Lhr7fa)swprMfrawyRUxW6I(m2d|_gI}k!la-vHJ`FHtnaY6;pZYNI@q-`1cVw;l zEVTs)sw&Hw$t`E8<QW!84}vlGaeHq@9&z^=7K18ESFWYg)Pku8bl~EGMd81AWi}>?@-(T% zO>;)Z(xB=fYO#t}?VIH=YM9jC$tV9-Oup(4#-SS$|A##qK{B>5hdsdm%n4JDlo_i4 zGr@u~941_2`Qps(d$PlUZXY_GI-6&d{ZaMmj~W|>v>;m3k7jm4=?Zg~`eA+=#t)54 zlXlK#SaPgofo3yJ_Rhm26co3UE$)LTLtNK^Uy_oZXTOr%ZV(HvB1wR7+zC^7+G(58 zlzubYBDD<1Os|Y$54uUD&wRM!TWk+BcVB}a3$OEB+d&GY+z!jj#vz=?AzTmdBuqK<% zL0aQA+{b*^8xQ2(y$v_;N*_zjZ!$)o(vp&}DKO&x!`A^tFjpmZ&Vh<&%0zGF)w)pE zaVp;m2YdscIMA^OItaw6en4d41oFltprsi6N>u~&6Je!uQGfcMn9g5SDcpjQA3cX}ySzF{*RBPr zPu1s+?WBK3?keajyh+VRdFR~3mUIwFbNQy%Xou1cBb=CRH0mcks`v`&;QNif*^9>? zG^Lp)3{7U6KSdr=C%Qhbgi^A0QWmIF%0>$@@rBe)ToG1;eRx@cHxx~<+x)xo^4m=< zvD>~}#q&1vM#hg(oBakh+BIX|As8C=v)?8vbEX4T5L2U<&VLBBEUPmNez_!z;PbR^ z{eB`_bXbi4NeoNb_)Q<-wyd81o3rgj$CXN=;l9p0)O03JbvIj+F|B2Fk{Miq>^G%Z zP}pgvQ&hYoNM{>Biz_xU{w41LVN zR|nY8Otn+EY}&xUzy}cECHnlH6arDx(~BAe7ovq*8keT)FhQIe;KV=^iTA7Sb_%&r-Iohy%@w+Iq{-{4{n_?|+}#N=41dZ?(eg7a zPWo=GMcBbU;&}f##e2cox;}pd9G|cE{YZljuAlaIMpe#TzZ9vQJllMoMj8NDaDIjx zumzsyS>$Xo{J~H$XyM;5gEPZFJuj~a6Cg>IDt)jI7Q8ESNQUd7nD5}sCoJMS*+bE0 z<%Y8;-2Mgc*2^wv8wAKOF8?w}hw&N;ZQ9Gepn((fI^}90`1;-vfAQ0{AfJgqK1I|w z=6M(Bm^|;Er4&Xg9ufP)+rii-JqnnTetNQ1TlnY33WwO9aKeY9lCM)NXRcRmf63E= z{q-_x#b;hO6e17ZEgG}0?I>5^6IAV7-^PJq)FEPT^|jN{tdt??og{4c)h2rdcF$;J z-$E*Oaes3_0%v*=+b7Xe9kaO}o+WWc9&wRinpZf9)fE<6uFMuOx)O@@Dj1fbefr1Z6RpZfZ%ALUCYlNUfM zd{~E{s-%?)WLqxhzWnj`0g}rE+_vn%ny8cQrUb?|2VJ45i$s!5WYyiWxg4B`HuFh&$bjUfvvTyq^Om<1s?p&xN80kuU8A30?T z9hDjnmlgwkL%Mn`Kk(6DR*AZO?-L3#52D1xTq$x#9l}7nd>7^uy#tgDs@x_)Ui-2w zkWJao>s9BkgNjIg=@C`3-}RiVvt7I}Tb4g-ndG%oPC*wu&mMtOg>VxnQ~NCjA(BPT z7tz2)A$=1iO)N_6!q>`&s?!~R?&rCr^^LAvoqIN5$fihGr@E$(m+cv5q37ZFquE=( zTq~E-I)oO3ts!(NTLSTb_LO1$mYrAJ^ zVIl&butGzA(``lY+toWH>MAzeNB{LQ9G}MF_wF9nysSg@cL{HDtR`r6K` z9NcL)5-R@tr=$E}>kgXCoJ;E-Y z%y$X+G{s^i?U>%E5%copP`4}v7alSB#}7fP&3eJ~2;GM5`1D{)1W(MYe`h2wcrG6*duBp~ zt8l&!ju$ctY;0-xn(qp&``5;QPrWJm$1c;*G=z|^zsBSltFiHPgt7-e3IBLGeuv5>cO;^ri;sAZtut7VId2$-p8ch~X)ybM2L8zqKWwOjg3%mASAi12l_6d{B`(i2(*By%6yD@o z!{4)$oAZ{uq32Shc2()>+_Y&gWN0j6cbMpp%qZluBulh=A%4w9O5aXcD-ru#zd1R7 zBGFq4dI{arnaHFea!lix9h7{Pt6&(XgA&~NBGT*ynjE4PM1nki}^ z1<=9~M7PaLSBoI;no&;Vo z+=4D9xFZOYcJS2`o}c{_jLvJW|_w za$9TA9XkE^wQmA%}))Y=23N%LUu^(R#A3J>0+c|0Mmh=tw zYRXG_qqZkLC3yU66n>ey9DWG+@+~8N^QPcBx$1qh*xqR5Z%>?nwAHe*imtPz{g7}8 zX!}O`M=T)-<)eQ@^XiYYfGfko^NC*NtE5qgvWDGh~g?l25G*!m6rJ6rriD4GuNFx(+u_-ZV+8t5;m4@(z z6x#dV7t#>=(A2m*Z_4>L){S3p)0PLckrqCth3?o(XIsp+Z~nXr2u1e;pRaG@hrxkKOq2V)UHa5;# z*A4E5(PVfi8sKltR-0qzK>q&y8;C&~d8LSK6WAGq@#uWs4O~NSw1>%l`x^7vP~m`0 zg5jHyS{h><;d(gC=R`_9Se&W*BlZea3RUQ)4lc3C=*l!PPk{>uE(>*X6nWgaXi8J) zx})=L2TelLz@}<@+fJCAT>TitbM4xf>2?iGQqR)1?h{m;$`^hhbVX2uODT+#NgI`#M z^+*9h(SvL^oy5|mJY%f$!!`kx=XZrK?q=n_q9qlzNj>6&=c0v8MFOcjjrV$BFDg^r zC+XHn%x4QW+E2RwZcdp2p#lGK3@@5!*ec4B99{4>Eld<*M6%k=1ev+q9Mch^9t z^%&~RBf2Z!j_mvh6}NV56v!6VpCLJOcMVNv5JkjpUmX%XOy-4E3FSc>QF(k|NrK)2 zszEb)-Yx%9b}XMz65%|ka-n=yb}YDomBr1dJXdYG)X7g*R#pHNx&FIqL?CS4?`_|1 z7~szlkJQSviwZ*#;z7XDZ!>mQh2KC&@9GPrn6BdxJ@0=t%|oC8Dh zXQVGDWjeQ1K{Cr3l}2B>W{QZu`N70(l3~HCfmCOw+Iiuy>s;eogQm-j!+z?YjFCR@ z*}fWWdOu(;Hx(gylBU`5;V_p2ajElwNfsh8PJM>EUJmNgB*`4+tqnq!veLYW@=;{6 z5^XM#00Df@6Gbm6@H|v{%Hi4l1>+UW8MT*E2ploZ(g@@3MkbY@Sic6zlG=a-ltR-< zV}Ppq+9@|0Ik)uXzE>A;jNtWbXYD8#%xO0L^(R%V1)AP(CCnXL$6Y49rS(y-`iHAX zhsKK&xPggK>aowSiPfm~8hdRSY-Y6B7w=OKnTid5Y-=U{$d*!gLZ&%K0kMqu&d@c&V>>d z&Tjd*WM_)o2aDKC-*v3I6QKj4qcL+1x-}%Xnb{b^wWOUlZ9V(o~QD1G2-psJc4-(%s$N5wOhO_V>rq{E_qe zccJD4-wG^p9~~IAD`mzZXbg3t@M5g7jXPn8CO3iRV)=i64n-vB$PJ! z4>A?WWoTB-A9g|BuS#$@8DyzR6)uh~Q0Tot?)*!_R|?)}J%G8MCpzwJF~$!^g3g?hTr>P|f~`=|eDln~x|cDv^NTE`!j z#OqvEaO=zq?z#W-Hskkv4#FVmCMj{w1EwrIfpY8wcrCI7LB1itXT5JW6M+kM?NulX z3|RgQfZd{G3ozioN&!5nKUC<)AY)@=*Rw#_2&{&@jEq(wXq#apm;1KEj9nJk8%fI> z|I$^b#>Qgf;k`E*!Y3jCwZ>BZ29@fE4cqB}?|m{>fZycrF$m?iZ@H6`1G{00v7RoW zk?&MGRu*+^?(TE*Z206@mA6ufl+D(nx?o%BJojywWLZZimYjVy50IzX0`01 zr1+js6N_xV%^AMDC!@GsrVpHVX#azk1vMj&*~Umd)^zMUA9}u?)^y%tHYA#XFUv$b zCwU8Zoq`;gSz4^*Qd%<7{JVX;BwT#Vip%u(Sa7>BoD>DGU7{|OO4bU&^ZSRY={4Nw z6=}Y?l~vCZqTk)~)5qg3MDE3uda^!#d!9G0p z9!yp?Gp0(Ga0So3YQfI;w9RN|;MsGHlT6i({W-5~u&83wS;E>QEvv_uV2GdICS^|! ze$}?6xJ&LgYQ|)zQwTK6T;)Z zA?`1!=ST*=SNF^>pnDp2Z2;gWp{XoD$<2M4rE+#|G;@t7gT9uNk=(@IPeWdBi=+~4t#JrA8kq_njMTr3%O zW1}W@yzQL$4}OpJdP0Ed@1S~;{+(}Ym(E7Q>r5 zF&oo3HSrOIp06!7oy*=#i(d*tlB`OYIe)#}q`q@ZAnp1Jqc)0}*v1}AbN-IH;f6Ba zygP6c$tKemtN+`y8!`qoX*gx#D`|=3xU4NyI(5rBV{3j>EU|6{%rP$m?s`riFXf32 zet-*}=>_0vF&sg)w)Y~?BD=LbtcgMi4rKIz#<*9pk5~+Mw#gZa45E`I(2F05C8eYk zEY@?c@Zp`x?Y*G$Y5)T&EbgLk_%^&TH z2A5(wLG*r9H*1+ayi98wRQ#tw(eUlp{OM5lTOO?9 zfJx2NsehJS+W*==@s~~q${1SaytS*?XxaX=!U z0b!G|_9NLQT%f$M`FqrxXw~q-*V*(4=A27^{%h&l%bwtnW#u%ha zQ^!tBSIr-&zg8&8%@v_DsrpkfS*BiTFqSO}di_M67pu4yDXXbHfrbQ_!}g-RyD#hzb=|)xd6uF}|L!4KVtjDCCTZ3kuP*u&^jLfe<>x zj}$1rWxq0rz}6l>kLO*RI;;`P9}~iCG(CT8Wl%E@+;`rLl}x-Anm=qb-8&e#-;0AM zWiONwx{<0YXdo=H;ABg)ph#y)SIIg8zktP=R;SvqjHP5DuElWpqWgWKW?dr6sTTcV zbn38Xlx@TnC&TZ;_l45>94rSYj=OI?!z0l>z7E(AtV|=jh2@W7?_PW<;>eez9p|vS z>-g|qAra}OozIPV#<0rwjwUjL^SwfpgkxLWr$jtrR!`d@B3-g1qk*?#E{a)ecCGq0 zub61qRB4)M)>Xq}PI>tnBPfb~c`DR&Ka^KZgI#*|Sffnk{&>4;I_Es-rus1kcO+kD z>>%yy#tPC5W7<%sMloMU_PAv)yLI{N+~1hP%4P`Mr9;?(?X)}W*Z_7E2heU zKg_N#ZSxp&*aG)1&CXEFOrNe!g8#ZYi9;^)p-&|rmxab)2Asulb;_)*y$q!<(>K=4 zETjoh*u z1`;tOhO3ra4-bERa|4=do_<7c6$;sF&*yM- z@_POEp=Q+Qe_k@NdD_YR9Og~oJ>?yPAT;+82{m=wVjQq}c=*lkl9F)B4LJs;!QyNz zOj`q`;7YE&kUT!XEqlSpDXBTt?-YQp1S)=PU&tn^Pj5G%PZ}fgYiUN|Hhb8DG`+*U z*LFOXp(TPTMfQ zXU?C)a!<$<59 zDer&Q53rB~fFBXvL&1OecH$3uZM1_RUt&LB!!+6&vH6oq}fmO=7KB8wsv+L=D1GTD5yU5>% z7ic={M8$Dio2Hf85Gl09lBap|$SDplM(4-Yr+l+`j&R#$->bPgG5`Gut-u1X1&ZPB z=UBB06XPsUYY?@w`nd6%CD=GCLVEh#hjUw+CTO>ENkIBaxB=KtBk)K|nyb z){1=u^9Rw(KR*zH2Q0&zdLh}sg|4lxURbEg{de6YLAF>7_2r-r zS==I#=W{8#pNg-Tu$`vnuk$Gx09rVLprsygtd$%sWN^P|@JQgPPy#7tL{~R$-xOAD zk$FHRJ{kiaIlZ>9)lFgPytl?yAH&Q!-aB&K`N>5831fCa`AYt?s1EDo+d;KY2gl>~ z8RZfFe*3w}h5$*sKlHm&b=e-zaBCdTQ{-Je- zuS}f7&WQMFBdWWM1ZAxhWo|(tlD$Y?udvG_cMG>TI2A*-(zR(JlJySOPRVmQ zIWIf_UmZO0FKPk^P=2Ohu02C{5IG}-=+^cebWoVz3D*qj4C9KF3n<@Rm~*ZL7cK-@ z%;=!M-(`IQRK%aA3)BTV2q}Ay3J0d{PhruS|J=XeRGln1jI^g{)mm!Yag05^%>Ox8 zfJildHxJN~jpZlDAj8-jY;nM#`L`c0xgS+FAESawER8zrwBOTaxf|Qtpc_Ji&K8)s zTS3UR{Vh2&a|Q74F_`}N24a?0-wxUxN$7!17SxUu=(Tz&*39U-A3$60$^SK%m01Jo zE`5qlOhzfGUE8>*y-Z?tQ!_aIyxTSQ-|mY~>Yte+91jy57o7-ppYNRpu}$wOI!ec+ z#5d4|JT6h?w(X!~s2?7{O;i{yX;8S$y@h*IB6a^uat-b9WvCnMQ*z7j&M@oXgz&>Nhd?S zDi@}TcqC?|Y}uvz$FCwCrSR*v{eD9OQ|qN{@IoFodmN_sls0LCgT3zk^QG3UBKH*2 zBGEQ*vlf-ts+m4J%gyCETQmomH;LIrZR1mJ<<70)r*}jx7Kt@6Ae!2evuw{~*yTV) z#5yysc3x7Q?#XEp$|-%j>`~USh;W#sLA&$~x#uWqZr_^Kw4kb~92T*ww|9IWq~JIX zsn~HB!A=n#_WYdAGA`J4W`p}$!;9O~H*7ndq2<0rrk|CTa^h-oo_gOAX)ef|#*_eW zR4@Xd9f}r~J43-ZX~LCG{J%%9o*hs=um=LXNtFIwWV!5j?jJReii_e*&?nXo9?&aU z;9&m$*PVVl+^il5Ao%ojFh@CdKsZ_`IFZ0DgKk!Axbu{@%BCYDYV_0#09-U!SXiGT z2&u*(*|ftMf~2G%XFvc*3xEZd4@A3#OS=GX_bkTXz(5)779?u#=BI*z;~#M501%j7 zSQ(V-1V#a=)G3~Z%A5C=X2+RO0OK3pdw6<|t;z}9e9LRTy1WDtz-)J}R#uD@oH$Qs zb~jAaHD9vo-vFh7?C=Pis;Zxt0JE3J(?7d`g1{Vb3KPc1b_jWi!k6!Fhe1adtJ z){h)J`MUD`Hamj!UWIL!i*M-V*-v{ZP2R&3{#MEQR2yyS@R^+ei8Od3$@=(kTyN46f1JCi{32gvrns55bH38eoKSf;~*}~oR4yV$jo_<>Pp#2 z7#hX1wWVP0q%X^?Q0Un!kz|~2*JOKqMeO{sT~Yr=I;X|zi2m1bJ&c}D=-mLJ0$C=itWqqf2E+aAuEIp?Wd>4~ST)uXc}R z%TzmlxU-ozvJ2*Aja-SM(~I{UmXdG&Wi;=jjboo;(0V?1xE9dmK~pd8lL;~%e(#snlVT{tAx6I(j}lIEW$Qe3|ieG1lKv-!_k?LQzQ-c zuXVcX$Son|Soa1{Sv?mq>{_&K=KV0J$2Q7s1(F=Hrw^rrXZ@vz6&Z(%|i{ zk;;PNL3P8+fp)CW?5gLDP1gxPI;Tf|{($*B=eT>ua`Gv6NBva@`0J)4@7I>=`&=zl zucF<@N@tp5nMqgDUX)GyhIgRjJG9TOypfKfo*^vkS9VP@FA z8<|UqJrXT4Kker0Q2V&zANF;linQ{PBoY%8R%HUM$ysE-;mre)%saRL-L|^qk^S4u zNbaY6v@v~Hx2};VsACc+3y(Bj_%{Y)T@Hcd?o$*|EyZ57oOD}e*lCCCZE&N^ag2H^ zKmJ&>6p9!8c%?XU=VE?Wq;F&elj^CMp`5QqVv4&qh|F6~prZ*K8c?Nfs(%nmb+nd& zDXIqcc+He}^Oo-S7}utH(=|$b5ybl{$L%T`ilsMHvru_DIf*8Ake+~ove%^rAuhIm z)qARK>gac&CNW)tRoAJbuy}1ywt4ZBt?^4ioyXS?1QRVqkzJ%EZqq)f347G)S}Hvd z39)#=-%=PgeR(7KF>Yri1FP7T3D940%ihH`!*9jg|uCd`~4Sl~J_XmFLv15?n8& zv9xgSr@=ca1bW94(a6QcPZ3a$a=z?tNGfAl1YROTL}Y)h!No;l6F(;-)Z&K`zrxnd z!1hj9XWpR+N}QRs#FT_aVwyajNi1ctrTH&RIeSAFT(a&Uo96RMPD?J_Q*)V#{@e zUBl^iL7tJnI1%l73wssN7Yu#4tZVHLbqA39NV`K?RReV662z)BpZN8z?@kq~fd&+i z)(S3Nk98Er%_m`pUJ(%Zh|*K({nf0oPyxZMAkg?$UHusz!j;zrx~{9`kJ@-u<%gKxC8sTZBr`>Ii*~ zc$l*v0)fJN37+I1;mV04kCyK)+{eNBii%eukiz5QgFI%6;ISsfA1VvNlD-xW=-)v9 zW)W+iX0~Kk?y8(d+}q3Ti3TvzmGi}Dm2DtKY-zEDE;=P{hvwB5$5>?)veBI@sO@cQ zY~CuHrcP0zSV*V*+m)f>yf^w%NTPq-W4;!aF*!A+54*^^ppvsY@kB~}X`3{|DuZl&B%cAdH^QNim*{ko_k2#fBfm%4DfxW_z*ext!_ zfA?@9X+$+VX9w`0XfliPCO#QSNNwq418#4Be)bo4{WY2^2Qe`iGM#kS)&%x>8z|$iFownJh!I5Sv zI;5u}r%9lZv;0tKR zL=u^?w=x%Zr4^&!8&h6?oeEypFLL+quIXQ!v$XSc?<4a(3w)vJ!P2+A0B=>|){Uhl zG$r*7r-^TdN$Jtan<43%eA=5FeffIr;p>2vm7)xkptDxX;LEDR>SXVfp-JxcFY!Fs zJuS3$%wtcbf51mg!`gw-F5a%)SMkboFEqzfHCkE8BqNyL%7aYHuNm*)KDbe!)GNEj zPVw_Rsb%lL0?p*Lu#|#_`x`D;aMd+&lK}%vJ+_>of3+#@>v?u#WZb+1@*b4rW`B?vBPwt>&RIDOhBewMe3qRe;A-XHkG_2|jH9PrUC&&;;Mw^9vG>+t zQFh(iFc_d9AWA3*s7S|1cX|WTDGh^kcQb?_0*-Vy5|Yv#Gg1;mNH-|mFm&^7yr1{? zeeZL8e|~?y9v&Do*S@Z6@3q%jd&PNnr0AZ|Y-8%k`lebpxR=StwGQ82La#THq>i+D z9gW9SjfyvY`?6za;RKzoE0?5ziNQXo2179Z!J3B$i@^wS+DM!EEO0p~0uEbr|WS z3x7A zdmiBJ(bPShY6*+<=v#oh-0jv)O^svNPt`xp`rhszeHvf~E7PA*yG7|epgmJiqp7>6 zP1dKe`~WR$K>KcI6?e_JZ>>adUUpRcE5EXw#1f{0_b~1u3GXmdLC?Mj|J#PWPU`&J zCS3*1hamWLa!b_sIU@K8aP354ghftIp}`=7CocPB8*#o3>Oui8Zi6@})Z7Uw2sAmu zrO^r62uN1<7QWZaGS+}%hQ;$IEOWa*NpJQkPyR37XZTw<-!T;_2T0BVMEBP5BLMZi zzg}2kJ5~MtO!gfWR4vb!T3z7^94-5?){Ff>kB2Jaji8# zxEPJVm1px6B6w-HblXTFwk7O67k27(+#&%-L1;dyXUYzv{P#!ukFhB^zjr&0N}uGM zh=0oa9#aP~#?Ytvc`BWHE-tX~PuxhT$i(n%76rV)@K}bj0O#5>bo;pT(u7x0@uTYO zMW%g^pUnKk(9Sc<6g7I(AGgBKIRujrh~K!y$e_0w+6PCFYGE){+?Wrp0jF0_hj&zC z4h$BH8PV+t-6w|ONpzeEW_rocr5c~=daP?*ezuC9CFNyxJQvs>q1;voB7)1SB59f8Wq>+R{>w9?f~Tf_N(oGDi9Zl9Wp81*;L8B24hrhPs2z1vq<+ z*^mC5rm?j8Ve7#938rYDo+?TP2d51+Tzi9J5C7wfg*=8>yfuW zK4Uzzg!X7D!U&%RL&QIvywqIbMRay|TY_^tpdri5$^ub=ZC9oMeB_BCdcNJUK`a34 zrX;1NFE`z%Kriecfq6qf=d))7lB!2Lb0tCsASnehMhLLW4@a;m-G3}OdcXnW?us+I zeY(zR2}#Cn{e+5Y$9onuDp-se&6K`>6G-OwmJTqQrX?qzz*GFE@AI;qX~BR>>G4E@onsiOwxE?+^+3$kJ2uN*~TkUhIiy+2L-tMnC@aiqggWxHF*1Y}#B^RQL5t zAXekjH}U#NEB9r9(=*i2>5R9U2j$(S1IvE?~**wv|~Q zQkTeXALviE@*tFegIH8m%mi=5Ht57#YN2vsE`M9qU@TFn5x^1^pCx2!Qd}V&<+vWr zgNVR$_bBF|nOjQ@$>c`|CaKYn!JaO0s1`b|N~9d_(d35RPs~%$cHAnDc3SyN(?LP{ zim}kz?7e)wH6!{i%p3@9$o&x1F;P6fIVaioxM~8VLZV>u$;(F%p&xIdB}&C9pa9EK zMjr);>GCgE(e9N)JZ&HmUnRgoBHQ4))rbxpS{sfNy*xWKA*bZAon8nRDZcFf_4SQV zw+kgBz+tlm!K%7kP<{sBIG%A^YXaG+>JU6z&C;G|Yx`#_O~1)Alv3ynR8kEO-akEt zLlAjN3*gwVeX*{A9Gr)PA%duUG-VY49>@9B`OfjinBv*<;|FA%Z@p$gBSWS2go;Sc zr|UxXpcQXtbf6CTa-oKbdnG#};=`i+dKLQ=Gvl-JR$=ZYIljj))a!~@d4gitg1@vB zYg!J4xkfZE3KTAAwmL^|6zBMLP+?ycwtR>h_dK5v#hw%it<{I(25o6vtBC zWV7E~Gt;ER>&n>O%-@_?QsX8hx2utej^Y$X_OU_B=KRyQRb3n#Jr%-9+Iv4K8=}gupVBav@GSQnl}o`K|87T5Y?jEX(Nkjbr*xo@2C>DAPV9{yQ;vzf4VVFHM6mcL-ypNs(9D&xV(&do z?qs)g8r$|gcWpv)ZfgH`8KV`W*OhK%snZ&< ztTnr)@aAKvbwzy=bLl8tqzYynIn8otbV+x1vi5ObJDqs=`M}x5=wRZ+Qn_TYwk4C2 zS#`{ZI>)tl9xhHeS6UtzAKvOKby+ClunR0D+fTP!&jjducvpYtPyAfa3W{BX7V0P%U zuJ2ohJ=PUyZw;chX?R;i&-UcT*jrY0n+>gVS()`*n9gVS)4}!_ZUnymXwB?8m7E;# zCC3?c1Vb!^=HW`w;JUBQ2*;3CP1}3IxFAx}QJg%LwJyqVWoGQFvI{+C} zX=!NyA}yn!AnbEdi`d_T1IVrvkWn`@%oO~w=6og;KVD-8wYDx2l&ohE=}uFn%<64r z2=DLgjKJ>1n}bdueUV3vpkaFmzh@VKcmtvdm9KeutE6$3`gL?O%SXw9gR(!f+2eZ3 z&aZdE#5FbvJ8FWS74E0B*Tea=pQRDk_1WR`EmOIeEBgtGCvOg{DJx`kGCJ(AxSs3f z{4vPaNt12p&c0x(Ay9Af$#H&Duf6JY7|343J{)T~sRwo!a3D}m1kri>4R69&;-K|| z*%x!H$s0inG8zkEyui`tp2?x8Tyn}36n(mO{pr@qW@{K<5JfU`v7bg@#NETDGrt*b zlM4oy?AF=BW=eIaqwk@%h6v4^W(UxH?qv`P?*b>+1)~4JwJhB7a3R+jQCOI?FTJyzy zF7n~yGqPb!?eQ!8EMY&8&yz=!U?z8aQ4ZOpBaMsV5-?1FUjomPs`xQ9o=rA4wv6MxufL~OC?)Jyq zGdh?Vu9MX^I-Z`M0Phb#0oJ+|^6LDnf0^fTFWBdCf2X`a_>}-$jnfw2`L>V+3?+ds zN@fV8->}SnRpJg1+`IE|148KUc%kaAuhs=n*>dx^&liIs85;L6s&s3QvtD=b1>Zn- zF=YV+Z|tCL21_z2_+sNhZ+H zpq6ySlt}l@L+Bk;+lk?Ca@A2g5w&gm_<@&s9=h8&HB(Cud=39j7JV%N5<#gv-KZ5(R zE)p8lK*y>5vF6IIXLEmVnCGXWUXx?prdkLD14Fde0e>F8uVmat3b2s#U4T{~W-{%) zScYDo9p{bBdD<+RYrm=-n+4g4!}qQFUZ=5yt@;#v^Hn@8b2MZuj>(&X9iivPZgW1= z4XS@%F$;Kf;$S?$BrccA@A3(s!V^CYRdiw~FC$|pei2iGxHyPbq*X|G?a|p=#etx+spv1z!;KD{r(ElR| zb6`z;1U1Jtu%0Y^;R4#Lt;Pm{N7^eIt(Uj?Hq?X^geozfJOAeZW7f z+Dn;m^FSZp<}KiccSI*A-{6wQqlhze^FDxxl!+}2l#H8K+H>7Z!^4+f!ywbPAQ9gL ztnuLZ`1nI13A}$`gg^knW5T~k!Z0x~#9s}gB>=D~NG*X0-{~TI<3kD%m`DEI{oiXHE0xRbV-SoOGpkJrywt z!q0E$>g43Ue1SzrMae<*TP0Lr%7A#cSWiGJ95nb6xB-R4Thesta@N3c{HXzKn}3o( z>jEm_xSOe@Qv3U#ZB!kJG&=B!pnGXiH$XC|o7uKMzKh|vKU~Z_mHw%C8)OkGt#xY8 zZ()co+VegG+~u)sI}tD5w9Lf64lX@01i*X%S-@&IZve<&%M7?fpQ@e0)c(0x;Wk<2 zdg@b)KigodMH+!!0YD65*zEEkwOSk!nlR9}RE)ej%gf6HXe@yZU=yW;yP6Omd78NN zzmRD#8&5je%(Oqghv9b*eM4n!ejKM`8yRU=d;SQEkOUeWE`0V@-5d-XP9Z?D4b+Fd z4_ZyFk;|rEFF<`p$hnHM4$X>ffPrD~33Nt5?VIniPhRe}612|5?*=!XWCD6P0PRz* zaFd4k_nlG2%sM6U8rJ~mOdE#oc)@T?&tYJXfrWu##v~%*3%qwA)^Th%Pe2(-3Jt#h zm=cK@1U%$O}5SYQU0Hw zq$F?&0SqGm3Z?6R2gA?F2&IoQ%2FlGr6fOhncTtt9(A-qe~b@Q ztS#YFsG1t3p95fh*Jh6U`^23qNA4uKlvC-d%r)0sOqZ;O-P8+axv21`QlH~(1z8F1 zxlv(ah_aC6qb2n9L19u;d~7W7b{Lo|{ark|*;Eg9g!|6afgb@-zW3C#f8OX--CH+* z{O|)FpuOAIZ_jTO^YTmZ^9K=d*Z@3AaA>Ftf9juYS>S7e&zx?4+8=GYdWBO8fwqjB z>JeI(qQBRfQiJP$Z-$a_F)}h10MsNV^`d)jP|J_|uMqUCtUds>6BN?5&Jbc?yrjBO zaAph)4EdnGA1FA0Yz5@k@-z6VJNTY)Q;qq6|2PhYpVHq!t&0GTMU*USB-gE{@G=b6q*c&DXo@07$fQ~M(L4d2% z;}J9%fVzY7>ZNkLi)9`ppX1`&+J@U0qHTX)`pMH8P!Xt~T)YqHss3y$^g3R(ks5+L zMZBJCqV;{C#87>G_-<|(7{PKk8u3Xf0A>uM5a_$9EmSbjH+3RTL`;0RGlv8VRGvTWI%NY;qH)~9!K>f7d6N`n3k!>QRy|`* zMx#LxH|#pOxp1v-UA06?o5 z85)ALV=OQx+uOj0gWoLp?+%axzfowJuGEO#*t9eR=qk292KSu&YZ*&GIH|U_7SO5# z?lYQc@BEoyNP*Erxd|}8_-;27LGgDwluF!A0bIeXBZ_5G?rzPDYx0aOfm^O6+dQ0u zk(t>VP%{B}*g;-jF{pksHZiHwEw*<9f|>+E=ot31;Qg@ip8-&zbs(s}G9_?XYR!LT zG(T1pEHmvT`x#{xa5Db|tcGpvpHF!*y~#XCkRa0s?JIyQy{D%qDk{p}?I9S=WSZx^ z@??H)ZVUHDuixWK?sWx3G*4e34hCg`X0n~E%y+wR-|yuK2VC$#G5*;$di5NU7j^?R z<8zh|knJ>d9VBAHY2}lg*M|Yt!`YA@=51Pq6hKUnvbeYy%cOBrYY6a;&J22OYj*Hv zfe<{y4}vn(Of`Y44P^ z!$kTW9T_kY9)gsYKOb6CykL?=3Uylc_VjQneXp!kLq5Wbi86T!kwVtuQwduebge8e ze{%Msr>B2i`lzC!;*e>eZR=}eqweh2=C~**IFRDb96i5`A*HmY(4sAmIF!{FhWAcV zg7te46NR5pCGSXUldEtlU2~OJ#+wH z1>IEaN|u0;?@R@3z$kp|cT$u$jUyYf-k=}9Iqnehcc=_!~dp(YS#C z1@ZpoILm>|K;gzJ?eFFN52|CBqqDPLfje9l05n4^nadTC>jB6q=t2G|nop|lE(To( z+Zn$)W_6~a#;5iS{DW+qvbgC;`!YAYF&}tGWY+m`*7~;yy7Sm5h#uDLu(-${dui#A z4?I=O(SCO8BG;$=STdo{_*9_l?W9o7(#6||{G};z@MNI2@j&cD8P6d=aL&Iz0!L9= zsGdIyO>)F0-i1sTX(v!`SUNH!cH-jxP=<-{r(UYQ088$SX0FC=j-&V=57~?5=Cb3) zdgaMpf<~J5#q(suFz5uuvnBu`z`^(=5aTFyX~W~0&bZD78nFsI6O85;v|3I$AJVYN zew$(lnZIOJalk#!U+xY#I=(`6_oQupFL3=%_T2s5jHNz*6ETMz0+z))I#L(gZb)!} zNvT1G8i<-7+-?P4)eSV%xC*97KHv*^|687Axj%hJqkEjL>fXt>?V;T84_og+-^ZB> zFfLrBLZBpB=uD-24NFJrra|tE=P-%O>Oo`vO^4lOvNqNlh!?W`Vp|Jhy=v$nkjhapD13OEGZLi=! zZmgIcM*u`s3S-i*vDNz_ayZXS2z^4Uvk6WFi%ikh>HR{-DX=hI-^;^2i6vl;EhfsB z_$u}{-476x39kb2_)5jt+Za&K{*s3wbct2HGLSDl$BGd03bty z6qm5QiTk6QX}YAV+GI0+ZIWRGPGS2@z#19{n`Ojo@*T<|`0Xs4d@mNL&Q$hX`oIwA zKD33^|aca zuG>rS>!|$kPa7$1lwEuIQP$^mLA*d8*1P{^|)v!wl;&w$6>-!R!|R9ez7N zKL#+;gcGj zcI>&6$M6t*s|Erplf5F->C+B!r}=%jR5_n3}>Uz9l?LJTr0o|o!$15o2Fc( zNv<`E+u1i`rh)$+ktVN4)@n}%_p1P9Lt^j6>$;hs<+a?{C|FSqtbo|aKxg;hPNMuY zWp?`7+FJAI{S#>$cduXJw;1JSIDq}>Oq=+TtgW7TwMb|*_2!47<-``sr&YAd&+KDj zm5^Fq?rYHGZ@E_RA(kF4fiwg51~h75A$(938!O!$4qkbAvuRp$g??rjiM2vcrZ_gT z42-4%1ciSeJr~ft?X~P@l!tRj9)G3qk?6)_d`+tA1|ld!|N8b0f7F2E%zqOZFkt=r z^Z)++|IWkzuQFhNG;P~|U$)LwhYH&1+jYBTOaM6W8#nUjSFwUt>(O&q+@Qke*Gogs zZI6H?Byw)WzCM?QKO!P(;YAZTftr1|iE|~q?AN}ESKbKnMi}kVOS_c2AEqU9F-7$>v&aK~*H9fK{G{>;?+lGh34OvZ0d`NZ%_OZMoD?=wz2pmVr}6j|mWNX4z>zJ$>BzEDh_9Sj6Qk{3i1! zk^yC}>Xb?Cx<{N+0BgAfhVGqlQj8dV-Y}-uPe5Ft+&M|Gs%6hD`ua8*me|8P;5VO| zI?tP|*Cshh?+r0_f8E@evjyt#{`G1_IfqJ=wZF)WkZHY-;UVZTj zBZvHEWPUkXRR!B(h1?Oke~5q7`u+W;qtAT}!zWb^DKF**jHEGSn7}I1OO(P{**Ojw zLeLWh_S9c+{|=d<^6Fil7z@XeF~6tMebM|oM|UxD?uIP@)8taGCar+i_QcDI!H{k$>#IE*;S z05CfBOXHAoQB}j*h3gjaf8QWnsX)m{rZSO(&vW>`C<6v~GzHua2f+3;P*(Q-1L7{D zAT{yLTtDw5&cWd_`Nr${`#<07yWin}74U+OroF#kG51Ff>Axcu7q;E&i&$CxLx<6a zzln>H@;JIHdu*eX+PJxZ z=TwK((^Vstg~9*Kn?^k2a757}Z{NUz5=IK?&CHQ+exO#CS;~P^t|?X|Gq*qRBf_A& zd$U@BUB=x#JrD5l`CRt?NqYI?qldu1gLX%>$e$)OJ@%Xbd;9mCWJ804pdm-`*|`pt zH+eY4hksv3m3_&S&r=k~FZ$-4a{(}mWz}RdK))C81k(R^xsF&QuvaBda? zC!jeZDhk92oz_q0_{y4p{?l=d_wVfZZ_?gu!#n@`Ybhz4TU&VN|E_4>gYJarwg1;R zvHG*{%!jL>Q&&RFAZ^v+A4Q#GfxE+)y`z0B;X0=M>U&F( zYLaT!+KTs*fl837*O@-!pq>P`SYkF#@-N8=Td~~+(K-uat$`2q!O8i1IxsiolvjyD z=Mz_%LvoW|w1;~4hrY(RT7Pw;5*>Wpb(H0lD?-JOdC&jq&HwTIox<~#%2V7hK9~V? z&|hn4Z~jdif0(Rtib!R0QMQ<3=^_uL}27J7M`}U=slek@>4{?r!4VD-Z8kW8BXeABd|_ z$#S#SZH*&X8(SgN_Y>oKo*U-gGzDkowP`O>ovdYjm+Ej8Z>3g9yS%x)Ea_6rm#Em! zJWjOqs?v7krRpEWhB}X#ZbzE^=?WV=ue1|IujV}bT-($6itq_-im56>JSr#cg91h2 z`VQK&1NV2!PTRAz_leiEC%(H$;xllI!%gK`pIu!do;|3LJo;$`sTlD+JHwqipTNvD zbbOU+I(T{Mxn#C!on0Y8*Dz73{AR6zG<=gy4 zrqIUeoX4^TJl>kl%J@4x_Z&@{foZ#Qqd|a`_j`UGynaTIt4Ji)tgt2@tflrUKhBtMeh=#jLFqm@|C{c z(#es{#aB5u?2Wo>U6-6pKK0KCqnl0UzS9=h`!RVM-41aF$N4v(@K%|sbD!yOTdCx# z%R5MCogEs_n!%gaGsb5*tc))`oBBp)d_=gF?{^G*3!O~R`J)z1y~Y{sIu>!|J)V}N z`m!X|Iai-}E^`iY*;JC}{eIzo7dNRpnm6?h(N;cx)#HF-;&RC6Z3yn{LTtPyzE_Pk z*zjWE8vnJw7>%J1sT6!Wik9HzUgM-dM-baCtI>!|1xWr>L@8xQ5KZ125`NWn!pC_s z7rTicW4MXi^!e6aVfOC6a)L~;D7*?n8%Ab1%Bblwu|HCLTn*9Ywi9=;T8$k#*dP9o zDpcR}iu;JSF=)%HtRCGD4P4)d+Juwx3zK^uKCpTDV_|&lwm^;*%cZ-zH03RpxwAvd zvZd^SR`KGL0jArTww}xheDbw&er7+j%Tg9^Jy_RAT(dNhc3rdbsYq<$`m|uX>Z-&J zu2FxyErXkN%BWA=O{MjRMr7g6)E(cVC2N)}`>(h=E2SJ_Q3O8IY%QhHE;3o46?J7nRDPDMk|{JQMfkMEHe$eRA0s0$5X-Eup{C z$+;PD=H$kq=%i;r@lm*nN;c`N5Qn)GL#pUhX@IrlH%YhwR(885%1_>800uH?n# zIdh88J4fpot zx=+*dyKlL)1&i60)g*D-COq?YE_H4HNN9JwGh?(kb&1rje%-PG9r(y#4b7I=h{Xh(M4#LD z=yM>|&ok)!$BrbTJaHc1D#wY&iS+*K=bP&yDXff(dkkmZYaJB|Th}yw*L!<+oo0Os zkAGd+6+_V$p4sVqT0ZV$B>dlQpBpF4 z=>eHo=1Y56Keq*~Zn@y%-r5_a?YG&i#ZYVF@AKocHY`cptixTyd>7AX8E}l0&tD2j zJ_fi|LoO4KN}{)Wr{Wz){gvjlp^6fh)5o;Z@c%@iwUX`-F7MChmHn z|Hsn16}hrIDhzbfEv@NKT85+zprR3a|K$o%=X;CM_?i@k?zSc^E$h0xIQN&i;tZTC zgt(9}H2`}8uX>H1n0~tXA)Bg+Cy^yz3zW_Acp+xD+ClGjISmtO-_p*@$Z^uPXcx<- zQ_16>cRMc9rn?~tTw5Up7v7i>TX5I! zI_p^%`wMT%jchxx^b^@#KPLPv6A~fSiAV~}Rco9nIo|Gtt`tx!T$QC()eInhbCy35 zQ5<;n^|^%nqsij)Fe=RevXR1p<&SWjS9qL`S68^9J>_*VZ|9t(z-Db$|9bma4sOa- zAk?g{UZ9CSnYFo~;gs0KWjspev0y%kO735KlL?SPDr~ekX8F2QC}yi9v|EM=!O zu0`=zSst#Pk~NIxq!`GVNZwWAOgz>?Taskj6p{$(Z)s0hqJE(`>+H(nN8fJ2!)Mb~ z8fZlpq;|GTe(9$RR3@KFWCb1gqEEw?{y7&Xk4=9f>~mt^;1o*EZ9bUy;l!~g0`rvd z>M6f|?zF^?ze4q_kiLzv&_s90k%aa^c+{z0gNp}Z1Giu6tU{$7*Y~o|_APMA#f~2T zmlKqI)IMo~n;TX!ymy#hocwUH$_&M`NmBvITbHlNv^SX(r`A1Xh%s-^ zX0(=2r}ngvxJCCVVcgRvuO4mT$~Yb`moTX>?$AEr&ae|RfZkCj@COB&B)216_#M;zATN5;@15(-eAiw_PrF#&Y_X z3S@s&iR~!RapMe9#O3ZC`g)~R2tP%dniPI%rp?*lycxbZZg35!(=S(_9wydetLg39 z3#x>4$3w0UyZhz3BBfu<+GuMP|H?ZzrT}isLBgeoZ^xHFASmr8o+=+8Rgg~vn}yLc z^D0Ecr<+lq3f?i!Av7-@>w|e*c3~0_8B41nvmBGbKRiu8jAR{l(GzfEq?;s7bhxhH zd9<%vw)^J$v<4lrYJDgi)u3g&d+K$pKAD;r-JzvW{Vnv8^}bgZ7$MZuQ>7^Vy2i{ zYKFp+-8yphMfAOs3a;7(3;5NA?|pqIXI+Wrcro-e|8+DSbalY7iT(M>VAtgo(zjy8 zYBcJI#fSTLh<6$2?$5{P!if&Vr!w}~{s~0I;(d1iX_YJ~tjhYuP!i34_|D8X{3FAo zcCe4<_`S00?0GO_7d66mO0=>(`TnSUKy@6&a~?~SDPf`%f7|!h(X_A8QVt@td)SAUXi&xgIWOeNxrax*Zjme&B4szFv)(akr15&vTUFQ}HC&N~mCeB?N!7%7 zER{+e0?vRjv7RWhSP9!QlYdI}+o5q4M$~>hemO;|8^zoQz-Q<-O5NOij^CAOKsV1V zsI8Qmw7G!E9mEb+s@z#u&_3;YO*$?9)z9(J#29Ovm}3HDW0b`c-Ha9>uILc#LkBagy|5gASQ z>R^-1Jx-bT58od<|B@_8=Q~J0YQIWH0+5fAiJeyLBNI2`Dytb8a-RTvb3V8?8hc9t zsV}5ik+W|)BrBUYy!tNPrzZ|Mv0ruYb}p`$+1t_iSaGupG8{CUOHdvnnqHtP@Xl3s z+Qjt}r^UG6aOu^M_4^zdVh>+hzDFPyF`@Y1#{l4;wXYi4BKHPy1LbbRy$LDC`z)c) z#*b1p161XOOg8PSFD^rj@{IK>oIjknhtX{eZ=XvZ^AvG-gi*3*M0hug@V+yvf)w3l zuYiP+0);YL2C*C|`ig&~joec$TQ^2NJKf3!M~v?}+~J4&*~HP}jrr!i;RJt#KFr&i z(IYyx=MWh$<1M#v+|s_Gbp}v^CzfZ!V%%#qhtp+qH8L#t1s%Rqm56uy-*yz9$iJ&r zrf|6If!dBXaGSf0--*32q1@A%mrM4wy}p_~x+~(6Yo97-Yppaj8b__uiEuAd4T8O= z%3lJKHZFcOnQ-u=!k+M+012?VlU0`8-hFK6FZqUZEfzj4Syw}jE>7gfM>t{wCm79% zYxZC@a%4g=t`YL1jFY6dJ#{wWvG8S?E!^%1mYw~xLW^>p`8&Cwj-+A)5!?t)Ih*)d zx$DCU(Q{z8@^0Ny?Ijyoo1wEBE6_O3|BcEuXSq2&i2V2Iq15}Us*1<9gR$aL1JzyN zw^+{Y#}-?6nK_xMSXdLWvUI|6zl!TKTaPsBZ+`Ocj%EC=gP^}UdNwAT{3U`b5m@2p?@NSWXmCw zH8$-!B;r~&jDJpPkJs7A!6_&}HF~KIk{rVE!1ZneP5Bul@}Ghn3g` zY;zCkqq`1~zT(CHkGE|s27j?H=f1UCF_7^@+l1hFRPj@;VQfto_h=(M! z#tnOy_qAtvofh63Eq9urX`GUcwdsKQ?#@s2{yy`URN$$VnwUAeUS;?kxHGMIT< z$K~8D{wR05=v{^6mmLWZvRP}Tt#{ov9_(yXq%elSz3nX(dbZA8Shf!m@Qx%_Rwhy2 zeO=ytDiXe1+2>!RjoO*s#KAZ#vXkOnLqA(NNX@3c=5JZCHjVL37(>qMk+%WM)N9cV zd$+nVqi-y`8ejW^DJFq+(CtJNwfMp&-6D}>%}gPr5rudQA7#4T79un1eHFqdOVe`; z?IL0Ism}nqdpu^G-xgwwy8jq@k}6^;^8krL{OZ^_9bj*;j%AEJzN}QX4}D2seVw-V z9_2f?hZmUHM-=We%tEjp6ce00^PS>EEp;;K;SLZf*TUdr9gnM&9);H{G+T2=dWFmK z=ZFFCt`3fhEW7048*3i+U)CI)gIa!wtg05{Gm!oqndU8n*tw$xTGZ>ycNt&IZI9`E z5jk$^QY-dMbu@!e7($gC^cvLVRYKQCQ1J~;CY}3RQ~9S-pF2N?TB}JJGu}SeUg0$n z7_T?k*KT=75;x;fE$=w)qN?)oK&)`-V+alQ@eZ|qqu9mXjP_B+NCU9vISkUm8R1Kx z;J|0?s zs#IuDs-DoDBb9ILeo1{D**O-D;21E z5tGz1tlteZubK0cONuP86JMWKA#mc zsTx5%5pw>WYAjOVRp)NUcKSbL+FF;DR`ytlv_$w?Kk$& z&!Zk3-^yzc+SP9xP5sv0fd9cn;&Y-s#;UeoZ80+cou}Szu9jASJ6P)(t;;{3*bTM@ z14|lD#8Ia5{BG9QT`9-L!e$}~NBDstfP{zK_jS^4FZZa>+O5F$HJZvH+fTk`K}5?r zgtO)RW_Zs-`{kLq%};!aJp4TnT1TveJ@A1;trjzU1`uhLs%kRGOLaSK_LZ5CiGdo6 zu6z;K($0!pg-&A19JHTM+_N>8?$p4ulS_uX1xh5J%Y{m}ysCAFr!GCiDY(sn_$qEs zMZUQ-YQ6JyIEZM-yW`uy8!V-FvzZpr+~1RqeJ*413geU|rQJ(^r_#0;=%mSRhQDciDVNOKXeB$BR#Ig-Tlr>cbm(XJ zgF4t*P!&q6V#5sIVU2A}LHj7O53@R4tr1Wueq?c;L*J&G#*87FzYMcymVDsJ)OXG9 z62`d8Xrdtd6OSt8iF0VW!9VUFS#1JI@Ym+(K$J>hPbpS_qA;>VuR5ardd!=&yvDi@lbAxo$AZ2gXW9>Jj^*xsww)+3D*Kp|@*=Z9i;$qn7m zr*vIMHZ$W5UOfDC0#$YbzRR3T^5I&lKUFKy)L0uYZTE)0m@k6xpPjnTD2SQ@pNOsr z#1LH4Au`{ThI7PI`j`6*7(AZMwi2(jiatEZYg;lC_?ugrXFm#*%u;5I1$E@0qWpke zL_~z2KPe7CgF8Hvl2v1jRe4TF7o@-LTu+aA*3Nu^5}>91G@D~uTC965;cUtC%mKz;f0 zz*0_D6UKHuKCWp2{>Vh<=WzOxq(21Yc6nLjS0vr(TM(|!zCKp6^hu&_5e9}3niSAB z2Lbug30abKuv(=1r03D?in6js=n3?r{oE5~Up8S>`h3NRMIEQFHhh#NNrVDo0qg$I zPTG&%t(t_?FEN9(gRh-2gerofTj_<01qn0*J1Tw4Zs5e)g`ahB|3i7EO-Kh^{cESQ zLYj#0)v=yHg^@pq?fhDZe%)kD1nJe|;o2Qx(^05z*k0BcU;x3D%0E0G>%-H(`WJ|l zeJFj!2w~-=+4PKKSE_}J*?O$zzD8z>xgXs2VrWYAPv0)DHU9j{RfC>!uw6~Qr6>V* z%Q|Ev;_G)J?Y$rKpYPPT!Z#JdLo&TdY5%F3d0ln@b9^$&$fp+efxPV7@R^QGsod4Fh!k!dhxnY{>=o%h z-gN@+*0kr1j3=%>d(86H=F3>7Gd4&FyvxAJ5r%MzFeVR1`+Rj`=Kxb5$TgX&Hqj-A zRH}(){`yJ?!eYQ$ESUL^p81Lk ziwxG@bf5Bz_Rrz%x$pS`A1$a}8N%X3i17zc)YRYZlj4$C_Rm**4vACBZvo$*Kxba$ zb4IAg7{V9>HDMN4hRx!q6_>^CydZg#3_TU5_LUHi#fEO#4p(|O0i*riW@)y{2UF|_@PtDURvA>P##$%)Fgo?3<~r3n=E39 znbd!w028^2mu0Elobad*sQs?wPt^bwqq$f_ab!bvQZt?NK|w*P=b(qC0_M6iE5Aie zO|2!I?tP?HjR9BOdLu5L*PQNq#qcwCgczqCkbC7d145iN=bT4rRq3Fvw>|f0dwaX+ z5;SGVY^`zn0QR^1X23eMy5T=x0&4a@i-O{8u7?XdlT~nUm(oi;Q0&~EyYm@yR2bnWGy4F3ktWw-^9_rwYd z)flUh>9D=~;E_R*wF&z6?c4d6p#MPgiU{mmIM_I_b*lA#aGz3;+P=)c1b{?Z7og~} ztmGRYov66X*#YDPgbRQ&OG)%||K#<-km7I}B5C|e#p^6B`vlbF8=aDVM!IaMYo{Wz zG=*_Vm@`g>L0`-v^HnH04}HrGZ;9oJ64?)t-D{Ap_k?8o0K5E)oovSO+@kSlt6c!5)fncr;l4ki!P>z_8;Lr7ZMcwOp!6D$oRv; z@2r(T>3F_}}biIy^BRo5{9GXq{tVd+r<@UkQ*JzX`DU zjP%$yCE49uLJeQdx5Eu#+|SKUVStjQlC>&#X%J@4GU@}m9S@==RgFF4t6TQIE)@xx zh~t^F#1Sn0FSgz?AgV5G7X}2Rq!fnkuA!v6yFq$r5K%z^Nu^u5r9)D>W9XFb5NQRZ zyE%*J{oe2VIX{WnZ1%p_T6bKbc)&nMr(s2yIg?M%CMKCuaak$~zNwWNawqLAdo}jC z@|;a<@8ug149noLWn|M&DNntc%D{N~TI>Cd#$+&&3#e>F??3Ko<^nsRU*P6Ci z=^YRt+csH%*$X;vY5Z}C$20DNXGzP+awN3sq}X6s=?~Os*(nAEc(z$77s_$Co<00B zRy^wQsq2RNUoF47y&240)wxnm;!HXN+WNsu4=>8#?Fjh)p+*X^n6Ii>9lz{Bt@+|r*WG(5+uXl;CGL1@5%oSB)uUC6gX0}g=--`)B1H*P+WuUAcciVYouIUNg$aoya}EZLq({Ju&J5iGB+APt z?3`mJrE@A~Jn_9Pd5?Jy?FmE9HdpQ|C`gPEK(_WDB*WUE z0_wvK4ws&up0C6_L84m~5i2C;DCBSeT?Z2Bg4c9NE9Q?)=Kt<85hQqXNYzjVm1KmQ zoOqh_83G?IfaUlf&{Gvi(%a<#&K3Y@R2brNF`aH!AFst7C>4{DvA@NG<`WFSCjTE6 zgm4$rjMk&|_jq7KtJAX^KNdJ3Fk0?ot|0y2{}bG+gD(p#UG4AwzNv=B%GQTppC9+g zr|*DN5x8?qfQ9>?*Tsf;j#3c_Ak~2E3l^{Cez=yrhsQN|uP#F5yOhEW{};)~yK>t9h-|o}9R~m4SfJAe6=oWB)5J zeD1;thWVr&Q|bBfK)C_z^{apIR*>RpZfKw!`lL>@@&syMmdNh_6|92tio{weSzXN` zS{m-|w$A&9kKRl{)zMiU0l}C&GS?}R?-uo|JGdMp9XmTaA7A47;F!iQ5Hjg%{2r%v zDog0bK3Z0=jc(*3q_QnbX>%BY#`k_*`JOA-U>LS@KRaE`_)wvb+k-Obm?1<_M)nF8 zx3lv80RfTr6+CP}vI3T}e>XP;uj4Gl!SVwk2KWa7AjBT8Yt{EF^6YFV0v-ImL<$X~ zCZ6|C>2l|IZ@k3p!|=vU%`9!fCPoAV4xA+7=Vbr>f(RC%9)c4A^QQ0nY%V}vJvb=H z;xQ!RIc{irFK9shH%NkA51pXB%X!}k;Er>M9JCB{y`yoxBH(#f#{d>2C1o4X&n^xm zzf-KFEHj5aK269YLZp2F+y(*@4;V_Sse&vpp*`|Gd5&PV0{Y?O$BTnyb(hTCQ7Qxq zLQrZVFg^vJ$QlCiCGgUt6|N%sa(b8LJW#KMT<`_G;BaqB@I&S zHEn+e%2&q|g`y|tD2~M7?;@muK{euqG4cgr>H~%6B`_G z`vQ?bjZsBe`Qs@ua(maB#W{*M%iZm*h^Q#2zbq^*DR(DTC7p%R5?(l+yv;| z-0D!ly{A;#mz`{mVQmAh;N>~mpL(?BiqoF=g5WKF2kfu?8o~Nn;XaqOuvi016{-C1 z_y7FSQ_FJQTL2l2I3PrNdpCg+6l5^&Vb96Q@9f~vead2=`>Vf{=fcx6dkeL10B001 zhjNc&j-52r{NuKv?mN@&Jy`TfL4WuJV&Duk2YBzegceVSu7|Grug@m*N(OZel^U6TG))KA zEv!YYvE;upnl{WS)QR84vrv?wOO&CZnW2jD&U}CF{pTU=BX{O|hUcm}ivt3qz#{;d zejhmS{Jr~qarOHI9@twKbIccWJYJwP?Lhdww?B@h#=WN7?E>}Rh@;ar4K=kn*unrS z$2PVA&^Y%N>od75dw~q6J+CTS36R{30Qy_+O6Swt%{X^|HJ$*$?cKMIj-0(GK!f0;18aI7DDYHx~t{dov>f5N|XLiH(MiF-gSlP1jcQCuh*I)&v|jyi5x|hB407a zBqes3{9#eGHGW0V)V{kgsJDcLhxAhff9%vHjTGj7jMdXL_==-R`!PEU%R=*~@_`Lw zjz;=l{%|H%R-n51@Zk3N(somf#J&+H_mQy_9IZ5pM` z+PMhRbi37qmq$-Rru|qaA%L^;dZC6{=2_hy5K0qsTxka{B(!P^WY5!?HXtc3^Sf;F zWPSAn7(;*@-2wp!Ka^Sl845RHtN!RVYY}V>5_W=bT>5hf>vp}x5s4hZ1am>bVF!OQ z7Cf{MD&_f(tz1$DnnNzRpQkv4ARJY#5Dz2Ia2E^c1*b9Rjo9 zOyNA&Lg}-8#)-HfJCLIIQlPBq6y-Dg1_SGJ%5_Vdmt5@&4rSQZ*)VCpQw`Sm;*Wh0M(#^!$ zoFN&cb4V&#Wj*~JitKOQr+T+<>~jiu4p_c$Rxcru#A zg1YQcFoA1@UO7?6`Ya^DoYmX`xZ&tF9ui}rdZlJ&9`K6tFEskQkwm}?N#){qg0Y#8 z_nsXVZ(-*47-rSB8_w$Osbf7sCdk4m*{d~;fivY|d!ksuNMYe~mgqjXZxz8SGSQkZKLb&y-%v0Izk{W~+o>>J210pvQLSkCFMh@=)JtWz)=RWW^yr$GR$Wrygp23^n@6}_7hTaut#qrJtYPp zLM+rzh{}L?NNKd_JKe1dbY14o=5Fe@`(J0vBQa&_yK26|iSq!-JIh76s z1nfadE_WmCRoV$i2CkTIC#jXy(vq`{G*p31B%KP+02?CV<|J?mzB^(-_tC)Z0AY74d&JMl3P` zT*C|CWx)D=8Z-fhGDL4KkJfkhz!90@u~P&roR$AcFo^)c$xrX&lIFr9oKfikq)rpDLuBbfvb)D zPS4S15-cYd6z#7Mmc34%VT{8EtUS)9Ujf~Nz{afM`@0*UEC6GOYrR|x2Y(;R!Xjm@ zPq^g)PGI0V(tu$p4P!dGxJarinzjc*HbArCeMB43J*ZFuiU{c8(xtcr1c5G>K%|Bq zP3jpkWiIr*pMkD8MN0T(&xl8{3QWTN{<^qKJ)+7WuVq_IP$gm%YDa#X7?nr_Q`Zr9 z)EIZmB-`;QkjAk4^D3U;nl%?{NE!X~FR@&jMr{b)Q^h7q&C-^f=a~xoP+k#&+_~hU zWmoOx^$;ZTT2U&>%t8jQkQos{#U=Z;TeyOIxn0jpX&5|vWJGEDmdBJ>*NV*3(3_In zbkwegf7W@eS~doLNu{dID6^$L5;gY&HE55RMupxrfE+lFS!aAyd*ThB7ZXHX7E=;C z4%i79uJF@)7%>?3(cc8{K2h~I#DwKC14mlx;mIraVd!NIId?yEy&IT}6X8CGr|0MA zr>7!-YS<+oO*eN>`Q?`D<6Y-HIhO^p48~$V)|@wxdJ8g*2Q<^#aR^|4FVwu&2KpVT zyswdtxPizKpqz##nH^ZR0dXWxkTC%ICQ#FOBO&3FknuWDU}xqB>AA40ce!b6#is0s zCpn*ibpg=qwjt+|P*O<~z*{nD^>`^N+6r{Ez*1~Spzz$~!Yazk+W@@kXnfpv7PD@i zEA5DA)8Nd@rX?&|A4=iDe!~qqI11wZ5( zuznVtw4LVNxAw6;G)9(}m( z)7)D3&S~6q4>QQ0{*s9JSzT`BbPB3t8$27hIxgI1%7({6YxoR5pVg2Y zyT6Le{%0;*qHqI>+U}ZA>(*P(Nvu%#gX&{5dLou(Sk|af%yjLwU8Np0^Ye0 zHhm!MVo;R6?*lY?vcJcNBLH0r-4|uBw%|)%J(7jp_3^OZ@(CH)NWaDK zN?xe@?XvRnqR|H8P{fOqmitX8x5QrzW{7;Z8a?LLu_?Sb>kMeh?oJ@t6LE|t`*494 z&t6529<1x9Y)DDoey};K!NG+J)Oe*ljz*UUbk9@EXy^65V{!ZZ?dWsUkps%9; z)GJI%CC?oBHDPswiXidU?p-8{Ccfei0+lgglxr%zQen}RzrM2~_O)-u^ zUF1jxH1CeCfs}W6RFrKJr&Gt^JpBCP0tzVFJ4FThiePDje7U3U;U~1MG|OEY7~X(F zC_EN0%|lvCbc%rxFHs;+VgUmYTmd2q;kUEZw(1H&K0XL7A}r?*Pyg%K~El4s;;nBe)@dY5zh=E`mricNrlUT0#8W`ujFB$u9Qp*0(xZ zx`gfUkABd$oD-=fjsliV_?p3E3X zy$d<*$uNFGBB_l-PQ$Z_*8SoD3&a(hh$Qa{o-d%8^W^kax!>V^B103ZjD3?@oN+peeFrm42?%aByoM?w!qP zc!<|n9f08-$>L;dKIuiPIQ-qfrlO{RTF#rMKLzrqPsOnx;={N4_n z1a6qsG%PHGR@{;U4{PDjWU0?bYqC@5&z@O(i-Hsi9UUE<#TpC51-`#$e;5_$l?>Z_ z1j1HWxUR`21+=bPKz&FiL#BIozFM;Zv=dpsW?X=o!#ev$o@u!}El5I#{AmE?-X3%R zX#|-dezml>zBCc4(xXKLi7_}ae%IMg+b_et8N#-W-OnSW5YEfk7Wu@;(4pQ^Er}V-zI)^f#^N4V!sAXR@SI0Nf|%{$pasQZU%JNhZoJ z2%^j0o(Aq(rG%>PDWhi|D%T;>14WEbX6kI{Z^_}M%{$8kejO`=F~?#vk9eUHGs!u! zr)1KzRZrp-8ozTtkE2#_!+Os4(xPw^^(UK9$4D>%Muy3B;5H`0w|`)vKCdPRXQ>^K zYM(0rnfiqNTwCD`*#7Ebh=CCc)myN*iA#Xp9|IRCpDOMun}KA@pwb*3Cj)3hEdwxz$Wa8Bp6x`@-o}Ao-zo#A@beRRx(kKc=zzP^Hn`cty%^R*+A{(4;UBNY3Ghh zP)M=x*^MD^2iN-BJSwaKeXV@CHpCb>XbfPu5O$jHCw#3Zr*_JMR)l7JWyCUH&c)aj zs}7u-U53q07clcA6GVIv1=AbxtV|#G{^Jh!-lJ~{KbK$u1-b@z) z(}|G*GCbI^?m-xKu(vdd`PAmg^!HY!$2pw=iJX62kXXW94cNFvLndeGOCl~P_>}{#km+WA7q#2^k>roD zulv>CtyX6B4^3&MDovdm7SN=d4{u62B)jr{;sSFMl&GCzJ#mCtSxhhzNLhtTwfOee$Uih)o^NL29wb zkU^ileH#;--^X(dqNl{dp`$PZZlpIA+}BCTxW5!D1|HqyZmgF|8u0vJ>t8$# zm6BU@>E`D~qHyUqbq)k{#B$gQ`o{B`ec{JUEHr`)SJp#-MJGFr>cu!E1W>~z8EMk zvj6$KOB}CE1$0zL(z|ACf?7g=RL+;}iF_JSeeY`|mpnguU_vuH3uK0x3e+>}7P?XR zs))wEXJz>`Itt(-MVnFZ-k|qV#SOeuhv~om74aymLJ>QbuC^TxmW15GPawCXaR~;G zYc4=4xuAeCAVIo!j(^$fxr-R6uy#H#k5GYPJZw3^vVFhAQdnwD0+zbE4N82AJSs8VBMi&})Is*FOZwQ&&6y0Moi_BiXrQ|0<fc0Da@5~iMrQ#nRP1Rfkk@r!% zB#Ohy#U$^<39YQ5a`@db*nK>z6Uf=kx$6{ceZ6`W!dzVI`%SrI7G%brK-ECMdS=<()cM7c`<|fSl|9*3xJ=Us&n}Pd(p0p| zI}+y6oPW1^7%5r)O!q?4vlkV9Ka%6&(WLBA8V}DN9Ga=$4o#V#p;FM^4H9|dF&TLk z@fqs>*YV@LUIX5!>!-3mo;U=Y{2j&gJN)zzA|P@mT(u43~IveU}4u-7c_yruMEpz^V@G2Gr0``}h!zYZ2bihaO0y!nfg1Uc6!5{8D z-<)lQ105o?_vV)s_23->e?bN56Z1i)fNjL_fRs)WzjQxT&^W%rL@_Njti=e#o|z<< zP=e{RQv8mgrEAmd(Ncm{@Zg!6chU!@BXSVg)kRXxcjOo~wf0*1rel94KSy%#V*0DG z^hs+kz6b782YtDb?O87*K~_EQ1D8mD{r*p6Ez5ampk)rE1ad)XAeW2Jx-( zMsXF9RuC(i+(R4pb>X{S(=XDrtm=$E#2|>>p48IkhvUh}$_o<}#KX-b1a(e%xTW5) zH57VBkTB>|mhfEXa5318>a^o`(C|j!a?*=E@k4W=%Z@)2lfsuIuXviM}ao4(3SiQCY*sK`Bw`koQ zc!`d+t}QS{pO4=ZPOR!7rabAG5K}VcKtI#}UT>_GYVQ2S(}aJ&W`Re?j*xlu#Wp6< zao=8@s}(gK-dyKy$UL1A6~DF)1L8?T~qsIoY#u5??%mk&+?RhKU0a!2zsU2>1x!28vn2D**o z$GB&30Yfd)T+IKPH@>9url!Bs1V7%dR97sZfLN8ZJIPxn@BUo4v&3PW4-uiQgo; zkJkH$y?tdBl$4Ge*nt=97vaWpPsc21R(q7PP9-fJy%46SQvVjF{{C)sZC9uz5lQ!r zP=ypEftXF11MeT4;_M$oU&`AQ)x6Ul@0&dbM9>Ff_I8rYgPzCwPgtPPV!p*=5~guS z7~BfC%|Df`h#1GKC#;@ABfq@&$6#vrAoa$Rc3G((tvaE#a;5u?A}VN+kM}nZbY`C$ zz2AA-&EieFLBNBN$AeKE3ojIrv|C{p^fvbopM+pLJo){-pkOqa%fIJ48WvW~OaPqd zrG32g4Vyml$y3WUsdyZ{Z#?>7vnH#GegT01)ujw{dZx5b;c$JpS7Qyt&Y8v=k=m7X z;AGA+N;iSFNT^T+wqZYvBZK$TLn@ZUsKDry{TeBV9kX$Jtlz*FIo&7lr=Lw8>yUQb zG+jBa>YZYpeF#EzQ=_Q&QJA-|rmWf)X7YvwiWDpWFH9o!Lr9~`-K-pJ3I{?VTI$%J zRC$SiG%n?@hwh!tXK*;X8PXY-MoC>w>S>6wji(M19)m=a!i>jU1xpVxs)w19F*2hU z$06951e#_b(#`ZmVh$e!ZU2fn$-XvqG6>!VO(-K*1NmQvegP(eBiopzCpE>h#K+MT zr_ntLdWtW>5j=-)DXU~K6MqR|0;US(C5p!oaCbrjt|p|9iNdR3Dm0OE*&qI<wN+jM%d=GpaBwo+xSpb+m);2eeK!snBhBXH{~9k$hBcnb zz7&Z&yX+l^nm&JBuDyY0pRN(x_=LT*txTPX2mAYHJgw`Tz}AO4?Q1D}Yfzf4F6TmH zcegQJ6_9s$d%sr~K(SxMpxv@PpiONzQA=U8&iKNqa1gU)pW>l>J|;eU^~!m?N3M=L z4c@>5s%fCgnMy4kWcE>z{2cglP^F$nzz>g(VuJRqthNs(AZ%I4xuUEe(PCm^D0p29 zrOCd5J_PWnar5v1h!yN6j9h45wlMXBLGmyOFk8;Eh@OCeq^tWMShE(Ad`c^S|JH+E z>e!e@!Ry?T(7{s_+~|_>=QJw^!K5BiVGCQ~4^HV*TjbjH&jqtmoN@YzGLlaaWe z5R<9IZFbd*0m>-N3gav-VCf4}pt2D|J^+m%gQ8T*_gl}EzS1SiM(^^S_OR-XK^%Zd zU#!IQsDc2RNZdMbfXYtW(%FKFVEuIJK* z-oG80ct1LG&_BZ(L0Ib5Crzh5>@Em;&fXnPNxq~?o4wDm=c4TUagRF z;0)J$Vk;g;&5igxG@i<4IeaQxG9j`-OZB)G5WaXT59|NBA>wk!X|7&|sO@&FFZ)}Z z**m5nKSsz8h3LhE3gXa5OTq%^J{lM^RY)|0R_lks^r{Bjp_sq57`?WcW>6fSm!g>Hd9N%Vz+n&1=#Q{I1R z$IPkv$HFGsKyN2ePXAgEz{aiXS#;u8}AG$IJ}F5e;WXF-A2d9n@m%SGyn zC#N6vuP^O(riw~8K#JJ4DERSDh)dRn^vOlxi>8kNbY+qLGYQHgntA05Lc|9QC7uR? zoG{L&`~2jjM7tm|DhdY^egtGyb4I?shcoLnIB(-C<5H2JJc=h~Ro=}ng5})sjp(Z! z)=*dCPu=b+>z^8PjUR1^xb;XPUO;tNbXAug(k37qXaleDKWAQ^qJqVw(G)x`?`x^P zcvUm1J}Wiuy-^`$Tj!83KSe288m$+?#yf>WA1q(@`<8Vp-28}Tyjzo)z11>=W_SpZ z>m=k-|FHEVoiGAA1_@nhlcCcA*hsf|q2^1Rk|g~!%9b|W*x@kSwNu$=t5v76&dxPY zRbOHB^ioF}fN_}edlFn+vwUnrFqn}a4hcc490AA^qBE9!D46Six;!+m97$w160xJn z1A2rYJ48YXPDe}uBOGUhp;^o-KiN}jmps8-fDa6a1!B=**}|ag`-;z{_y!oegFUT6 zp-1b}3;&KoAkglipmu1UP32`zaz4!LjksYqgd;a@oX=ayy?DSs6(C#sobJ|bJyEul z&mbd5k@x%LTLpZ^y_n%T@#m6hWPS=&d05k#%CP7mT1kTU#A*rOygCPB!X`JZ{IE|^ zP?y20wM>UedvP55g&jMbN4>&tXovn}i*AXM4$2x#b^np&5^rso2mF62z&|R+Lft-wV z4AKs82J>7WiO|L>vk%{cJ}HPd06IX!0B2lAYU-fDs7gs8y>Ls^tl{=v z-QEV1Z5U7jrFC zW0u;PEsshxr!|{1X>vAi4VQbw(;l9W%TogX#rNh@V9cqP2{-!`7afgTM*@&mA^^pu zq%;TucC2XX=*eEzn;L&giLZH?+Si?iP609<9}Yu9wP`WGx+o5cm>(0nID{U_q#UiE zEHs@C9eWh-RZBbvee2DnT06v`TO9sV)glX=Y44@lwv|IPVoogF2)d^3OZ@l^31Tc{ z!tz{hZ^Ypi?DQCQ8QCd~5>ao>@Ab}EzKY`vY=OpKiPO)si1jrt4S`;<<8{t=M}zB5 zD{j?vp@g@qpw^OT_1*B*N#T2I2*!u=de*i=LpCR1YBWC|ChB<(5d7W%n*)Z8KU83x zf^~0ZInXk}SCy{7E_=wsnZ!qmjz;YEP&%X*Naa>)N`^?1R0s_bJw?t&4gD#9Gxxc=My9(dl?u4kX6ojs+!@4$3Rb?oeT8+D+H^CnDqw700!&I zA4jZk{CyV7b*EAs@icm6F0?cvWRCR&J?Y^hj6+k7taWRjkVGDhnU|vT!K73HPMr3> zf7US8`n%w3x^Ik4huBFx)fc1rP`^;j4ke)$6G7AuK7PGNW_oQ;yv^zVGzNv?NuJ(R zElfhJ%!s^_D;T6dXi7gQrJ@#ZG0C0){ZXQxTj#w*w!0|) zQy#6U4P|sXCq|DRCg>Q`F!pJWMe0V4NsrLC%FBa-*VH-#r(GzCrN~lndR5P`{74SI zjF=R$wyd5{JI^`N@~Fkg@C#zwvnBHaUk~h9(#v^$3g@tI-AdmK{znk1E$H2`jTtHa zgzW?kS-1dd&-_2t$Ya0hI^r0#crOYA`Y68`Uo$;Fu^vIE0b=LfNETifOP}<1DiA#p zd&N$236Hv;tA_+@1K6jCU5-{TmyC>z^VV30IRb#2_X$;F*wgXyUMvmZf;*^De(FHJ3yDe+QK;?{jH$G>o#q03dHX z)_`sT^bx1F_in@;yvVP_*G%e` z`<^--7AUj1m3~KS!#q0~TuKgy2So%eDHw^6T}wM~3N-($3`}tm$L_R$btR;@HKNlY zV~k0Ik`e$<_UqVXfq4}9!4E^DZ{+$7)U+mEnj;`9w9puhOg3o6^}VkmyxFAj##6Tt z>(^j9n zpMd`gtttZ(YQLx%i)h)9@R3g8Tq53LfF3{If0}OFzfX6R)#?S+jNk?$x}A)Cd#Atlx>gw~?n{ty#JYW-|T~qrif%A?Nd*#%i2% z;@b@wLa<$k1!3MGoeJ>Fw7BHCwfD=|x^Sy(E zhoe49AQSF1k*E0a??~YFSMMDSRgR=CH{h)S)qky9L60{@h9OgSmj5)1rY;rzpXlQJ5S=rit0jt%H%u>I?Ow!mmO&X;psu#!s zhGKv@p|mzo)wkONv1XADs7-Ttp!Fv1xZw)($=h*%w1pD*dXoSk zuy5I$OGV$5t4l3njqnetPDZF}wIvl_u_tw(1oSrFr@oWt(+t^^``N1^I^|F_$-Uz+ zJn@iRWQ&dqWmVluszk(MT8gukpq*&Xp4H7Wa7F#q4LX$uGQQ^TGt3REZ0xH@_`;|9 zp15!Zoz0###&$lDjbwF{RZM*rYjr1VU}NkiDa@rPDr!)@8U&ZH_!v?B$Gr`(iKPMJyDe6_sb9W7df)wX7{gV_Q9Fm z1cqR{cfgJTz$2bCLxEWY7^@GVvj9hfW_&OX&wHAh%44f$WtCSG2u>)$5KO$#(9p5+ zF#(wwfU~LSBWKCF156m66x5;|y%HP>k&qdxfBGotYLA#Xb+IceVA2aPU0pvAGs6b5 z(p`Z=*y|Tc(u78AiNM|FQOEx|gNobDUVYouAJX6~vQlld`eMRKW-Ob3u1&<4E^4mG zrT3I&{|<|!vsP$(dat$@&=q&;N9{j1Wsla6`UMPMu0OjIwtZQ6c!lzo&7~@g^<`OG zarpOgs4hMmLLECFw2qUskD3KPU;WCUnzJ=OM$l48;ic=AKfT&pO8T}^-tvL5)|k9| z^*zfUAO{cNBbXdpM0*k>bVX)ed9kKIffNJlwK zGOdamNG6xLz~OT@T6}DfBn6#@oQfiWQWX>!W-q{)1(X|~a-aeN#W-<*i+|tg$?D_! zHsBwqL&&C|=0X?7keR+*=nEL*{x2|_z)w8^iAjSy zx<8^O(?RQ>zIKA&XMGeERLaH>Hs`;|T$XOT;f7E3y}wXr2!}==eOZYRQJc` zA;N!GSmCd^tvVl;Icqc|PQCw)1itwT{mSqp;>B6o$5bO?83BQJzW-e#K`9|AsouN` z^|M8UP~A# z{1Osc@2~$oKHewbkNW#}^?;NF8#~ey^}k16F_vE5dQJjz6Y>Z-OAn7GDzq;bQ6c{8 zQ2-YSZh-?EJS#`XUp(N(g8xb7Yi<7dGm;@{R4{qBB)nPf4^kN{5ogB#LBIf0D)JYg zU#0e`#PG*G7?5jH3kY1|$SFsLhcCjtJ>}%&UjDPSwar}yn5X*~wRD=|{svKHO4yE< zkbKxc!K;Kn&2yG9BQ5LS#ai0U?th}w)ecm#_WAridR6%GxA*sjA(rkW-3!*4lpg>U zl0NUzp|QlAz4p5$EGA37zy-sF00`u34BM1QrT(fB)y||V;TBc$ooS&pf^9CVdRJOC z9@p3mUG$M&i@FDqvi$Y$OYMF^T5q*eZ@oRLvvdGM2bjpLey$EAkOK*liy*U=L`O#- z$`eYK&mJr_&n_>+H1{fA0|>ZZg_64Z1MQt&(1ZfNWun;6`2(1B)$Yj4+tl2o<>?y0 z1eiw~_|k`iFC6&R*5S7Jk8{hEn`ep!@s;6(gVicI$K=a|d8l&RVUBCB!SK`9sRw1- zTF8Ap0~#q#5COvvv-rp$Xe*Ft?vx%J2WKZYzb|4cI=5dRj~4lQxncy4uVwxS-kQ`s z+FXgOE00z>W69eJtulJ^hSSJWIpP~NwW50hY}vgLz1a-xME6pb&$Ndgqb|Q=cRBSo z?~Nz`7yB^3z{LdvI8cv8E?|RY3l6`Fhh3AWZaUL-3@EV@_)_ov!q6sO$c9nn_*gWC zgc(E6{lZWP#yx+iS6=vu;GKOSAPBIU5YCI1Qb5WMh((rCpibCG+x9-bZ=D?)NWn+T zNs8wG_wy-_?fLxPZtIBQgK0h~qa#t&cmUu|6tx3Sw05^qn;WQc1MV4^wtn~D1ntd; zW02d5f0GlP*idn)XO~(=whmqJR}dGLpWM4heAyTA#UgynzBv#x>76$5gNjC;v`$g= zwM_UD4Kmi1zt(8-1J8}~W$j{OVjILxSpRL@IALPe?swcU;WRN_-bJbPJyGA8mC7N{ ze2?GH5!JK(r|ab3Q_Or?oI0K|9ew7jMLM)4ezUl?{k}T-kA~@tE>RFY^AYlPL50BP zx8PHTzw+)1)+vo9?9+cB>|jc}KPl{LcnMs*a=!VC-CtTprNinRhzazotOn*)q%18h z0W5vzkw^FRy*r=+YTg6>p7=M{CG;?!#R#JSK|zvFdI)!-RC>FF>|{E3DH>hkI2B(j zykO0wtL3zIMJp^0+A^UOzB1`Ot_G=Ld!>%%(z@~n@1$BA7yl$4y=M7I{H`1|cW<1= z#ID5>D(vcfLFA;EeI5Yci}CUt3aM`&78V-BQCB7je=CFWhQI#GfpULBREVzxuQS@p zI-JotN2LpbFYq?LV)R*xAgxedT}~_<-NI71FuY?yh)-2jee4NjY3f|9qc|fyf1hys zl36P)v&2b|0YTeDvlKIoV9%N+;OFF&yDg`s>1C&Kdip)gTJ`N7%V7^7o*lHDsJ#bn z%`S*LB!`b=R|QEl;D%}kIU1A3(ewp|<(F)$;XUDy+>8VGO_~2DEe(yvXOJ-4P8Q0i zb_6h0ev@i>scz}|VW@9*lxNkjs% z^%f~wwR6N#)FuXp9XQ#2oz`-^*ik=cF2a~87Y<%BWHO;mtkoLqj7Acf3g;bU_D@A8 zVb?U4V=ycdY^wydu}I%tX?8u3&0Hv(S!W1BgmTk_*u9)?FONWrc8&efd9r7%DXjf% z`^Q3rhA|Kr+S-#K{*jQ7fSuE?4x>a46AujIO&sk;)Nh(rMiSJYJ-P{$MapV}=$ZW2 zx~0FccpY6+*WsD6i9JU~&dM{TKWesw zv+HV|eL-mVMP!8HjeiFq!s(c0l#@;QD~=4>j9TpSxunB?{He$J=fowT)>x$NvjV?uxRE$?NjzeRU@az zyM?`KwplEmUjXyn_Mt56)36Tv5#ZOBjs`zmCA%4?neD>}8p1*&So=Z%55c|Hb}#O$ zFP2fClg;+G^-KSqTF^0Qtm)8KTXBCw$8?w59rE0D6Fcg1fz5{Hsy7=uNa(Z^V!G2J zlPwI;M;p(U+<(Uy{xEHJWj_^zdadT4q&J~@ISs#@9ouHS2RNs)@P~fT+H?eJD3$m3 z_Yf237&16Wg#hCcu;teQ&zckhnVp;4f-keOvUYWKX;M*BcbIYh0w#(0Ugq2>0Nkpp zp<%{bHy}b7o?lqVBrXmsu%tb?r68o>6Bf%f71L9F^uP1WA#q2Sw3Cn7}|a<;rUU*S;oxIVz0W% z{nxpsQvLNjz5Xd#n?(I5-fzrIGLqpaOZt6JnS$S-!M7+_P2+mHm;NsK1oCIwGIyiD z9(u9y-I(zb>BH`f91jEGN!^d}-J`j)yz!vlWt*$aSqxq}Hd|C)LFMuY#!niUGYNxmrOfQs!4^DJ=vUsJ^ zQko*25LH#x6&Eu*08x^!b4hhZ{C=OZzi#<^KYV3=(f`=e?o@c{>#FC>kIX*bSUI*YEOQulZaIIN^hsM zO_#JXGwrNS9Vi=ks{k zJ?-37l7p^!Kjb^-pLHad#KC=fwKnh9>rEosRJr&0b?x8V1)cC51XC`MODC*-n4d*F zxseSe3cNvHu-yim(Arca2)2`!N%xE;MB*W@5yhV#BVio~&#>Jf50n~JiZendWj49& z*%?mk@uP3*`p3-5QYg1`mT2S}SHl}&t_ z@Vy=fD!?AN2K1AFzwa>&0yW+J_wNR<2?29zU^N`z$%ZpTo4-YH06;3RDOCJ?01Ds7 zQjwrx`};RAi>2>?02|FGPqDGk(Tj?UW8eAeaeG}J0>T(bzUw^vpy&Hb$_Wa*=A8jx ztg46toC30sPyfy0430DFk71RGeQ}@SWcDA>Ir(I_fs`feg^0dW^@9atK|-xrn|rFU ziYaOAOVSJbCj*vA#y$jV{V%MgT3fOFp*b@BJ50S;;&gwP$y0@%N*sv?pTRL!11*-~ z_v}6C@j64SbY~P#7_EaS#?PCn4n*Pd@(uFgq4 zY4idj+o#+E9aR%2v*~4)vj>!%cZoUhl@Cz@4*7AmZ$9Fn74dkl_u%~8-Flk0kEyL2 z?VuRyLxnND0*=6ZGOQR>H_Ni`BiY%Ka^%U~bUW%%M7Oy;%JoGXOvp;ADz7fob>LnS zQFR-KvReM`Nb;|Cr&$6Nw|98|R=7C1{Lw688F(N;Aw24uiEM{_-RpuJxiIkZe<)G< z%eMXHb3lsG&}Mq~9xn%^`cPfq^9S4e`P7)SXD&9EIbb*eUeqHStTF~Pg_tkUP+5U# z@FD2SgLn2Ca=G@nqXHa88v4p_03KCDX-@+Lz;S@FQbwV0-@rS}0l7mb;R_6uxrJYi zA2;t5)zo@>Kx0IM|JQ0b?8_Z+j*K~W1-t-P!JC{i07`jy5tVD)RncAHMjtQV%kiR< zksE^l=@MxX*CG3TixvjMm}si(>*y!%G;#{8iub-nmVe1)a&oQvK7q)`-6LY${+llP zYZyvTNI6+eZp9^pjf>ax3RO@}&~?7W_*wjN56Z$jyz{}XwfKMJ!MjGJDf{l;k=J!1 z&(^=T{4uR8HAEMozFZ3;8-7lx^c9gs#yJ+3@lc49tIdw9E&r>sLm8JzDvM{e zOlbZ77}-Z1{o=awu;+}n#gN@8t#Ak(YX>~(z&5VYp&VPC_@YxT z@GEKPvxJ^Q$%prg+002OG-Z>E`w~W)=l2&O1V<|#z0AT$u-iE?FY}5yx%ZY`5k)RL zEPq7eE!lWw1JK*N+F!?*@ky;E%&~3mA*;ADJf5{9%J#KQ0QO&4*l(HDSf*t11YTkI z!)?j)d4Wd}rp7BjXcpctuxE4J)4I60fR0oOr@0gudwq^w2@eay@M7p+`%(Y<8sN)8 z=UJYD2{3l^JehYG9w}o0CrrPMB!djodG$*ABRU2K@V|>Uq$7R5MedBc19s76YS^XI zdM}7A`9jx`G{H*}LPCao)zGM@VC;#uFAtMlkX5N}bZxn~`OK7+un!P?$R$mF2N`Zx zXV&nLmh`M!+Z1QU%^|je&IBT5K(Qz0yx`5472!CZ)-R*rGsws67xd_CK03S4-+l`B zsd+F@Sv?XJA~aF`4&!0>?`yye)fQ`mUATst)3IoB(tb2<;ZQzN3tfeq7{cE1ko}aM zvB`Za!-8XkM=eovzuIsVo*T5vCSm;Zt1z$gq5L6=j7G>XB#$ZkMgJ&$?iL4)CJOl%T)mfmtvHq{Zyo<>hr@NCe(+mHV2k^52 z8t;I4UYvK{Fadf=uc@1GFtp6>zrNC%4sH@TU}pcBbqJheDgj*Nq>jA zM}s~x9pNM=DjZxkTEsmbBujUY)o?1m9@H+t+1&Yt1 z@hQs73+V#8jI#8v3kT=%rWv`Xd@A4A7Y0%6sNx#yXB`RG)U9+lrd%~=%xB&=WiC4< zs#tEcBnx;_Q0{o={#B?cY!2dN3vfxrM>k~ZK3d&(9fuTk>veb5YQJLt)fT4dG;Z&? zER&Cl%I7dGGX7L@#A)HISTE9OL@r9T@O#O7Mji3k9cK3QFWv@(%PTS)xc3=Fvx{;x zkG2wDdG}d4u6_`Vn0tnfo8H7j8>Gbhbg#p>ik|6h(;cSZ9-qrq{Y{G#PgR!Gn(b|~ zTQ2`%%2Oq{{W~nGwN;()XHQ8@g_~G|{}$TvdmRubaz1?Mdev@I)tf}dXV;uCVfe}y z_}Zw3`L$UHFt_yy{;r~`Do(G&Flrht5)zT5=Nzt9&^`gPPK%r1XPFxUw;;0nUr`MK z8I%GTVcQGVd*>9uo&iEuKIy_<<;(ddJfz*!D{qB%?(>ip6B7_@%{81H4$v;PvTG>D zn|v@r?Uitz%;xG^#Ol%?t$ozBlIMVU^uNSb`><^{8Vkj6%~>1cNy zN1d8axW^)>F4Fq>BEheZ^Q+RH%mYPERZQAvQ*W6FSV_)Q{5V)jGr3Z;s^2DyT+xpK zyaSXrJ+1Qwm-U3|dAZrm5}+oO=v2uEvRCSC!^H9LBbaO9CfRyW@#&LAYtYSFOroGt z7#WnUf+7KIhSiZiBdyHAf~)Ue;`wmePxAl*_<8Hk7k{)Tc@_(PL1{j4x8a&wSa|F6 z{#bZ6#a^&>QH_a+>G-=RNcMPeR<5|PqU4bOmaE^0=YKP@_rd|K3`gg9w>7``DJ3el zH;|w`wi+fVBI&!0u|wQ?aCX{)6EG%snmj&QtK`2+ z*!7vfokthNghWtWFJ&Qu8Rs;R-*Ql!bNtR2N}SV;H8O(VH~I=i`J*Kwi(J$KTGod+ ztCpf4dsiY(7i-IAEEe(mDik9O``5fam}Y1ZaO3dtR@mck-t1#vJt6A5K{TL!&nLU0 z5+D2Qlrp`Yvd~Sl_1mxTr2OKR-;v?NGo42Ex!*Ha_s~)vJkxF99vJ=pfa8@Smw~Yx zy6sgv-{}X<7i90d68lBXt8br%M{@pHqYT!j)VA{^T&BS=$}J3w@WBC)Xlk63)2)uW%32 zy7_UotE=lut6LUI^#F_-t6`dJG{GjO56KUBFjA^?!s7c>&ubmCqoW4_IbMsh?V(ja zbVbIWhG{d#(mc2vg=y2;jD!RYHMO6+yHrF(n)><=2?2gAFJE>pVDTssEdk{wv8KUt zkg{?d$iKjTaZS6^y@(}Oy`>VVC&w>!Ka?GZ>EWE|`|f}ULovnlnV)0>>az$tFyrA@2 z5zY2x8+1dC8Yj-#x+BJ8uJiPj)u+5IwfsIkN^y)7g-%9rJD*U-A&0GncpYc# zRoLwQ^8MO1qQ~5sF2mCl2uCU-KP`ODC9vRX}o(l`cVbX7$9!-588|-8~_*iG2Dt7?aaBO0tv%THO_L^6{ zAI-zV<1Ya7c_U_A*LN=XK4mUzPYn&{7Zw&qM%27CzFz))&;twu@|CZrKe2o=faBCC z2I?e6M)#-xn(m=_l0I(WPKMh_)CpyKheZi|AJu+t=8wG2y==jIoSirI7b0HtFjIb} z_z}Nuow0iQLTCzIps>v0vwKu%TPvCrm&)5?c7f>H_Ez6$U0sn{U46C( zA1Pa?k$3}H3$r0D#P4X_D`(fk?9Fy8Wz8`WVk@VOk=*pmS8{qH6-qB7511V3ZX%FO z!wY$(dmFLs^xk1G#-CRRHxoPD@JYhm%bxpuDNo@dCibF6z&j24BnIz4qhfp#wOdow z)mZLYKrxK>PFZ7mJZO4~{z%*Y?&uT~pOEeR`)};M*k=hu1Tk&Ie}waKUTS2!?T2gk zQ~kYt{!r{Yv5_lVTGRqot6$!JLEI->!f37YHYeI2%ok>R()=~34b2Z#&~?!l?HGP1 z`>0Vmy+wOdfNr~u>9ZK{P6l&5ng^GF?F=xd>&?yMP3Id5F+HC>f;=72c!H^JF{RC$ zzhArgi=}&E&viMNy>ZMd+{AF!Yc2i9B=H)Bxb(}Nx;03j*CqLY#|EU%SCECC)VHe6xSF+d25|~q%bd~H6O*> zIT`TFI$bu4DBG=%57?aQ6O;YZ)diM1bOB?C$&CVT~tGZfc;F z?DugGX7wqsH_@>pJ$Hg~nCSo_+80?L^okT{XtsMb2eW-Wch>uQIHDlr7r%;P=&!ji z$4>3k$5=FAM0*-&hb@=xGx@Npy>y&`%O;k6_^2}qn%7r3D&Ag#2Nd^DB_6gA>*~3j zmg`qbYpYp>vSW(Hn0^Vz@xT>0<_k^bk&@dBmUy4MLON}Z>~is?^KeqdJaz#qX?t(a z!Qv#L@3zG99@@JRvl%thmqk)nT@Dm}+x=74Vs>YH!81tD_lF*~-XPDk=A3??6Vy8H zwHQGgf|L<`^OcBP!rSs21C){;lqWocrq!G!IB&-u1+<{i+YB~Puwx4Nlog~Xy--QR ze|Bp}{*~vE;?E~??24+!R=GA7e}l`k1oCdvp9X$AL#|2j_I&ibf2yQQB|vt3{qt?~ zA^@i`#4h2Xv+}|mYV8Wh3c76V&;02-{i#WfRdVaV*p|2ub-rW? zA_n8oiWm`Q_C#`-u>(4!Jl3WAL`g25#sVjSjAXGdAYjSg5UL=n(pU+^4r7?LvnmX@Yzc^YVh`h~T-MX8X5 zl@+@RWGO|?_u7~arfo~Ru_o=RVQ}fn_|ycH4NkY#)-W7sEgxICHv1#Pr1Ezgp%jBr z3PiI!12KMnnJn*jM7aH4N8GGli-@=~Yo~f=ZowfDS#?LxjlVJcvXcggjO4Gn@eh0! zWBJE#0HDL)oY6Kx31wf`Gx$I@3rvPteDe9u;*1}wnncd0DCsR3M-liQSVX+a60XL# z4rw|@FA5Sn46 zNq)13n!=y`dnT6?%W$d2w^SG2g%8iT$F-^7KWL=zpMTraB%Sc%Pf_l=VoSRbO~RVV-@JGTxmvBmiK}`HsXzc|9-qXZzvd) z&_>KeL_!kg4hFF*TS2ckHaAmKQ_;lvb0z|yH*4;L?Ll2<9lH8AjqfzDw;S8o@usb# zB36qUT?K~RlE`y>iP3MX+JCl zO%zq4*n=*0Lcb4~&XCNK&dd*$E3fEO(|=5-Vh{>vRjO}%7CA+V7Eo?olf4XTFK})Z zei9u$77!XSJ>Y(klWf4iuDmFfSX+R7r6dS^nDuolyW{5-7Vmr~pxpW8BadTB*{*mEGx+iemJI_)&kxsLN}6Gs&p7@^5MoB_(wU-qyF zOdb_}uavFK@2h4--0Mse@OkIDy4UfUbwbYdztJ zBf3>yc6|VP2JyV;8jDVi`mNtixkK;RK$cb(;EwlZz^CV(?8j2leDi)IWxX!8>6f6H zuhX0M0;!QV7{s|XQUxi}9>02Na=%bz{#?@eh0UpYn60wI=(+J%z-tjM>23Byc7&Cm zAC?>R2O%frSLn^ApHLR%G-a5Ln%x` zP7e1Jy4u=uZz)xXmZz|9qu*F018{yy#bMONw8_?I+2waFz;|*p0px+ezs)S2TjQe%&k^PQ?kK3ndy1S+F zW8|Zbv!@d+#C@=Drf9|bj6+7SuY=2KCG`ysn^uz0qT3^9 zk)5I(3MKbFt)V{vH_~y)_*m)ag6t~ktf8-`l9dWgePZP@5X4sDFfJPZ3v7@jZtbX9 zLE=cvt$c_SsD?3Klgr(4D_?Hp@+Uv`trzlnm!7`8v~-u0R7XvX=EWmHLDIgp&C;(s zr%QX7hLy3-#du5}%BB4D9SEaEnzrX#1jJkMePov{?=ap_Z^ha=+oO$EIpu7WhOmFo z-ii=>UQ4!~-KRvWmK9G0nN)`s>m!GK1F83@EVT-z3h`;6o`r?E&=f0SI4k;{%Uf4W zK4n^TG0#11N(W4tNFA3rGM2jMyxLbWd-q0=^BCSo8=$_H+VgLoWM3;|4`Y-&T&4ES zlJM~pRdDN1yKh#;-u!nc*H@mgmbRefTrA-DfcAJO9oi&f@vl%fk+*pI-d%N}A;MN} zW??W0b}*ncwX0G%bNeJ)~hAE=f63XMQ=ZTqH)z3 z(A!OQ!LDH!%Xvl7JO2;ePZiYHPj~o#v3&+@u`H8Ww+a3KMq@f3@i1gpRId@Sn~1FT z0wbwYL9;Hro9TGczhMR>sS=$D4M@736S@v{Xrijg%AyzXBgFWZS;JP}BJa`u$@51Q z&yvqF_v{lc2ac*w(?THD$1h}p={s;=_pJluV?Ide6_l2SI^a`LMQ1*334@!~;^o%n z1Wf2CWhrEHSeRRHkaL+8Ot*5)2G5w9B9MCkGjfSwI&v8X_5j&0svuyTI_F73EmjHpEwH+4G_=C$=9txM_rymkf`hRCE z{P2|3K^5=`nA!Q6tXVRkqJXnNsIy7#FJZT}U&QVZ8JON$9)8T+y68&jd|+7a zBU78isAs`=R{8i!;xrJWEr3#KuI=lfBm0+|zm8)Xp_3URyM7dI(&E`ExP{PLz~T^d zwR3kT)5F|x(#=5MB1q#XUBPW7zMn`Y7`RfWUHdF<)Q;h?(Gt0{Tb&buhfLe~T?N+w z_L9X?Y_I9JZ7jV|@~Ul_f4V&QT!5eVP(zn};c4)D&LWr9JFmxOV!9g1qn7_-9C!R+ zP1RZN9}z$O$4Xo?u-_l#ljz6h}|he}3Vl*==gC%>}J zaDR5M-VcA*i%w_!Dno4Vn_j=xN(j^{ULPJ&Vm%Ge)D{uu$>o3CPl)j65n`RfG30n? zT4B2t(ei}VKLpC2tUiB}=&r>GruAQ}Sl<49xu|W#mCHKP8XSyA|n_cFzBY*UaxsTi71e%4a%hj$ zb?L)Q;N!_~!nW&Ek=2ZtIQ{NEymL>kcFLg@+0EUCVN`5|@9A%0?yhBQ##0mbw;|n|}7i)v<8x zcykXq!RY==EEmdqZ5Xj@3w|@C{VioQ_a?JAEG#^4HTbF*QiPzr!V1$kR&WG9TU^I( z>nP4?YtP6+;UB>}HT*vfzOUaq4yGg$`Ygn!Np_KgT5i_d*4l^K!6_s72vouNKC@ah zv!WlJNNgXR9kGUEE0>{aD(?k%Prr0xAsY+Lbr(h+?TD$_VEri!#@_GChfhR7pc)e9mKj8;W_M zK*e&fI#DGUJfhi;O&UmqW;ExEAHrcf(4R?lMU&t!nRV`c80)3$?#@>dNhNBqKV4K% zPzQ8QAe}#9-#a>L+Ns|h8692WwKO*$R%IRr8C5FJ1>`YWar*xL{`~9FDRrZvEOD67 zXo7pmw$@g;-mviS>kmL9M^y;Bd?BOBGCovrz`#ASitF`AVi;$d%b!Fb&gqouc)f;byhf_rk zZZ5C2}}D_HjDXM%o^;-;?5Pu6om(@EpDWJL!YevmK7{sof%W| zY4k~@cekd7T$*zdtqiK5fKaLk)}P_M`Xw2?I!U5~S2ad;%(6>Vrn}gO4MOfVI0b10 z&0JN4Hi1o%5ZmpU-FC>M61~n1W(2Pgoptv&4@K$$>0x=Srk6q32Mg=8~*z074rjEKfg=JDj($;lryj? z`91fHFm(tVJ;7(k>ZAzN>NgY>71IRW3SF@Z^((F32?s+5sS#=QhK$FX&H!ny`%iv3 zv?(9P$KF3@Qd)c0pEbS`}x)}^pjrZ$NA=yMQbu%xZ6@+Nb(2XN;!)lK0h)^iWM9a zQH}D9t2X04e=mb-En=F~HL~(4;lXb6gU0T~YIGUjwWmsAkxNQravQrKPGqophDJSx-pert{7uzt)s6dry z%;N1q9^3J=8Jin7iOJjL27dheL89j?GGNM|7a z`RUkO^?d7hoo9dTsBzWNs$NuSq@>Bf(bE!cJ7$ET4T;dZK zNhw$z#!|Op&7|s`U<&K^@88e_(JUe?&Z10Wx}c}02f;*ZYwP^438th>k{DSpnA6cXg{C(@2g26-1Ypzs*6yXEFP>|M71Vp z>?|7^cd)cn#vZ7};#s4}-#Is;ZoN7%F!K6C5W|8ZkuMR3k9ku{UIMc~?j>yu2n-^+rY2cUQO@6O!D|Rl| z?{~{XJgb76e%N^ow zcGg+Pm>J>zA~8K@ew;{$x>!xevdCI6DtbK@w(rqHO*#2e3NlJQ4a>ko^O^q ztxTrhMOI1HPFN}YU2yhW`z&xrCHd}7agW0*2aBgR*4E*+*rcy7L@{k2_4M|Z)-R1Y zw0CwsyJzwIOUPTHHfDQzUfv_<+CY@vx@yhmVo7-8tDyUF-%gJ7gb_S<>>A(+_gBl= zGhDRu)-M~BSBofVe{gaYJ^m_Yi%R-Zh4e`pKIMn z#~^9k12Q7nQT^5W`R8$6_5za^BcHoXw$U3ZlYM_Xr?u=f?&fF9S=;>88xyE$?Qc-X z)OKlq*jYW$RJ{D@Tl@RUUV^QPZvn;fNAs(PU)>r8a10)(GWsTbvTxL&B_yi1v@PYQ zvU8ahy*%$(`n*JLNgRx>8#IewTWZJc` zg1-KlJzMdrdTrAv6>Y1{{?)ow3BsHl@y?i%A~GI-FpP-~p}Y&#ka5p9_CSAW4Ky5wm~W7hvZ=dWCw7wr7QnF4=2Y zh>!8}3;USO5sb*ioS}q)Ly^A+&+0d8scCT6nE(qAD|)cTm3W473rQIMW3!9#E+4xg zqH$_={-+GjaYwDw5_qTF0mGI(oC@~FRwG0IB5-G^#E&|bW&-;aRq$8Ih#0o|oSzSx zKjIrtTg3AQ=jW+j%lc!2e~V|QiAQ@883r@i9SQ#;jr| zEDL%-MuwOKA9qk`{yECDT|3HHT|3H9Mm^0_P*(ox=iv2@8t1Ilp(ZIQ$@HiCeUxh( z7~y|5Fnrf{3V zXHT7|U~Sgh|D2w}C;jhF&cN#RUEJP|nk5dD%p3Ln-9bzmg?@~NC-}eLbFz>23wu!5 zoWmm$Y`M9cQvMvK$)9t7wqEO%L zVJpx_eOG@s3<-IP*o{zNd~NX3Pk4QAr$0b4Jx|g_qj7~gBGSR(Q&!0ne zG894ZhB9NrFNiJ%T?U1>zaC$e4+Q0A+*)jsw^wq_%aaZvVvs33c$Sa0kh@}?-&6cR zl)b@m$K<>_KCCU=%IiL+4VvmqtmnSUw_mjM%&OBLTq~Br3TeTb_>#-jTNe`G8oE>9E>ep zG&MHv)K~P0;E43ARq4*99y`Y^@ z=?c1u)=ZDznLEB3B~Jq5aKu%LB6NfwHB?1`1!#CadL=4su(BKTs8{O!tp?2V@jb0c;dPAE&lfB&o)B*&U{ zh$9w^?`YKe=ltfNdVBoO%i@$>9A-Rp^w%vmRr?eX4TMgU#5PqgVdkXE7g@^RptSV! zXJN2r`_Xi^A7@IjFY$va2XC3Wy!#e;%7}tBC%DG${iUV7x|FeSeJ`mMqKghTW%!kf zBQ)txJ3T@PFp=K)m~%~mhhu09ZJ=baW;EF&95}Sd;5AiWFUZVneRbI!|K2f_`~`S< zQZ1_xO%X~DQzOGWqEEEcHprf!!4-{prkj<5y{G-n>o?E(JYMHkj!%LAH-N~9hx7pp z3k+Yx)IW0^`~KZws$9Bg91gaGZ0SU=S$Sk+ByjB8a4@`_H=bhtRM51}kn}Cc7JPA5 z|02`xgXl!N=lQT-gP%4W3}-90=YL8VuU*^bvYgp_9~{c9W9T3$%-uYbsQvelUGITv zcmy$fNO17>d`-=2tgP~56mj7<4!1+A71J~K$7cuYJvMuIIe)y|P6%2O$1yLHRBiVb zp$6Ny{9v2>fl+4jm+d@RXb>8UHB;ZcGp?9A#c7`l<=?_;m^0AS3<-Z0z&~Wg1NSPR z&DP+)%_b-Q7YnmKV{2a`bakYo;!d2ej0;61&i0Hl`J=-7oFmx}I<@iP?d9+aOWDS( zVruSIf|^mY$Ne1#IJ&Ssz+ZwI0xyQENX1tA843zbD~_(YC%DO7O5tdfNhiKybvz?0 zMYQvBQm(trj|988N&mvJXErc{r4AH+{(WPX)VhGkOGvyot4pgu9e#RMLANZtw-pa5 zGz}+-#mLu>Ue@UWqlu7|wBBV6$IF1_lX7sDsK$~uzLK@R^uXVhtMgu3TqmW-me=U$ z_Ve0?UM<;di%l8VR(q}*$wde1&Tv~KE7l9KrwKybnS>)yJG>57VIt%D1BN>E)YS>@ z-K%q%D4E>j=o3W|e;BWnxI2`fkuEB978l*%x&uGplG8-{<(O({eS3DZKPxOsSA|*e zz_`L24Hn+=KLJE2@Ej+%-P50jrc#8V*Jse?@ zuP`!5PI1s8q=%8?lJ}IGF}k!b(qp|R2JZ%}%078=k@L!Uf?y;$^22XN9CEoMz=Po9 z;n|~j+kgw_CurOz7!J>k)K_$%^&%|nvsR+NDEoRFY|_`!S5%VT)74>kT%MkD->7Af znGdBp_xtr>djA0DHonQVr{Q_8PI^%>t2$Exre*W(fU$Ix;GJuCJmWn~yt`XykuV$t zG$s(lBF^nFy@iiiuXC62>(%e{eeg?Y%0UZOE%*>0*jsh&gUyVS$ixg~vR?Kl8-u7I#eB z-9QJ4sJNny9(lE#CQ%B z5(l=~RDp2-&BSdyD$=M=A3o5)nEtY37vHO^$-Nu`1M1emtkk$FPU>&;lFyF^s5FI- zlMs4$mkK&5=c+BdUeirv*O{#}T<=H~-58~myhhiu&y9LT8}_t)~dh7d37{*az-r<5}Td(f@^VZNo!_VE=I9noMN~XDAvZZv~W<`j|9 z!4IlK3=9lROjfC1uU>?{uIxxAc=h`dGvvN_Z#HXnHG+1 z%hkEA5q=fiyD#r8ZVS2Z%s1q5@D8x`cDmBxxjwK-)6;Nyq7{F+^d=Yg$jjf>MEI)D z|3Y^{Aie`fz{rpB%gY~rn&hg5pRhGQY~8|w1)L;CLA%lE zzn;yQE}#1$5u{QeM{TG$?hT|jxbI9lt+wAW_e+8J6+?W#h!J(JlDvl|w3>BAy(?An z@*8Y@*I$i$2g>wogMvIsMuZZuDIdNYt+I;0RC9OOm~ydP8s+Bd?d=`6;cdin+=OIO zpQ!finLQubd_e6P9$7M69U7Pzo;bshUPKS)nRKmhg&8y$;Z^;))DjX3rw z!WzgRERsf9fO`YLifK%{`{DArv2t`^UInEoq&nabc%PtwKhFcB`N2*}+)o|S1i2l( z&d(0%pNEVbR1pdgxQuIv;f>KGv#?JSN{_F-x;nW^eYGp%;i42t{fdmd{)DmU^N?D) z;o!fJcmId9KC9^;uMG!%wth{bkNQ357bebj66&V~ah)*IK5%*I?cl(6G?l+5bMeTN zc)?x#9lO3dT!>gbi;E8XcCD8RHP1A`;pylvS2%x#g@rIe3ohr>)Qix?hjB6yJc3Gg zqpKgjkX4T_@N2Jz0t_Wz2*6DDx;;&Q>L8x;;;=p`I(v*yUrZz2ckc` zPx7c9rJZjxC1l5*PY}Vu`T1n5XuL(3=Ap(=fn2yy~*0z!^p_iR*7&a zi6-8Sik4cW8sfw=lYj7xnjaYG;QPu;dV33N=(`a^h)!{0x7k=AAt9kYh?t0ohyec_ zj+Y<<1Ivb@y80Mcn9@>X)-!jst1$97z$_~C6wgg1B83Z)C&QC=P-O^Ydr0X$tYB=C|V`(?K8lX8bq= z!ahsFVeRL_!Vl=h@E0m85Al%}zGt1u(Y#afa0M$YkadFSfh&5x7jl~{U(C&ocYYid z390$UA!Zh(mb5h55h5Q~Muc-Cnwk%}IBMAHBck)#+oMeT^uOuqLv}W@5-L(sDwipq zAfpaavwfgLQGIHE~g3y=WPz!?>*p$dfNJGk*C@)}#LUqbP8s(#P z7v2YnChyZH8HTv2ZFfYQ(+SkT62+Qe-AwBS2CqmbMtrH88yi5s;5TYU+OZ`8Pl^SY zq=&IV!e-i=*RTJ#bcKZ}oTli`hL|{g!YJ_T`-kr4!Bk{{x*up*!9P@hOo7M&o%ehp zfc&Q=4A(D}!c>_1Z^C;m7z1V`FPk!UBQTMW#AX5oaSyS3y1SEwJRBgo)(6&2Gv>zKrwIO6CR9~bLA%*?hr<&dACe(Zu7^ymPIl%%d7cTrJq$%d zbmb+DnzCDMczgY7JY2ris9o*ZVyK!_ipHVnmfXRDKR<89H-TZftAords568n+F>r! zQC&TL%1%ZC`}&2mG%`8w{*pnz`@>s|`Ni5Z=wn>}v4M@PE!el%*nnp0vpO6Z5QF&^ zO_iCLXi+hhkNt03A^EEq7YKnT({+I`^b1l!oMsWAGx))h9Lb6n6#`65>p*5*Ng-)^ zdGvQR^+kTKahdksv>-$XV|0+#DK0HQFBX6pvJ=tn=GuE9LzC# zc?leFo;qNQMPzj){k$G9fZy~#n>l9~1oWZWho8Er;%~u2>aqLd0`40Cz#x3jKoLxb zEvaHk>ksV6ot#gfLQ1@n6=iCgQ5ivGR=3h>SPKcsqs;U7Pq34R82R%1=jU*MU_^k#RYjAKY z1z~hrkP$S+sC@R2J5<2E(Z_=Y*{Wek{~i(1@el7^z+G=Mq%c2U_nrb}ipFXF9mH%g z5y^-SiI(Yj=4aD2F9vxzWuizEl9Qjz(@>-1agN#N45UhAhebtEaG7DEDfyhxBO^r( zZU2GszG6@+g=%>2ssE-i2g$PYAJF3Ix8R=FiaNuK@*N%;g5DcE=r8%DrKQEiQDI>u zkA3)|SY6BTCIY{)UnBH%?MNold86HC<={01V+dS4Jn_44>5vw_LX-gqVX#L|;dqp2 z`T82%*SmwN?}QbPXD5UQ|1VjLT9T5WYd#OxHFuSTTX;Fw2f@2;Xf*29p1u;210$>l zgmk_ONle6{otK^?)5p_?6~euz&ZQz;|C;NIQ&^d2NCsD zD=RDTq(FU?3=SHniIl6WtFN!fw^*d%tkGXAEGz(M^RI{q2|GMw@sWneU(zWhbFKXB zh=Akn^N3_&1H4>e*MVw34FJ{aW84`H%};pyAr}+ZwA#X@eP&vV_2IaP{-rfqG zVmKR8{s4wH|3EjIRwhz~iNME$4jDmbpBq!s%22C&e;`s)ijD#o1V zuV26ZC&D4sYD{V`fdo{N!OL)fBs+87Q|0Cao6n0iCy&Hx$HvCG{+0X9&CNhx8AThs z{`!uDps`(V-b)nG(dvz~Y5m&ue~r&OHxRSsYJYG}Z?&IpMA!6uS!xihaXht#YAzPr7^N3z!tt+F9|jkfwRLI*cOy`m;g6}py+=dqYvyM)m=#Jh^gg5 z5DLlQG?lToX2v%`GKO|8k~q>?Yg=}g7DHUIUfqZt-+^yg?R8ZO@avz~HhiNn!i_YQ zA!0l{4#x$tlJH>|G6ID@+bW$m$iMMW1Ft*2@PEOfrvJJt|C)}_T^Sp*`_XvsH3Si) zFp}3TVgVUaG|vI60%Z%SS}5?+ z;b*$KwiQz_2L&vy(K1t6C?#Q8fO@oHqjnEbbhDZFe_s0sngAa^(iM&OoOJyB7e=>_ z3kz8k({3RlWksn#faFRB^F>}@jg`C}hA;q*$SE1&u-AmIt<5n}CW$j}uN$;4ai0Dw zMB(Erne(*@)CwRor7D&DU5-DHNNM@^WS(Eha|H_7Ws4UzpRwO?kSr{o{+nXTcIq4J=f@+tc@M7ip7sLYlOHK@aKZ}7d&uEP6rdV1vS;|;N_N}G?*Uw{?m;j9yj&9c40+^h^ zy#^AJRVr+$DZ6UGJ56Uh4FJ+yjy85{m)-*H7ewaNJcGM60z&Vj!1dE7Fj#Q~Dd7R3 zT{z{mb1(aEy;uAMCP5)P;?qh7HlC7=2LnRt=* zp%8N4x<SvO(wrQeazdp?VFT5S--FgllKYJ=xw<-faTi8)9a^WkizgA?(S!;k0bY}AJ1_JZtF*Nr96n-;~ zE0WJ00d;2HR6RE!M8Hhv*qx5$LVrUkBSXa$p77gDa*B!{aRECNmXx^r>S}0QPk{q6 z7}A0W@&`0wetlzQV$!a2rcZ!o5NMGlmzM4VTshgDAN+*P@4Vb~_-pjy{2Z)8)zsD7 z=Mv`}MBO&V0M~<1_aitNKurb7cxS93B_+{36bR<(WiUNHT&*|%>ElNgb2v!rZ7`l8 z{s2Pq0E`#d^Q9JHSFpoceaOivXsyhEKOYgSGY|Xw_b-&&e{JBojeb&^0gYDk0b5+4 z^4VcPK?Dw59H!qQ-@hl(kvkH2dC24;0wW>dba-*P6wRodp(x7y;6cOXu*GqQ3vku) zt~wOO^?L6%c19=DDn=Z8=esROJrv?8ELg1 zd9>s}DEWiA`KJCM)h6TFwk zEyCSFqv;TEp;MAD%x|z=1-z^#Fn^?QGz9(z6RG$FIxs#n>h`+9p!V-}&AfI1SP*~F zBG!I3RPc;Z(*oquO0LSxk2_!%YRpa&K!B?N31A!;iR!-v+QjWExhi_f3I-rB0FbTx z1w8-v2fzrUs>K-q`ZdUW_vt?YEnEm&zUemxH1|P8{ZYlUlx!8Ib!QvRwoXcKRtAO; zLVz#1^pJvhToS{+ULKXYqCZnpL&qi=+6u)YVl^5VfmpV#T*&A9$>JcKF(b=V&b$4g zB5@li;p_22b@wT*>!BF&69_8}uD{e&Rh{M{dMmD%dj06Hrjq_1+Gt&&O^kLz=DvsUH`zcKgA8!>)LZ=cRmyRD?K@N3DJfR8Kn_LTBQSB zU0FyzV1i*Vz#KdEB_2FS{vH6>&7Frfg9_bakl)nVhaGC@jvy5mHA~I<3vqy$nE34M z418bOB24Qz&H_)@bE5M*vg(z<=k*e{zp1->b=#lVf12zeREs$;IRw7;c&`-!4a*@t2BeiVkZf$3f9Ry2B!Y-(o*(^e|ilsCFV|TDI6^f zRW9P<;tC!=CkKnJE=Bae9-ud;z6H|ac@%wpeUX3@L0#hEHS=!@ixQX?th_2fxgciK ziF~B{C6s*Di?*drGM#I{$$~jx3(diR8yM?aeH1zs7Ex{1hQdI>wR;4W4(VnP z#l30UI=!dnW?c8SaUOa>+4xI$TGk!EDXkh`|4+@?OFL;JLr?yHtyq=Kmgx_CfdG1J ze*ddyu1`*XR&6-t+c5>pmUyg<5m5b)LV4n<6p(tS(pS9d8W_)s!!xi@U|MK`sLo86 z*PN*vyMl1+m+3+I1F4suj_wOR0l(^%^Zp4R7h0WepP7JEbxA99ETI~zSDdj4&Z@_(Qzw|B)shLmx)jz}+OM+2H9nSx2|x^NlD$4EuZyFJf-7Zn zNbnf!YetC{HxxmzqBBt_?HKIHEHjLLOR2#s2 zvrwZ-=z-Fx42re&W*sDqTiXfp<~lmlU?#)#xf-(v@m};5BFP2yJ7_(13S{G5L$|zO zxRR`SaHqWrhAZd&W~x|jRT_G4^G?iQMS_fV-B!eHGQOcT5QXO{xfsG3&&x!uf^f=g-=T;5^kHARHie6YAvP&bm_t4~4ncVxTLvs~IWk4RpZEEx z)3GyJf~fZ~>sepbYv`8AV1dg+N!3x&G;xWR70H$`*I8hb+o&CpPJ+DjS_DqY!WP!? zD(<{}$d_!}(j#f(T*38Ycg*XsP?0<4AcY<|TfA8K@wh}( zt5~N)-k=xZ35q9rwk}h|i;IgT!Fp#V(CIt;Lv?j3TVZ2nZtk`<`5UA%iV6#z`I|7` zAYi{=fL4Ef;UP3#%2f&b5ZWNr>T&z|KtGxqe!J6c)9 zXgds-S$X_`Lkz*=`>>fIPtn5(gq(uHfinYx`L04G`9vS>#JvUO8j^%$0T+vkl{GP-|8sQ$>v{TY@(hVU{4?GJBj8baRqaiFinDb_LoimLi9BK{9xBwY)2?Bp?M&nF$+4h77n!jUnJ>TBUe z%gkeORq;x9D*}+?RPVj&M?z8%=l7jcZn8Sp&GKwX6sV6}qe`zNHvPu5=aLjk#~q;4 zTWhOQpboL$5blffSKn?<6K`!_%eV$U28sQ$DP-fjoD~}v1-|bxGnG#yt`l)T0(=g? zz&3}GRa=VVM8&jg5TllSGXLu9)c#z9hqu7pBEb~&Xr2o8NphN5FG=!&C&-|<4@J>U zXsUz`6hWX=nCJ94b^HtR`4$cVjg5^$JGGLIuVuk#BL@EuoDl37c#qnV699p+RFUe2-ZK(a~*??ES3yfI+KCdL3zXbrmo{+|Tx! zt4j|=kp(IoCkCxbV&5*8Dxok`!sb zXRx5z^XF72XR9^y@!X$t6L@n`yFH-CeT#*D_3DV=*9sHq`W^M3*w(5Nklk*Cy?7Wr zVEyOf{6XPG!6C-M$b-vfY`vTv^XHJVjDHpikK8zgj*-ZCU{`!B|8ZhXud&Uiq#tjC zecML71#V_{Ad6vZWCF$A1oxVyLkxb+RUFrbJ@DoBxz6K`%99|ihAj59Wg16zeq-U+ zKq#T{z*iU8ifqu)lC|#Lb7f6D2xqcjyweY@~#kg5@llb~rBgqK?Jj^626~ z>5uj$y$CAtFF(?{f5qz=XG`mq>dO+cpL-DlQr+XWx5!=8nBVvj6$uGMe@ zD-uO)KN+2v5N2QqS{UZhqkJ1gfl;k2(1077#!d~X!m8q}=6*Jzz;>lIZ{8nie z=)Z|gimmnC@0j9=W#!j9f24hEF6-*lUHH{fR-cKwkET_B%AWpNocCr)V?K>2bZs#0 z?x?F!onIg;OY+d?4{={qYqSY4ukxZRC`3OEh}bcPc(zwAVlJ~i5=x^<_51`uzdwP`Ki%*r-x$Uc68SG`1ti` zCE9S15_||e4xis0B?!B%)-{)#D(D~tBay>k`DtP%>71pn*J*)0?B^CiN=5Z~AQ&36 zl|nPs2g(4lb&-ZfL|9_xXy3H^0PB%-n}3d%AnNF*b)il+6HlSqXjdlRkF<`D1mN^Z zRO=zb0oAFqjEoEfz{x|iMEg7+)`NQxI*V~ls$2_An%_6ymdoyRrl_~QEG0cA!cw@q zi0#dVjUE8K-$U|_FSL`9NLkM-94KH3O@iD}E@EV41X@$i)uHF?<{F`d6cozO-T~<9 zCg_CIgAh#N>_ZS!aXhSdglq)OQC)m*Uti87SbF||#If(JsMrNB0F)DTet%Bqh#$ZL ztl{ZKc7HOQV3dl{gNczb$)l^QYb0Y(>hx1BGeD+GeerITC*~d-U!0&p8FveY&5Zy;+eQYZ8c zscm6pLo|RMf;#9AutogV@)7}#K#-BydJ9TOr1jPC>#BfAFva5;tX9dFTr3}rE>bOI zg78nnZ>;(Q2dC3k5!XrvhjPbUrbasuqq7S zZxIj&K>FtD9Q5p40VQ&Tt?Fa`#>U3`T=k!eE<+Fe#t(wTTW6CNr0CB#E&M;TFOL=P zdu3hh?e9l~h1tQHL#Q*bv9W1sd@Bc=vs?x3$ls2A!_nh$GU2CH&xL2kN=y)|dVUq3F>Ln;JVq#;X337!{5B4?pr|Z7L za7y~^A8=v_P=gWBbw%5b5qB@SzjrFODK?8`awL0SAI&n}~-qU|a8ev;S=x=o)=@b)e%*&&_D&M^`o zg?}vw1-^IBx?2-4jPUWJ06c!I5Fz~S=>kZg%&W-4OI)8L@8>2jh8sy=h&-Bk%Oto- zj&^f?CDZS4s*z}~Gd9_aDQaYq3!GpcMJ|@KdtM;U+n+Il6BS$Im;L(d=7+5z^hQ z#6qBdmTwkrT|br%VdD0>TB>}>I0T%~+c{VNXu~5#`)<}lq*bI1al#UTE-(ycFhDNL zD=64F@a8DTI?hpCSXwC{S2Ee0Ylxy8hB@Xv@fb9JimX&G4Gn@vhU(VK(cF8#e!)J= zfMJ9X*545d+Vbr(-O&ypjrjtICZ_js^=r)v#Hj9-U#U;!P%)E&Tl&u=1ma z6R_chM%u{^aRW^w9co8lCfIy?r>CuNyPF!!nex@uBrYxvm{6aA^bB-YV5?~zMx(y` zFL`xipu@h}g0Br@8n5zDR1xYe7CZRG5}_9aH=ktZY4Xu_ch^VC-Cw8Ay73^Pot)`U zC8DEgo59F=T0(;5YQt};4#m$Bdl;wJ>i0uBOD98+bOhJZ($k~=7FCtk7L)AirfO>i z^z`(w#vAFo0045Hc?(~LV#X`BxAZ(4|2Rje|8sBS6~r+Adl?ng zP^)xZMl0lzArxq^vMMYpyykagd;VvMMsC2iKpF-lLLtm!IY?DWD7FEbKB+fB$+*2# z<_Cajz(4DWLIljSfp#C-X&$MlHCV$!vbWJtW2AfjSX@#)&oPd$5%=<9_*AKXH|j^n zry=3|$;09p*j5Y6wQllR_CO;76+00rX+ly`5*iv0_P%>~M1%yq_qv{*%*+MQ|BOyV zwPf#0*8P6p?(x}i4?~x_%III1sl3`#FtTy5SXriD6%gPF5B1sEZvd!cDh@t|msCsZ zluTp7I1#9;tHYF5z4C3bLEg3ZE>Cu5o*`*eEr>(?H~GrvlA{)g*o_b}&|yZ%Lno^ug!fPjL;ibYa;s~l!?wT{h3Vn9vWLR(&`ewX=luQ{F~t^*uXl^a zDVF_S+sSLgeidazBW`UZV6kEGEyc&O+nJCpZ)PeDtp^chN6fVZ6DHW*W@T;t?E`*b z+b6sI_qonAzL;yNp-2R-l{JVyHa88Um?7Rv^H*YpHRZ|8$N%&DN^v@e|^1LB)LY_hrD?MRA9^u_Qd ziXb%}vQKB$yW1`2$zF@$Gc$&z66WD>45Tun{+1d3@$$wAin)z0KiUC2>(}9dHx6|3 zDVv*)-gWgf4BE=aQ&erv?}D`P-aj?v-L7a6aQpUrs3+ClL6e8pq}7y1e^lUC4?==^ z8`eKg*w-cCb$u+f#MnhSeboIPsd) zgubWg3eVJZUW8)`dH8-RjF0X>oKdI8J(9$NA_JIz4k^|dW9heJ4Lsh=7%yV)xzsz) zz3OFvOZ%6}L^%S>JUJP)qBX{|n}io2B=9XNgf+ix@kNz)I5MgZcXreny2_)x^jl0x zaJ=2u`#O%EV3k_3>hvIZ$Z)<0K#+t?$jZvfONR5mZ;zCk>+HlR5=X&E(*Y79EuIKyl6{^&B}R}~ zFOfzXAitj%lZ!iO@lYZ#xu+>;qwiSqVf$db<~HRaE454cs_6+68loa`C%i~S*dj|y z8h-N(#lL|RBBTC9Dsy{b;TQOKLq!9umQRMeqoGSbqNu&wba=j{_>Ebpzm?;v+1#f1 z-}T^pK$?OeX0aa>88DU(*YQ{FVEUg{$fj|Xpbc9+#w9R{Vy6%itX!9Y#aa$l87n7dAv#0qySgVA;-Rd z@%sW0`?n8}{>mH*Dxr{a$F^mB)X};=fcNG>_mEjXu3+2czGQFWf1; zcTLf{PD{8V4bN<}%~SFcG=u)XTm2?03yOt%K%W+)6sGZDFcA?Km;W30Hm?R5CPeq9 z?i9`WL`7HC)H9MXNQxbKfSRHl^M%wR zmrd~ROw$y`?K%6l2XkOO%gIK>V|9u54~SHVruDPyCQ0J|-?^nere|ixWRIF;xf*!s z-)TCP$%`{lQ@Po)S~)t!Ow9Ebt84lZ9gVY;u_68I{?8};-9$ZzP6dUto1PJ&sF)`2!GPoCf&YsvP+NS**BRu@I`z*CG|8x#}N?k8;=o*+Jj%dTaqU&=t zG5)TlHD%!gz2gAG`P#9u+>486EiG{1uhz)rKHUEq7xzJj2a4`EauS^X1>8By$xbr=WP9fU{DH z(dI})O!>KB$6EygtpfDEqtoC$tc+CxU#HHhQQiuhF;hne_MW}1~f7R%*s+!mm z8<6Dj=H#F4C^QvVM2o1}uuv>}i5&bH^)dD66VKJ$@;!w|Y6Hv8EpUJ#c!w7htU#Z? z=lX<`3-$N_`U7_YwKCm@O*)@KW_u7oegAhNQWd!px1`+c_H05zxDVY8pMDzVwESH_ zxLwgG5ggA)!4kQ$qdur+=&_?~P_8-5(m19vrqj~XJAkU~{QxMt=c5DP)4mIgQ#xiP zC$ONU%ng7;!a2)m-3dANM8a{pUX_->bPvVVF&*u(9Es6v`?;T%RWnh4?&{Io@O&YG z$|G%i<1LHJB(qtruCbc|LTm6j`M$B(*e0&h%a_MkjitNgdGH%ObV*T7OrG|A5-uE_>@8thB1$pYdPEKIEDNB(akrOyPPy#I4Y zc#aPHRm)Eg``-mC-%N-)@jex9oD@T~;p_8wsDS!8eY8H41INlG)cZC`{)NG$$C8ga z>Ik;cplar}m0wl=eobPJrDmR7`F(b6tVRu%ru2*_>+QJPbKGy8@RBNLJSTG)0ufhn z9(sE(_Vx5dkVoZO^V}<$H1ArlNiJuQ!5on8bqEW{Y{5V|0F0R7}&(SI1J z-S_55o1I)Ru>RN6TUC1ec<3J=o&DgRa92u`0!yTw!iD+oo{5>he(qyr3j##BareVh zs-%`bH$IaJ;T9Z`V?-Uz)`3c)<9V>6%-5eBDKkgC45px4g~yS#Mk|Q>NrP2exlx9; zDe*IQRMS%3pEH~30OpE)ADigy*FoJOT%wY$ofrjm!xr{^NwTMN8GbvfYj3*rL(%{5 z_7Ip?y@g#5BdX@QaB+akfw)Q^UC1j%0w01_`Rt8mks*@~>ymxE99JSKX}s}!_c>w4 z-PBn#8sEof?{9_78Gqk?`+Mf>Prn843 z`I}>w`fu?jl_?D%$-j7k7Onz0H{w`Y$F)j7Ejron(DmhD_PtDRbX8+7%hj{MSK(^S zAJzj#oBH7))6}iUjK%~CZ(9m)l0okT$I?bW3Sx#cC^$fEtC(BmR+5B&`kEX4@+Dmq zdl^k8^0g;zV!yVsbxN2V7dzW>w~^|@TKj423U$~WGxfau&mXD=i&xm{DkeV@Ju(YM z?JTQK^1W3S z@3TSuqd%I76J19xZaz=i*PR=l?%ccQE@pI|j`iQSjYmeOrixp1!MCpu{U3`5O@c|Y zNV{Nk_v!J&2IO>^0|GO_T78tJn@%3->su6IP*y(3`roaT+{2(F#)7Ho>I3UFU0xcf z&jCGyuKOQI=PxG9bxZWw;zL+~`3~AwJWBAj0A5xWP?cXYtAt)cwbPq8B{AHun?@BO z(>{9i=r4N?&7WB&TLUDmAme*=Q}|VhY3(B*F{KECCdvE##dYNW?sq&AJ|Bcox#RYn zvuw*9|NllEO&z{1unNKGeS7YM^uK-=z_`_0&^|G%|1IwRzL@Yn{-h_y;yppNU1$d{ zR70cV=hznVq6cZ7lBdaevkq_QbtBbelV-`J~dH?l;K(Uc+v?(E3O~#X`~$6PLfzOD3%#} zjffV@!{UWDULtn|kE1+w>@?r!u}|)7e%5@~)k|s^pID4r7k@W;)!z5B;qPTT!v(9E zXGOK>$9p%i;#;cL?{v?m6~EC{z9E>69+o9ks?_pYId6Y8Yb5}Lvi}|4zJEaqjeXSVxV5MZYHiyd4Mht(P2DygT6m{2 z_w1DO{bPW)aF<_}p9L5uF#E%t~w zp5BW4{o$(z2~((GaE49aq{EqDN$@>(jrH_}C1;Zu1H%@5&wFbwDyuH@+2y>4YNr}u z+SB^(V>kOSZ!1%sz3BEzQ53_dq=O&DA`keA0(~?0}-Sy8j0(LA-8- zSBV@n^iEA>Z&GktSPm*y5#>R|_BWmVL)$biREzt_bGiKq;XQ(&AVXW}7Mnx@ai?$s zR@sAO40Wb)U#T$hli@%YXbd#N>3SzP*Kh8|($mvJs)&Rq7>6VzB9dPL5S5B5@|{V= z1Q_6_8&mL_e_X(Ctt>^}2Zu_;2#5;znm9F|E5$O6H((Jq;1JHm>)>l|D<2qjBt6Hv zskLd7()c7Gt=#rr@m?Okl{!XP?(cD;;xz7I5%kbtg$E(X$0`E+_aCjj^v{2F(1X}_ zgyByvCXr+y$A9lHL}b{w@)veNvt50ay!>YJWU9e4&zZy=b}!gPni31D*RKWF?TP>o(TI)L%D zN*MkIu%KfrxLar=A@9h)r6spS&?^mBiB9qt2U z6tTuQrepfN(%`wTHYU+p=s#mxZx3CrYhy6-V$t(eElu@NkYX@C)XFz7qr9Y%!?)Q| zakBFgDOc*K7IW6%ShtvMhP%f1-Y3OgF#u`b?5JAJXP{vue2x7J*SqW_V&*5W65kcD zZTA=VXu0KdG_FTg^fPz%6-v#0yRTEi6F--cpW?0{#j7i{&8CI9EARf6c~sg{S#Bbg zb%MJkKkME@WZ6p*mud}u@%zgJEZ{15_?c?y`oh@tCd;NB^LQ!$g6xu0TDAJKV0zh} zG)a@}Ii!-Hpqdo>eKk(n5;5w4f-#>tozE(kDOScYXM>b=&GwgyYi#Po9N4fc_b{e^ zM+G-otLJ;ySDmkIXQ;%#ev-CfJ}cZ1pNKKldinFd$ngy0@mdaMWG3CH&zmAccCjVb zpd@+c3x2)#$FKNua}ck73C!iQt$8yj*V341sqkg29&KXMpb>e?d$~OC`bjYw^(&IO zNh`k~0f$rWo6*g#;zjHx{&!7H^w6ou8j&IpN>OG1!Ln#cP?szQog5$QJT$C>)3-R9 zkdUAm=XAo0I*yPEU=kzX{0#}yPVLvHF=_=wVYitcEI?e>PDWvPf#)AT-k$pU-p8|8 z(<=x$4EP!Bj~r11#A5OuiUOxklVt7(aOl)8U|ghd@zB!;P?iDNSyVen;t32551~}O zyGgy}wzB}G*Jw(hdGl?pH*X0tL-wlhY!UV%#MVypJ|v{#t9V6yJ@d% z;g5Sw=Jkoy>;-MiMYg=9`*OZvcyQ>qfQ0NT8?yCTbM*0rZ+3)tvgj-!ozExv#uPPt z_r4=?l>#!HrB{iTcuGO}q!~B33p!p!M)Pt$$=QqfbEKTdnENG>|Ga1UzL~=f#%Jde zqqoD$S*d+VT2rcoj?E!IkolVB{v+3;QQUm_8T5cr-5{=3f@xYK-62SZeSLl7mGcbB zxEw@|0|Fik3kx3-!>|V2Y)??j6~N(n4_O=!UI}mb{-XCSraD1-CcbqM3?>9X;=#tn z&7**oqfs!eG^jL4*3SyI~5F>j6 z<3aEEZ%==fzvnAxXKBmtNcKX=P1SsUN!J9?F%ws za*=m0vD~l`MdUka00s~!L9~PI=NA`m`|yEfs>k;MyXqla&i|O~qOfR%4%gRa*%o8|BJxc=v$~ z_G0z(oub_WSOJ}p-*EpkoD()->b-pZqZ!sPdH<&aBwjfhN;YRgI$tI3oM~5zsP*hm zebLV2RV}of@Fk)8@$!za@Ljc~O#Jvticsf_6t!XD9F9_bh+gqe;a-HgImc{ON*r7-AmPi2J0B%V4#|9^=(yPxp2L>TF{H7P&M|iOOX5k+CB&Oe{a16<<0?*9Iwc40 zNQ`KQm-lhU*=yyU)OV>R`zmCZZpLwTsnJ=82N61{g{tYY+$j%JiF&R2GB%y_izcG< zU7oGtQefwB0A^;|?2*oX!iwC-u{W$%Vr+-HZ{i4fFW=6b@kg3J}(I-reK?W8to$ugLI`?y29tD_^31bww>)kIew7`cUOO7DSiJ!B>1{B34pVq%{w zPqX(`fawIUS1t0swzl>o!;5&eSs*!RH8oN!g@+L_r!0S9A$|$C;fR_?k`gQwcY=)k zYX*B|_bCWR^Ui?)w@D4T2ATfFl6B?HmSJMf?;quT{kDI$>qkUoFCre_LBp6m?z(gZ ze=!_wc*2uS@KUA?#liFE(V8R$pXnnSxr1FbJ^A)J9}k}n$2&xy zMd#-8L5&rN&CZNll`ZDe>t?i1TC8*3=6Cn4mimLcii%k&wzx|b6dTA_S}TEFV%z0~ z{0t`O+Bg_L4E&#d$FQ?fRpYU^Gx8>WU8`7of;Em%9gi$EE}HxDM^1HJ(TQTqe623M zpK-}uYGwzq6pP^tIdq6T4iQo4CN{E!{p@QCG>_-ZVHJ)B5qq z=kZF8!~o&`oeQ99P#$JtS_gp?;3-Nrzg-6&(yzU}9tS6a*~FrHADv-17In+4)Vd2e(LUo+BC58M4iM%MVD4qZ1iNNVF;If?pE9M z_Vu{g5;mrXM@JQwIGgzjF^-4{sZlgOU7gC@a@>m?)6r7&0CJ4SDz$u#ClYR0FYNx< z2q$M9l!dDpZYS#Hk^dq-Ni|QuV{wh$n(6TwgNmzsX@A1TgMOV=PfH#mNqzDk{=9db zA8Vd{xVvX@Ou^PFNsRG*TZtb_esHJybCJqr%tu$R6Fr(pX8ZiZmbUlCIX~UJwe0-P zd>{Vc8ogr6(^I-*b7p3?4;sbp*Ua}Uu8Afi-WV65fsk^e^qH3rNv9#%Yp1Os4X+?m^zptdCDu%ZNMAZl9bA5 z0%=4nxeAxHZ<|lsOks*o?XZ80@0`DYkxKp+Mjz(-rT0Q-u1jt>Tyt-vdZx3+;*Ufa z9$&k03(LVcU{plN|L&9wrt=f!y@+Ak+|Ik!n@SBXVFu1w_B?^Smm_kN{X^GzgcJ|& zSz84R^=SSKFNh3ddc}WCYAp4zezllBfPXUUj@2q<*C(WxU`_;{Aa4S%*qv|!UaFlA z_V^SU}zRfp}|6Y0ev@j?toT;lG&-O+!w?w8g0NGu<}GOfv^2!NAAzT(Wx-G4_$PI&9@ zfa0E!k@^plHhnhvf{Zvd_Mt)*DwMCbfPi0}1La!;tWZFrE0bx8qvPVnpqhyt)5t}( z}^4%KA-BOHRhjkx1hR>U0`#vZ$^4IBYWL3 z-qi;wnml7v=jXrwjlr;8CChYA@#S1(3>F((Z0?Y=x?W^xO#S)2_WU+SYQ_t$b6LX= zgDf!`f@C_3zn=?Q{K38PXV4_Zhvc5)7?TO*f-PYwtifpt9<|mg=|xPoZu>#mz;pA#mtxWbeGChc*9D%veQ4BT%J-BKp}N?E7@cQd!mjF?WR;y~uX9s| z6Y;IoU@1K7a{la9?esAD-!poE=(?AxwzznB1pg!c{3E&eW6)v7Q^u^WuEKuf$_?*I ziSzwYLYqOUDr8$Z8Z@iMx!C(40URp%bH44@&%PKA8iXfA!!`ZU+OgaT+$IB(cR&IQ zQ?V3bXJ8f_?4>NCBIZa2(1-NIeSk>9&NLKM6RXtZ@w3mULjbtCc+<2%H#|Y%z(Q8j z-*W)T!@}_FoMiq!%pT#c9_zy2>uLuY=EH(aQ%29^WfhX+u3gF*%3-TQrf9FE zXE*5=9}G@tB%Q4{R)-{rawe|fIObq@_cCf-6AZ@An<5b=akPJR{`C{Ka=NT#8d7#? zyMI5#b(|sRjmqBOXv__gQJKxn8^t=+w>@jxZByBH@GV@gM!jUrJc#3->}A*<`5G1G zF<()~2!ES2A(Tr?sM1a7#h)`uE3+;Sajvo%ERX5SY45?3Ayhl30ID%kKqg zIH_&`6Bfk8BIGTh_fiBbpnaXc=0d^Uibm zI31yQiTJYrAWyXL4(pJe!^20zIT-9FV>bI3RgY%HFc&lnJhx_w4o5)$IysEkEDQq) z-xLhR`7;NF<3S>gotlvYg*-}Jbs9)jqSk!2*S~4cgx`+<36i?xfi_6N*NA7Z-ZnL9 z_Chx}4Acc>z&8NNNsW)UV*3t?5DZYNDd@IjB~FpEa&lT>!-(ZKFve})0XI~FdQjWH z`3RJUqXUvYhZ4cl`s{GG>d6qe#}gQ=o_#Xensc0Kz4LFmQ^P!L$Qb7AFKw={Du*!0 zy{y>o-7k}8RL9g&?Bht)iZ}Wb!y#bptnX?xycGA;&m(^F7;IsQezUyXj8bpMy`FU+ zPeJC9hMEF;r_Q3wW0FQ)h1+@r_v4l{e%E03)a9@gZ1z?6(Rps2wh+0Y=c1x1Cfml9K*j%V;dX%((%ZYZq@*}R<^5cUt3@(Kel-Zh=cfI7$-va=5=Q6zPX0|+6WUaxf%iFM zmah7Q3S)5!ftT?Pyfos<4To0@<#jSEHg2++oY6YpASWowCC=ur4H%P_v%xNYpw&{T zi^=>T&H6~ArH^O6wpg<)TYMv)n~WbX%U-YGBTJ6JJ4QDf{%)^DY^v+CUmdgUyupuy z@et#=3@yR67pGwIY5Cyr11KSYcIEU95gEq~YEaa!a>p9y*`@mat{{2O*9Vanr(KG7TOeDH9KZ<7fVdnT`ZNo8iR0J1JxW#5xK(@ zv{MRWyw_TFT*?c|UW<`(*dt9PEL&C|?ht3pJ15_wJA( zrIbU}4d3bp+vmKl^^ZlKEGBO>Nr?%@Q!mbLU`Fob#1+-3#7N2n-(EAlVVZPhNs7DK zwDQ19a_h+pypUbTP-L_X!H=+3iDut{*AD*2N)$brgXG_F(gx#&(Z|_L(BpL^TGpdS`$maI|Qq2x(UKMRVp#a=P$uj`!F2j{`QZ$loXs@=Q}|LF;d*uI3XHJ5kf( z5OgpIMrP}lz%x@_#J>FZY#d?hzexJL91(#-nI?OeVF|k=jk6Z^y47Dr>8|JJ1EOFd zNcMhTYdHm*s0)kGFBlbIQ~4)~J!okiAOmQi%^kQR!5e_oQt6>>5Hf2%4$ZtSe^bPT zHqCjwcw7tO2H*h;*nbWiK76fr{El9#U(u?0btVVWwu^Z4!xt-Ft32hSKnr@A1LUhK z-7uZ+ZU9=j;pd0ysY1AFThk5rA8@d+yjQbBzT?zNxGvt2;0N#<()LFZQ{Fj{*@`rJ z{G1Xu&@>(o7ol2Nn(jp;iw$>XKE^j^Q}LijBip1piyqr?xyCP{7!p&GkwcAZE!SVd zVRFB^yxH+~6;*Q)GlN@4j{E8><1xe<<+q!zqqMIgh8M0S$XiKcRhH@)?>GNq*(=b& zYZhf9b?SCGC{X&i8X|8cs?+z0_{zY-nhr;8?4TRARae*A=?ey{tTGzkH!?%1dEFgk z<9F>l>ZXMI<+0VfSGAezv|{d)-sd?M$H>|GF-b9WM$`IQI$N^*&IqBFS+M7+!c;G! zB3($P?vKv9(9MA#5BrV01ztQq6qiXYDD0L?ezC5?^-b_}Q=x7*7ayTLYn!*3wO7D@ z(2Hp8rEil&3qt#O1Ls#oh~JO54zvposJs>m42j%uy4xx*)zq(7rzMT|Z)GE&g>_`h zc6ZkBFiYLiiKKnJ{Pqi-+lq;%s7T|5eLS)){0qJ&?wyL)G`H}CMwl;0I$V$DPT?P5 zF!?@-FvW(=sT4$&p}Yt1UN!l_0f%WRXz>lJ_ zmVqxls9vsI#R0yj&4*{_#@=grpv%&2RR74<&Ho2*MwH7#u2K{b*unWi0PsREPX%pq zD>Vf$AyYxN1Ap>;3dqqY>O1J8K}fDCMpt1_hqaz2>GLHU9}Hi1NXI}eC+=nn7Xt-; z9~KWjloqH(p;;lIAwWUg0GVG6uN8f=tU(;K!N|<~0kyUu1V5yz^)1Y`aE{tDNZe<= z;fuTQNl46iEQ6uR&~I4ap7kg2Dy}z(B;vM}WA^4_icGVDOtW8& z(`P9UdhYs(IVAZEXz(j59%igvW#q0*mMSK5$z-ved%!_&G}0oLfBB>91RngJJy z$k-8*oQTAW3_B!~?i@qhCHadybPtpAyX5HAuZi@Gmb2uJG?uG)tdY$Zr;Zsq0)#qd z8S&<1#6>=gFV<+X11-`z7x*laV?MQbq`c3s(8?5j?VJ)*n3>#OY-P2qpS`wp`+Udt z9HNLyPOVUf$SqmtSSm*+2x)QhXzbL*3M{Ub?YpHlS66ZNy>3TrRje5bIS6wOt$eLJ zApga`&t`1Ge`>F)S-X6^a$lV1Pe+a$jmdYek%p@`bsq)4`r%lHN69Lns$9I3P5XG^ zCE@a7X??MDYR%JC6_@1MtyCl7p}Qe*Z;d*O+NffxoM0 z5&L(l%3}C(D9cOmoMCih{+G6VaP-ef!*6kNIxT-nR*njX=MT;V);2btz*Mm#DrgTV z$jOl-r>3w3m1V# zL%;J=DBnLQ7PwpYXs9xqgwZPQD(0sc9jBP26j_OqsveT8=qCG0(xQOGefNeTmr4_* zh2i8|t2ISiUs8$(hwwg0>usM+D4*l!J>SXMHxl~5J@GiJX3;iJ@JTK~3ZdF96Ji9y z`D-->rlGftE%_csa1Zp3sGqcT%e1HC1NfN*@;$JJ;|t~Qt1IHLLJ)j18ts-KB!6Gr z$rf~k!|5mDWGF?Z%AA2NgE{hPgh8Ow@+y`m(Umd}Mt>Y4>6SSxFA|m<(=xV4BZV&7gp75ePm>*~KFrzq{BCn69oar!2#LfQt zLwgUSgXh3!zE0x5!~npkoaYU=;&Yj|m`N&3k%~1?Ii`(W0nyGh2nrJ8;;sewmk=HY z$UHSAyuC4S^K6JEJv@`LVKkANAbT1aS>Y#5*mnGw`Z&PqD~L#e2KVdiN-b59RS%-_ z1#Pm@-)qy(I8}}+0B05~eyGy8V4e$Rn&tPykg~KA-z%--B#tDk8uJkjie9$_l+u)2 zSXfw+#67v7vf1}p~H*dF~ zN*~f-tzHByDnRYtgb>F1e~0VcrBVrS1e244P3%N*Y6u{F1Do2_rKwW(Z*H_T6Ny4* z$6A=QHiT%~9A=Z==?8Y60wE=3>9~FGGU49`dQCN)_F7(EUZt_?lP5LT5n$4V(tauC z7OlCN1^#{PL+vhX$2k{gW1KMwbSACyW{~9muP|dm7dHYIf+z|>e6t;!Di0n~H-7VzlHIi9z+22}mec?}EGr`Ya>0cASpIUV*)C5s7v2Jw+~d_Q2C`0EI?1;UVoBqU2)TU(&> z{PE-QkM{G(1DzLq9^B z`kZO(S$C)-roScbyfd-yPBwY;@?JzI!;8n*=3?l4Kd-DFK0oY?I%Fr@`ZoI~(Z=;x z9^wr}O66yIwN2{cC)k#z7k-?j=ZJ6HHC~>6`);Ipk0YCBi`mms@o{m#=={(oMBdoJ znMnF3GbI_?0<&}+TMWBSt8&kz@_3qACVy&@+&|74xy_f|6AGS0h45+=7@f7bkOQG?djvlJLUyFu zvmMh52#kF}u^7e-FOwh;Kz99(1@)TqC;N36@(taA68`3DC%DrA8i|>Rj)^I}+;YIr z-O)|pO-lLSKOSOp#$sx;#*nRj6+Y3C`y5kX8)@Nu{`D4KaHVL8 z+VT9I?CV=g>*_~XC04}EOra5zS4+Ld!u&uZyNpJa7)S0L-oZmWFh75LSBkyi=g^3C@jv z3z>+EX~$AHw4)ujz^Ws%(OGh_(!4mm zTrFuCttfHi-C~D73bC(k2z*}#{nFM_le@(1fn%xNBA`;CbWN*A6b~(U=1Zm`NpsN= z1*Zwe`;SFx_aCk&aKEBI4geZUV8&RQneyu$>S#Z!T{iVTPJdBj?Ssr)^&@AtJh^-M zfh8nw&b^olN5#|H_`AZt=p;t6aogM0s;SpU6Rdarug?R=R$wPFrT!OI&+tso(X5}s z0-qd(a0o-An)ty zCO`+6n)*=hsj$9Y$NI_g=Tx5SFiulGZg&(~_?_1Wias@Sl053;oZ4FAE$kXBcgk-8 z8Doz1TrKYg0`H#67Mnd35=%<^#MVL9TGhpf7rzvaUWXAPQh8^!!QC*D^o@h-{*^oh zEZt-G_k|@L%4Og4RMMZumhq1TPca&ehc&V!1kHMJn7qZ{6`s7hMoiI|e$#un%{XDv z|3>qSV%Yr`UsMi%#_!S_>UW7>Wx3x%e7l5mOfl&03qlf?I!u3_{!3h@2`)p|e}|N0 zNQy)Ww@VP>)l0k6&h0Yn9|#&Rsd{2t*~fE7W9_CuzXio?_({d2{`@Yzd-Q_aEDpEUwn4VR%d4Ji$n=8@W z-z#bj%3eiAmK_V%V~p}GVn-_S1BK#7Q!J|YMsH7Vf1EaKD*?jl$xVoF0Fyz&56$`g zP7k5VZUUBnu2AQ?R6=jN^bVSEpq~L7I0Y6g1tO!<($2u93aCos=tN|;9V^cOt>Iy z61rsDuUNrzb@PjIEU`WtPMB%S;Id!OvQH3S*|}YVjI}+VPoRS0$^Ixu?dX@xXMAbL zKZ1=^y0L4m9=&XXID3#geLM>FZ`S3C*LVYVoTIT{Ljvw&*qYhCc{VDTt9q-l7ct?C z2x15!k!~_wCG4x+Q(~YX$Ue2nA11BVbc$hOTDM6P-0bCb$2Swh7#i$c`(-s4Qi%1- zq1SPRcI?s-t+i{6RDHEFhS&o}oa;8aM&;FCCoIWA6xPq~y|{&F3<(^LoVk)M<)dg( zK#|Tynzj4txf{E5lk?k0-MAOO?ok?sdd~NxD%rk0t5~Cyz*vphGl;dNBFqh3^WJWj zU9w{~X?^4Lp$$LkOC5Grb_sRcr!-=r_DI5RZ7Z0T=Kb|cVKQ>Fre!hqC z(34;c%XpnMKteHQQz@mCx1+baedr=r(|D8Olgu2SyN8iMT(Cz)Y17OkE%gi12*{Em zhn=7WzPlN24KC<(-~LxKUfXm7>DYniH!met!~LJrM<5`qoO&T>W-;Y#aBPk;JTf+R z+4;mj$Z`|~ZfW=q6wp`IYqng2a>mm$gdd=`G$E%ckTdSCw)~#Qo>p7~9^{W$SS2V? zdi`N9=v={8ReNtCk{VoS* zLG#9`T)?+Z{5t+6fp980<%k=Tr$fYK7d+)c&)hPvb(uyZUk2e_6fzlJbUipMvR#xO z5`7(}#~^;LBnr=9eG=jPC-`!(M1+TmhJ212ch+6gox1pOUJm@_RD)y9r`_l{(+iiW6nY4E23%-Lvgr7R)A`Y|3zy*oH)a;nW(tc3*I#b4nX-m zMcKf)IL04^InFkbcuxYE12j`J?Ep4{FEarZmG89Rw|RluRMT(HI?IcLcM`Lxu}5`S zgcw{%*NSZ4O(H(X2#QWE#)MOP*zK?rPW9=ElGTS*V|-4@6CR}JUChO%d}OIY8AEJ* zcWk9^K2V{Wx<{Crd0-5Kumsh`B>|+)M$0s(D z^u-J;^#*@nd0-+Pn4|nEbU2S+hYF8_ggPOfh_bGFjO8G%!9s$x>!WrG_b_SY39GDJ zP6(oI=dx1&?!5!+wZRYM+RU|ncP#VP2R=#a3F`GQw5JB#-|iPQL&P%Hk(ZE*Ji9~A zeHb^M^dbMr)vw8yu3nfob4>jn`2jlL)U(m0M>N`-G!J|+ibxAyzVPeiw}|C_#wkND z@8d^7jeZ!@!yg*EsGpK+;r`p0=ch~Wq=+P5{dMNVf+xR=W_4ShvLrq5?tSF_W9owq z#X+^eWmVirMWVWeU?cHq=N*@_a2j7#?)K955HtPSg$p_|suLVWL6)C*KiWPPErx^G z0w$glIH6+!cI10OIv0mfQSr+?(~mIjww&dVrgrt(u3Fsodqp2athwcVyrlc}G0UNb z%t>d7m8ltdXsGPd*R5&@&<`VlM(iMFv?GE4hc#tU5fUE`tQ~(PeY{8{(sff9O`ilD z6wH7eTS?#zj&M$ULEzkEEVQz+!k(G}tzTLuxI0l+7&hK`HRrWLWfcTA1;UCgBJS(N zlt&vA_+91A=+2JEu+MqR)?IJl-mE;i9t~FNh_0yq#|5($j@d1(?OURK}>b zb&mAF*U~C(dE~+V8KvA*MvonCn11iDcpcz&^H@$-kJ9Ehx-y@pLAoBgll$(QrXU_3 ztfz`DLdH&8T<jB@PmBj2hU*VJI!^o#L!U^|=LwIkw!(ExCBGSky%8PyO%TfxZZQQZ;bfqsv` zauUB8#g)~;`)(J@-Ewi_Ad&$a)#Xuc`a!>7-VhkAmLhQd6?kJ-l)i?TRAUzI`?z4Q z6Ub;mR0^iSp1N1kkzk}{1n1?O?)j}O_7p{JoZ82S#`aoPn;LG5a=DQ#4)-}?XxkVN# zlu@W!?Y^z_Cx7yy@}l_uTBv!)m%b0qU+7KF`i-%E@6+#jwNl`{iamaul0Jlwjcfe_GJh3RwQq9e6H2r4vUi+ zOB_jpiI5QEp+bX(^@e*l`NfgyH`2Q#-XbhmtaLni+)S&?Ox0Y^+!AT?wFs_YPCVen zk<_hC?vc$Gp=USXz9r@ImGT;H_t!=2GF|rZ_ld^h@`=BL>?MLVvfv7*q=}!+Zp;5N$$;ozgiQHf$VWveEcUwW> z2VF<89mEEgO#pq6zXRLmdy# zz4BXruqathwGrtQ zq>=92(t;q}B_&FCcXuPbL6DRV0qO4UO}&$I?!E8-+xc*0tv%O_F~@ku@7X;$)NP)p zI;Yi~#pyj_En_1LWro&Zz5V*56hVg3ElS&~VNhn2+mQ z{+tM`C(_;bBK!t|(*XN`6Buo0s+{Yg)D=AJ8cP}K=gsK4QO79$Qs1iUDGyd0X(qk= zyguwpx2Mjhy+-{M+c-xYV^yKe*K)F^9en|T?-Ig%I0PtGEmz**gp8ByU01Rz?$jZt_sj#-R8g_5_dH!^$>MAa=&5020^JM8Q zLJ+=qS=Lr); z%J68p)8=MW76Lc|E{tEUk&%#6dF}I-ikpIKkT5sY?@oV--NqO@**PZq(!6(@`-*RjpK(zljN7IwWyVJ_&|D#r!ZSEqWE zYAc18<-mmyvn)9qDhrn8q82kDTZ-)^64{6LYf!`;Sf_Jttgww=4gU5G)#VCwE*p{< z0JT$nk}_IHLuGGO=%PheqAwi?JIz}qNTUrD8gBVAU zBhm(A@p3b{1D92|e(~TSJvMgYaDsxJRKIf&ng&;}oISmupj15ew z%vHZa(04*JYz$!k2o2}H6|sno%Zh<~$dc&Fh+z<3Pl#b5>&L?uwkwii;0mHZP_+2V zbnYs9?@@+^m#@91Sg^w$LbP{MLp>R$GVY+2+0L)4>#^xlJLio{Uc1trj5BOK?a$u{ z!XS{x25jmtJwyZGyNxCK3wn3GB&j z+g{X=x6S99lUi@&5WHkOy|HixNn_$!9@fUIzQ8f=Sd^7oIsfu^nQ<&#KSb5IiL8%`Z2ae3%n z`fH4%8d8s9Zr#!p#;ZeeQQ`Li?$R?}~plSio;ee6X)lFS1P3D$2%AIi<+4OH18R^jf?z z^}eInj#Yy#v=l2Evbp_)x)^`vZ3yAcZ#zTmX7}82&0vp687=MW5sI5F%>a##NYRv_ z03Yco4V}$Fx7A?G)La^LY8eXFf>DzGD01?SvT zGU;u7e4Dlsu0Iey0rVt8Dr=hSdSXwHl*`UOl5#azeHb4=9m0hND938mK;pC_snh*E zu#&3xx^+tk1ZoFIfB@q;MDn1~F(EMqgjk-a4S@Q8_wL=sKyqMmZ7)$_VIj}tHlUXS z`hJD?y;niV&Nw5q?f2EmM#pbJ)b#`*b!BBGXs5qq^@N{-Zm(Z@o}fJ0=zM@pu&w>~ zDjxL%1VVd0Gc=#k8V9r zCMgkHP`uDft}AJZd|Vd9svPg(qZ}+sLD^{itF)97`&gWd=^Ry@f{ZL*Sc$gH_zwE@ zsVVYcN!ffco-$nqPl3>Bw>kOj&RZB7sTd0rNV>hi3jTA3n&(-JSjMFYlTz0C3m+N2 zTVM}0;~*R|eEiqvxjgT{GI`adfg}1CY{hil)hN!m>;Qxyi)Cp~Z6kMVpNxkqkDJ(H zoD8V+0NY)Fr;yskFastmZTGYF2|b;kyyXRW9(7_iA9Rtv%8AHgMk}%$3jDKox{3*^ z8656UL;%HJv&o5tc!X;y3#97+E|nDm33NV?<4%%+p<-iyy#oO489FH75-y8?E6k8O z)dH$VF}=I21ELHUHD>8iK>dyl zZBzCD0v{VTplK{F(Fl1iNU9HdB$l~e1-Svfr`ox|*|#2^7oX-l|Hb$TCFzd9 zRSN3dmy;i9_$1;NFOb*wo&_Y{dy`0f{F9fWxt2inZnc!Uz@(vg?{ zp05=sMTBxJr)R(%#AlsLOx|vbi;DekX=16^2%N3h$xn2+Kw0k5SV9kxyu69Y8URcB z`XSsOuZ72l3CpiyC`;KkMrHJ!?H^xIhAsG|=b-sFq5Q6@hyWzH2YCXBwLl-_B1?hI z5Z{>Uu{h`n1x+%b<=5t${Fe<^UtTV*3pOl&&=(i3bWBnA+!OX94$% z*r6T%DLl5zpl46F(l8)DpPmDi1qB(Iak9hK*0w^|UjoEyanaGBOL<8GoD-LG54#mw zswx*o>U6W~8`uFTgv8#~^r0y(Mu8w(d(!d497hV$;rz`9SI5JB1HCy%SeLgCCi@kL4!!kRnd-`M%Ttp;imH zZT=bLb-XwFF?fVpvfwa#sLx02P@qGn@99!vKj*9k38}y7&{RI@NJ0)xKpq4_W)QMq zc7h$rz^36CXEhB%(%G(JkFWCnX>a)x8;j!PvL>3Iq*Z+g=8l30S1q#JzoT|;r)X^* z^tS!3lWvY#xDxd~b!}#+0P((u133;I3juV4~nY3zSq&RIFvFSM}5CvU^=>oC?{gs;iZTp_%DA`Y^O#|K#2j07pr!0P_F{Q zuU4~%@LL9yv-gp0W7mH^Z5(2q-izfa6`5h>L*dO^1!V?evuKFadZcMkry-~!rV_ev zn3$LVUi{(FIsC)gASN|5LNw@EoW<3${vDUxiw~stJBVQpPf1940Tw@ZtP@ax6M#2m zcq*$UXoXnp2Pp+sFNVvGKRX_e>En)+EdxmCu@c<}-~Pft$W#YufiLBQpaB&KNRy4` z{oaBNlUDklqOOhhHxCdD4P<~nW0U?tt3`XPU~vXy7VGOT!CnTy@uhP0n}2I}0F{j) zh&}PW+{6Tb0H~CkNmOayrB$Zs74`Rf3@U^VvMV5|tEn=F$Od zS0GlD-o?lV|0pM76cZg3$}bS(COVvd5$SmN8jg8O{viun36aPS4<7<%da?3E)DU^QATUUO-~Ppv7FDtD!nqyv1cHZOQQR+0zS z0g)2`lA(!2*+BIQ^hdtVu4%2ssn)3f)g*vyf5itTplSeIukW5CyBQ2YE>NB~Vz7_e zWYy<*P|1Poc?0@g%vZI9)KJ`gUelj0Z5yWvSCaJQd?)?BDox&@M5OCqe%g``oq(yb zGg+QKx@8DF6A$%_05-x{@a=y!3;?eHV9pQP8d_-}RN#=~zRLFz^i?wq>2q6;6Z>L;T+nx`8kcarU}ev-jdrTrxFATC3w!w8Eg*;dvoc=) z@^Cn3?R&JwO9kyTj-%`jqOw^IyR*_GOL-z7*-}I&0{W?$277u{8|42Z#Q;D1FaVYA z5LBh*=*Di-V%;Ud%z31QFTE-M@IB>B^pr)4@~;a88VjD=X*fC-Guq6q7)(r@RQDp2D6J)|XiwS0%3Nn6_TT$o%sei4-oQ{(27sAJpEl)ZbgQ%IF7}L^H z`CE6LwL*}%2yX_Y=#$f{b2><^snOZGTyJn`LTZNjm@kLL2ht84 z&-fmX#Mcp*5%Q4Amq+gPe~6Z7KNHPFVMB1Qpuoh=$*3QP}?E%I-f~S&RwQMD~YXcTpCFO0Hv3vA&z9ze1Z)u0|wD)&g zu~u6lSKNV9@s0BwY^upnIQ1{pSf#5sD8fzwAF9bR!#AsyssbznhO3zTql=rQS{ieV zX3*i(^~Sf|HJuD~2J2)hTc!dQyvN~StO!LiBV=={%okF3xd%Sw=!g|Iv8{KM`|g@j zNXfUBs|wBHOjy*)YXSV}2`pKCSTKMIW0Lj(O#a@^p0paZ1mrC9ymrZZmiWWlFEXOnTc^+2&`3DX#|Z zPuM!Kdd~%yK(bb?#F5FL246HE)U4B&ThCYT%scd!OwwsX#GTRvrT@Ho*Ae;+FI2G* zhH9G1xB12_%@8M&gqykKc;h|4JneiQOFm9!@@dVUEm?&dC zQ_?(F`RKQNs}L)_WMjNDQ5Ql8Ol7cScDwkMF^ym&Hz4@|^F456C#SOjIW`dxQP*k@ z3}po?XFPCnx)x($QVI&rc6Pq73ck%pbUZx7rTnfKr{azStg>gFosM*ShitEn12CG3 zFUTy9Sp|nq#r@n?hwYYmVg&BV&Hp5%$}ewA9eeg;N)R8x6EWS>Ifp-vMl_!aTzL>* zxkJCFetR)P6n)WzH>75~$9xR`y(_I<_kyxT5`jB$`YWp4&I?--aedcF4s$VWE*j4T zYW_K?NP}di5h5xvGN~Udw4U>{EJ=}hp;LNeLUhjI30jdhQ4TRYGtuW(Q|Noz(c;f~ z(sC`0xCZFqFP1rCPPZinZ$6$2J*l22HA0Ehw~n}+(@keL3I+3oGh99UuNQO8 zI32c8&31BJD&*Lmu84;_#=Em^-<>47qYQlceNBdJ~@dj)@kr@!ELz6i^! zAdZqD!spjv0`A}-|r&QcHRWg`;i}y51Z_l$m&AS0(mZ`z9$A&co z5=|vR$QOxHNoz;uKDaI?eLRBa_w*;@TLy>Ztzw(|>#D}L&@V}1Dg`0m74B^Q-eqDS z49qyHhs;HNgxA{N7h;idzkxI+0C=>8MUi~|3S80^{eMd>;`f?vD`i~QKRYEUK%%=r z4+%Gex0CePJq-#n_vaJ!jE#HlBdG+ZdGYtOlO--40H58e@%Wn(^oA>3?mU!$)WHCy zqvKs&MZm&)*7R$Zl{NbhZR}>fAa~4WxRp%bpWPawR-Uy zT(6S+M<(FH9DxnXH3zb3I(#Ioj7M_2(l^jTO6d)f7iM(>!$fLndU4yqK@OI(rXHeC z((-mfh|2{;(Pp$q6{!;($8TCEr$xQrZ75_*Twc7bvgVy`8ISRVMt`Q5J}xa=6={}+ zzQ6xf(kX_oB^=0-VmTzgoKZ|t%-NSx@>JTx>$R0yCgqNp!8nl&^pDW^B~8USMdZsJ zGTN@|xhcEG$4ffXp_6|r&nUSzLQI$2b0E~yrj{u~FpBZHVdLza0wXDf4icvNOQ~2V zwmgUze_6&Gu`*$f5+MOz;v>WWQC7UQA>E~E>%R@%^%zYrUw058w;V-&^6O%e6`tOn zEN=x&Kt6%$vj00uY(MsMsz221*YM>iznY5#tYp_r$R^k7T5omL>cs&~7rwE{8ZA8( z1B2gwwW4|lc{7-Ch*ehMIrxSCRz^s8Ka;1;@x2dTX4&VJJ?-KIJ9`IR+|Lr4(AOMZ#&o zHg(gu)Xw_u%v7og1d1oq<=K{IvEuP3B6{>`7$G5n$yV$4nJ|K%L7%OVH<1Lb!IPC=FO;-P7L#-jscsUVo* zdf2CY$fm!OS;8sx?RrNd*gwh0u%@_q4$+*7KjGi;*FxpDThys?p6(#OiVF~A>&k)5 zJ}-s*={K&EykIJZP$y_-md`ICIkihQC&GGoW%WPy%Hw_itF8|X+3ZZSi05yph?{dM zXBt6{DTG~qu1bWV8kTQz#IR@y2A~RRQHK8+_v-!vr$tCIQ_zdoDyOJdycU)YyTR+tyoXVl$u+Q4llGjNE$ zda+-8SijZHZD({;1cL?i831t60RqcIO!(67^78SCg7A?Dv}X+<g-@4ZZqMw!GEZADcS?*a{+jW}Mn3ASmFEYp{)47v3`|*0x zNqE;Y6OAo3#cnY<3P$)9E6=&bbQ9HWpWbfcg-)yZ8)_Z{Q}Om`M~S}8U{t$xlpn@6 zI8~iC*uQ^0HHk$%j^WolzKU1JbXdJvX-CfbTUXx3r{Gke@9?+%jhBYIXQlU4`*0B4 zFh|FKZZtvv*$*!3nStibEVaNi&(CvnpS1kjC z2~cN}VZ?v~erN!O>+-=Nh@6~!@cJ@`mVOM!3M@ncuuQB}Z-u+jtN+4GH}>)^Dl2qKVvL_yNSsl9)$#(=`S-XX2Z^G{p-qhMVt4=;JhoMz7N&zeGfZSyIn~?y-5M?m zP+xi4sV@m>5~-D{6p0C+*-v#Cjb??SJ%_x5s#-Z|rNXI$zBTtImseRgwTNOf(^oe2 zjvPqGV_Wt{q?xd$z@sFFl0lhd(K+k zt0;bLRT#YQdtTKZpeGqyb=vxMBjiJ>@YXv9$_tug!iaKm>FlUigYP^Irid@@6XM3w zeFeRH-ZXdA3Y1)k7n|&a8O!FRcz@J1p^XAOtetr;GH_2@WQ|gOBRRy&_VI^x!|$9b zd7`gb!GwGB%qk8?cHyI0!FKU9Bs??Dqm$hxNbLLJ#|qK}MUb+t&MUoUm-W*v6?_GS zCnC815MIaa-NZMi9XD-F&Cb`c6Z!E zyWNqOmdD1y;J3Rxr2W(Q44xHKEgQ*gZjx{b)x5@mQ!fNI8`mdo*H)GCZ;_`jf2yHe zTK$_QL+XOPEw3C#_MAX^R@h9IkSFFfau;FJJ&CCz7M0kNWL^mCJ*^%eG41yyHN$(3 zY0Nw#-)YeUs8l!6?-FS1^Tds}s*hjZQKjf1=XxdwGBqzu7>m!|8U1*@w7M;??kREw z$KcrW_(Ku06DmuV2&;4RG0B6smeXP5{*K$kj_^>XWd>y|#v9QAKPJ>9F1 zKAD?YUfH9q`^cd>4hG^xK2EZRjC<_D;)oG{Z6=gNv3=Zmg~z<~!1#iZ{H4sw((?|C>&J7k9JO z#iu4z*8d`*Hi73{aC%GrxaD_=s|BaKOWwvi*%wW3!@Rot$Y3=_$cw9t?}#w6k5FG~ z+!^mkT5<0LlE{4CHNx=YiWiVZ{kuiFWH_ zR>|G?PQmr0B5>NxfwFBZsa+H%p+^CWefy?dww{YeY{aD>SbD+3d7ke6*FMpRp{=?umFm zh85`y8V&9u*gD__;1*kwV-|4rm4xy$&zavG!v&s_>EO?V;i&jv2G55 zmA_*IzP&kJs}~JojZV{>GTu0}>wte{3`41W-!o2C!j{cY-;NV3pq2qidp%5q>_9qk zo=tTiCt#RI17b-1E1P{N#e!prO8)1<`j6u!12Z)7p_=3tb+qu2<@S-56$!zJSrg3)SjFKaLkAT)O+ETzFrqMJUNkK|(16PAr@1 zcKbWUJ4~(Se_Vgn!=Dh`M(ga9s)k0+uR$!g}y-b9Us(O zUyTGjEl@aIS$$gkjuwxXk53eO$TdvVqe35|m+@;N(qq`Kc`WhNJFuQFve;c_@b&A{ zG2%B7%`*Y-uMfsK`9KaxR59V$)~s#C+H;xMw8 zEixwm7ZP0R@@m3vfHkDg@G`3+6N+?}ZVLX zqVD1P5|ZIaZ>=H^o%MyiO=Aq_WqLv%qWbU0QiJx8AT3x4EzDfy+>SEQ%+W9r>eYDv z_8P8v7VFr^mP){GsWgRRj|i7L*%rK-l6-@G?_Aj3C+wkcttVH{gd2P^5g=2lovX}P zBBe|01AB}6q%gJe3oJu&0c7Dob9R~85@9E}U8)zKU0lRV(N4fLR1LU&VFd}wp0>L^ zncvHjSHfWEo<1*{F&+ly$2LZ(_Sp=qO+Pved=WB^J+bRL$>iW*I+mIHg#^mII5A=7 zMh0`^qmlLqob}6#RHw4?laZzBu=iJg?DxtZ9kgBY_lka3EqbMDF)l;ER9nGrVgQnh z|4j7GGJ*CpvDwk7uP|WQwbC6f2{MCus!(!aw~xnJrSTUqwL8%iR9~AkMY}zzrUS0D z!2$3=l`V2%!v$*dK1Yao(mY*J;o4L7ml=NloEn8s8T;(!{(!3J>JN z8I)L0#bcGPPXi=M(Oc}CH&2aP?wd9O1`+#%S<~E?&MwHkt93~EM+Gf5HAE22uFh?b z$QSKaS6l-(?j4-EkA@HHn|%ApW20VSI8wbK)V=56MELKf;0Ddf&mYrb({|RTuxq#h z*eLwq&S9cvIZ%_>jb)-&NYT8Xp;UpvwU=l7IgM65U|(N+d;L?4Kyk=1@j7;=m)GI> z;2Hf_wY<2kV9{LBh?mdb+_x3q=5c=-aQ0`(=KRUMRuMc(&bW zf2ZXlJuIX#E+&;m`PG_sXwmR+ukQ|JR@Z;0R|3q&#^wvGLIM$dK% z?6tUWgl+BX{3(OSqze1Of>GO}#Uc>Nknd`44F_-E4+^uEaMnsg3sn1bD`(Bm;aygZ zi9~wi=CkKe%0^F~v6bL*!PdE($)gjEvX?pQ-;XiW&`bYjF!S6){7nA)^!{EN>PUtc zFTTk8H>3sYU?-0dxw^X6+c2g_zrv@RYazoU_qZI+97y(dPN}w?Ebq`n98#3Re6qxm zxm)wJ+)9wJY#un=+Nsl>imR!7It|b+jqA-BTd$Ai!x{);-Nvf4hcDqAocye_o+B8h zvD;b`t%roHVsBzR5sCOqQnO$3u;=s`SAll)>3GgZ-KB=DTDb$ggN~~)aKRb_CboS24y4OMV;b{FR%hP3m=#w1HL%$;){#~ z;zUkJ(7Qld? z{lw1Me~)Q+u)TwWKWq`$sJ6$ft}?xTt-mq2w@`NxUaB(-n_1>@zjc`GT=3*Sx=0tk zGa6t3?-gP7Nx}+#wZPPRJ?q#z+Z)VPy0GNP$;v9o8E_YAcPC=dS?TBrMEd}Dre3Z; zSGCq5PXusP0N`N$`Ewb_XWilU3-_M|oUHclfBqay#3Bk-m8FpE?3^%gTzAU==zFWs zbC`{tohXP_-!T&^r1BBKeea)|8qdng1Oe&Ru~kfF5&-C4B5<(%^yQTMm`7fh~`bh z!^NL~yAHl+SVsN4L|T?|;ph40>3Uluz!A<+9|h{PoSYoeQ6dDNwvmyi@b+y6M#jFr zKG7ZdJ9?%!(ejbXD$1Yd>p^{!1gO?l_B{7@r|r##Tv7!+u|*m4?b zyS$>~+g2A9wUA-lW-X%PDuUE#TbY`!`yyfVZ!7})L)`{D6E82AMD~&!qAM0f`KZzk z=okikfj5MJrq1H$b;-}qKi2V4&czF!a+>&Hg&98n-)~7XO!OzJq`x22=fz82-q){> z)Yk2G=NlJPbt>#4tfjmN}bo;DSfO{KsxRIK@^LFK~}-D6Q*RWnOj=*L=ZIGP}^pF+kWjR^_{=<8cxuLa!5#2*Z%9&Lct@Ym_+ zDY(5+NA~>u`MBkucx%v*2@VWp0X95HoCr*BU}7gZ0^a3O8_MRACIdduw`u(UWAfiD zU*>=Qdy~}{$bmA zfTz)RrbhLBk-qADG#TyyyWBwzPx3ARDor(Fy~)5>Vsc z4+OU?@Vd2c)UzNVsjPT-c$;6kb#)zfr)+^7g)ufL%oi*i@CP2HZEm7^8iWEY zLAE13*m~NvN<^T5Y!ALCD2$}Co1h1=KK#E-?JmdPT3cIzAGsUrzheVU)MWnp@JU2? zFj~(7L^CtG`#{4O$fG0^={+#vOE{qq~8ACkrQU|Ipw*JU@pe;&NpM+1HzYWGs^ z!`8}|%1TSS>W3r525AKRko@rQaCP8N8>?&m;9vA8jTB^V^uf#nyzJ5%IQ6wx90NDm z!-TN1v#%;uf_~&6bu-olY&SqS21P>9KLF77Z{EBCZ#GHx&#Yj~Qe*(V*U{0>P6H+~ z$F?@5`bpiP!;fvXwY&bN5@}eq9ClE8Q-OE#_#Lz`M9E7OnQXrhbQ(~(31AB@V8i-1 z5&rg{mGJ>_*r-L30c;&F1xx-HKx!7k>d!Ayw-(Zy-S|(m4GAAUMO_Md{ngo5`-W+C z6;EIrCq_LIM8E_9_DYPbppp=h^ux2+ zyp|Hs5HjvT(zAdUf_sK<3$DvI>b)?)dRCPewF}$9kvy1{$2B!RQ~}WiW2nT+&dxRH z=>az|OiCdE;MoN>lc!;wT*zOxefNLJh>H|0-o@@*uu9IOhrGqjS$}3O^{ez-u{44~ zn21S+Wq3ZAkY}QSRz5yHz?XR^b#v=XTsx`U8}*^;cNpitI$N$zDc#%&Mt*E-bZiU& zhJib82biQqYQ>=GUM5!=n7btoJj!T{P|6ua(DFL1TYU36S8;7h$#onvdZzAF$aKq6Y>0u)EAkH8A_&K?v4`xH@OQjFr5O|WV z_C^Dl1gI(zzcv(m|Ngy_($gT;FB4R;GM$FD=eH$t*SDtSeD=HLI(5n>uP)RI!AZ(9 zT{N?W)D4+Ws$4#OK7`7fy!O`M5F4KO3LpJpi(p`8ZuYpUa#V*t6!9LFFXh9AEownz z13<|oKtc$v*?{+z#QDjXodi6LQ`C75B!xxXwzpX}2yb@n`Ac80=)}^-EDXHG_4gZY z6@qiSKvXK-B!{~YMYcs##M}8-?RY1%X=RN-66T+)q_)Wc#wM7hi`*V#M2xXArRwf( zZgEVF71h;1+$K7LRG|zWM$wa-o40#$n0nGNE#{LVpTv_6qe6|MRn0LjBrI=Qq)dC{ z_mgR}KR!$l2-WgHBJnws*1w5F7r+S_emJ3uDDE~f+(NS7#Q^*5#5ZO@>0GC(3l!8& zfJ$|$4-S=`m%_r(7r0`Q;$D?57grVIR&g=i9;L z{*@!t#Z8`SBbxJxNI%H3)URpw860gL1h<-rRHZ5Ur z!+jn8KOzM}!eJuP(690f4*@&~fx#}7BmInCwhe0|!Y($@Qlg?$K8(*8o`u%|d392y7gFSf?I!4U*}T)n)!PFWj8ceACpalacaNoe; zL~8)7C@yAlgKAO$^D?kU{K$tG8Ud^v#SCz^7=65FKP1R)FM63Zt6^=zcen9dDLv!_E6DwLnme_VKJT|F#HQ}vB_$qeEc2tWZ$^>T zfo$^)wBDiflF|7I(g~rL9CWQeV0e7nJr*5ObdJ?1v+x8i+7*&@Wt?(_N7{`RomHMc z_nWa*V;D>4;`;M-xbUsj@A+{{tc_On8Ib0|dHrMmSFB{oQ#ca_Dk@l1x(8wtg%86E z1$|?~3Np_HbJz^mABhlox)UOMAZB4rQ~w zw7k3wWDT6OLdu|EQnTsnRRJPZ;L6)QG=!7N`nEKSa65RFS?$-vYL{F>oq)r#sCL*n z8f5~l>a2Y1O|dLDyp7^o9`)E^qE;|dV;}RXr);5(>ViF1TGYg_aW}MXKC`@PZHUIV zIg8Yda@4LiPyrt0o#oZy=Cj1jD3j)(G(t4^W)po-#mwy6Y0AB}6+h7B{c>4SH8V3y zyOEq?2b&$6p=>FCaBwgMFuIYO0ia9m#v7mk?5g|>5FT5L=V%LwAj$^%Jg4pP!Y?$Q z24-fGbyuK#*=5~nSP8`46j?iG%{)3EY#37cW!2|d@jnHfVD?Vn=f65@8slK`H2$T+ z{`$|U`iwZkW>WWMCPcqQQ*omt_e|U!O2SK%Yrgujg_Y@kl!Vc9=LEUcR+~@YM*0jG zr?akY%cIw3XX3dVGQ$B~+re5VbGs7ZXUD-MnnXth(ag_V<=xUgpPc(S7{RfKMe7DMJzq~c z7S0t^#;QXFdW&aGc5XT>zz~mk=Ud+x-FFF}k5~eZ(T(^5G2cCh-q}gszzj~sn$E>- z<<91Uv;6>c+$C8J(49F)z51P?>t*PM#vpc6aB`>Vb4kS0!tUfv#wGqeX4wtk)-4g(`G7fH8I(un$0d zATDmQo_4BZ#Nw}Ct{^X;_wLh)d#sEJz}_k=N2xNh)Cq>WIl?U^_(i<=fsV?-5A-7| zSZmx|v%_j^c|9?>{ zfDqyn%V34TmyPM%zw0_4Q8WnY-1dYAlXsve2COBE4IgZ=uPCc2*#?O!oD`_zvFq7J ziKdqfGxc%Jy2QXT6lhepC|eD>Ht-3PW+S!l+cYIJN2;-kFWFX*#~ef8S^KDIxW0 zj{o4$xQIFPxc2R1$LqKB#ncwmG!`g0sZ7dw7%|OBr$-{+l}*%WU|(SPeB7H;ftVzs zcUHE5>IhQ`rp}$6;o7b1BYhukZAp+c!q=e&5F?*EUGv~ zO?`;>2TY}Zk7b-P)YYXip=yxfB93{ie)d(tOfjTU{$&a1{nFJKUl zitFy~U6kk%K;iv`Yx0bM2D14j=;@X0H@=MirFns@W6F={J#X?g!w{qMojgb}C%(je zm+mvGP+N-+THU%biLlQ-e--x*llssCVz( z?sOz6wRo^pf=+z$>5S0j5Zgl&3)mT=weR&kN8c_552@6ykz^36aUY6HOZNi7!FJRE zh6^sZm2S3`>$em+qM2?2K*t<#>5-85nl$BT0tg?#=jU*KGRNop4N!etpKd)PAt|Ig ze7Mj89I6MPqk+I;YiEaygajCcp8}WhBpu+|J=5fT07A@xRQ}1Ssd{kbe+V|8aj_g? zZOykd`S?7ZMXl9ta8io~@sg+ugyu=f z$@Fw|ppo%yK;~bUXhYr8P%>`$6rRVi{>m8$ekeFjPEK?iiRtM$;_r}7Pfsziu$JP$ z%__Q%7v`{qC-$(Fj8VV2X9$7J@AUsHRYX2HjZ145c$y?n<8kC~FCbTSlUs15l9t9) z7l2~zB&KCyf`Xs<^0*Mvm*jfrpx4l~-#n7(o8Moj*qQvY?r?=tE_${<^89p#tlpNa z=>(2^Xt1x4mi6YBO!5;YNlF-uiQVzCEBs!kDuISc;TRCA*%Y`0#2&pAZ5T*9rW1r< zFqet>1m!R&ys>`1YQ8#{OrUknrttTG#CuKlsqS19!}i|q`;%HH{*oY~#Oq@U681#p zxj$qkcb~GPy1(=19K)aT_~TJ+q_6mMNMe&ff7udXWC!fET){u<*0(gESik?6C@G%& z_Qy$9fG5J`Yw}ZOEzz|vFYX|=)Hrz_QV|)E{5a2BgK@kSf-dcCl4J^>7d0LR=(3uz z5d&?1Ahs4FtM(5|S6~swm5kM*RoYz3pj70jbV;3@K$>3B0yEz^xXVQQWcfo&E}_cf ztgCH9x_eOf*0EdYzCy!>?{j;M+Kv~nUlVkKZ^PyI5!;`=!5EGq$s46oD(41^*tYL| zFQan9O^Q;%RySp&y&S;_^Gmbb?RZ-ooZxJtHf03dt>w8$M=`s4DcA zHe1VBO$YQt{(UvvJ5TDMuq#yR@KhK=w-?os%QDWht10|09~!g#!IYD^1T+;>%>zLf zM!wfX)!0%iOOy?tSHfC%TYRabG|CsyYbk_n|9)j@@}*Ypc`hQ1TcxGUPcK{`F=jf@ zVf2Pw+VaV9>qU>zUKho_*HiE3f*6VS9NvY|l0Ba8L$zc-7TkAzn9$P8M}x3a>v=r? zC}fwypcO6w)n=QBDArPl-)%WF8o=M?wz^LJSoVrb#|cTYMaXR%okQrjLgZ08*k(Ss zEU#O+x26jiolYHWuwGul1tshK%iHt!a{0NEov*(BdPnn)PBy;$1j{w?D$F^o5ud^1 zhybRU|=G^x8A6ds|?5~I7b_%13)N4Kt`sce(t5>@$G?g`@%#_ z%%2Vqxfd*E+^v*N`4`x@x%0=iEPSIeiP;_*f+S;4EvcXzhZr9ZPlaX) zFiIjJBkM2+f${a(4$8{20>%{4+DarOR?@D+!|5_Teukd$aeV&UZ{gwHB zHoI+=nD`&t+Q&o_zmo;+uKGRlb$!IHI_$VU+xLo|1?SkfhF(`i!8q%~_D?cW<}a>- z#;E!F{l`fg-(m=DvJtz7Lop`E2$?@F`W}-LFfzP+(cN^3pf(YSXySOW5sm|SbFwZ1 zmnfT+B#_msXD2v5HW+$svmz?AAoT9Ju)}vV5`rL@-eh&IO>MRHRfl12{43H1TP)p% zEfbl_DvzUY?wOcTTTM1A4c1H2d5UPSB>m9`&15n^V!@;qUunB$^}UVFgE9CuQngYm z@X#r^mZQ}b;N||MR(xdTYaojU&6FJ`(DR+aM8`Wl+{i|Hg`M*5V9H%FOBE4*a0#*@ zBF+~;;tKZQ$WT^bGkSBpCcF8IAsa*HObZ{@*1C&B?BB)J!U8vM{1!a<{G5^vAKUHh z$GF&h^TF(ePL0yj_XYOf^mv~)J*oM$;4@oSW3`YeJ!WdNxPBs#{4${5Tgx0VTSy>l zY+|CL_iv5W#xwGGXi-fPTdc=*$h7^|`|l>g9BoYw9jy6M@@6uE2w83kI*U(um^k8g zK8FSOu&9&QwIILtWNy7JlGCyKyf?rHo3!t2T0*=;I1ZHjB1;%|%gJj!RrTo%4juVu z6N^>l&44ROXN*H3gbod$&waY1$mg_;fZ~2mNsp;&jFajyQ^Pq{lqvm;c6zqeIRP2eybss*J>rM$bO>OLIJEx5e5uDbnQ=*^yc@Cl|z30d@v(ULx zbs|7hvyxW5hmOZjDpQn6k(@U#t(lyvv6~et;nKRw974$ci$N|^la~*lMfU1dV{?Xh zr6|wd_V4fy@h6Wd<8GJ`5O$>`Lh}M3`Z0{By7e6NgK7Ac5o}6dlHS&4(pfdTxTN+h zaU0gRv=Bj>@#hf2U3q1Tc6<*52$oE%rLz2g@yYArM3wgRI-m`tyR#$4!O;w&um*`Ct}f-7sgEJSlC z&JHzL4NGzue)HI=T!~JjR1WuNHCR6JO31`97P|LH(6?q76n3EG_FyYu^nvuTrInQx zm5&&8;o2nOOPN|0bm#|<*B+~yv%(=ilIl&mDgW3LiPNuRlM9ebhNbg(j{R6LK&FUq z-<o3~EvX?)-2Uo5PCWUS|(H&%C^;n%rd>w}y>>CvZ{CTp?Bl8#q@jCdv{ zxu>qK4O)j?z%gmYI{$g>hoBg%)(=85J7lXWI$) z?%<%u?VDV12%NnUeO5N-xI2%CrPAcc9WH0E8eb%z+WNitZ<%M{%8y9_ge>`#7Sq3Y zu9?tEQx&!55HDhAiEbUz#zIH)#h+9Z)BZG!3C$KSre7u6bx7sUu59P2d93F0QulJ3 z4s#CCx-ZLwvC~W|)L!>qrM616!m&us=V*w$4>IcIbS@StFEPnDk1<2O2A*LDS^X*D z{q;VD{h2nR%+<+eL!KDsjozY26?*3i41yxmArW@vxN)cT=Y(c?E9ML-mz1!J2(YLT z10XP-pAKqt(GxExQ#IL$=V6`?ap&u|UF=+3`c=l#US2}-D&iiQ`S~aZ>{X#pk_Yz3 z3!mjwR#&TNuss0*>$h&SMasuPUwZ(bGV0UX`a1G$b7bUG%$}v1#zS#XzU$Gq$D!bR z5-EIlNka}AZ=OAS=Hh>NXk+&Zq-5xG{;?N4)$ltEpsD+ROucnflwb5c{2`?qh6d># zKsu#Uq#H*NkWNv$dqBFoyF`>6x-SeLYx$pxc%D1wp0oEpdxsGQ z*)_hzBEG@IS@umkmYQ9MH<-|b2EcA<*_k#7NIj!FW)9uVxD)ZG)YfOWtt9IRL)IW{mS$k&Kpj_j$Nn=emer_9g~B8 zor?*3%2_eB5xm3pEXN03ajRX< z=2m{kER*T0N#+^^dyW!DNl7X57C%_x=`&;hi-zvUT!MBZ(I2^5TWfI;!ODLKVqcvx z2C2EkSS=mKQ^IbadeT@vF1?i(?JI?HVE`lrwLo540CBKf_uAY6 zWjE1)qy7(p6z9L*Oqm!gz2@iVGdTL(E7iDc;tC5;HTWS>aS>Vk&az+y643a|pLjnH zgEpHXWmMmY3idSPUm_;&F&~(iB7^|y3l4cW;JfVW%PT7S;m?hXM1_UZ{2@}Tm*XLp zs$N^Tj*gBV1fnj5kUcQPZBpX&t?mP)2DsjJK0N?64Ww=t5z{pG(H5z1BzF_{LA2~d z@jGoW2_*Q;pSa$4+F6p=2jRy->uohgKYvLe?$e|N8Vc2y=;KfCZQ9S}4Sj-lbc!r}XO7D59u?~>fI}&iRP}~n2=W=rU*PXBhFj;G zYtvlD_>%`BvMehnr{bE5??*H!&B$;eLvJT#bqX5WpH)ld9LtmJ{=LO}cF8hULaWJU z#bQAhP^&4K>_s2N%3cU)QJT>Y3-+O9#BlYIzbW!Do{)RIQ@z*sBik7}xPM**=pN8Y zWqjdGhINEVg~~_hHH*)OLWcrm4VrZ{w3^Jrps{0f>`o2+?oc?wp1cxW<_V>|Q}2i4 z=^soXzBjevLLV2cnZxSp?fBF-|CA2J$K##jcNGlw@p{Kkr2h_59QX<@l}I9z>*cj8 z3|nEsd?dIy_z}iUwohnDujky~CMg4ez##SK6ja}w?;Y@U_Zq#5$adpCt*4=&q-T)w zo}QjgR7RF-g98gJXpBuw9ZWc#R-7{I$Q3u0cpW#)wpj(SNXUJ)0)Q`F!J! z)6hDi&OwNs1fi&WKH=HNZvO6y*diCW6><2C*WRbI-90$>vj+i@nN8d#-T5o3vBN+< zd7+i$>EAy|$9^PY!d~jd!nUWwUImeP$B%Lr6Z07iK?KWg6x#<@3pS?9icNA`BVFvS zCmx+BIYQ~%?r;aH%gGRh`WiP7q`c2@eja@M8!YJAQEhEq9WW0sbZxjZB4<@ENa668 z8-lP;y%^>rJE5ktAqq&x6m zOeWUym*7CwvT6QUu6x7>so_F071U8n29nUauC`ZLeR_|Y+WIr0WW@H>fZfQ}oR5$P zjf@A62ZiZ-sP$+1R{2t!ZWQYB(-3WP|0ZOHFg1kK6lpd7UUt)adpB!0??sVS=E*O~ zH<(;f)|6*)O%IK~SN5&2NN0_IFTb1q`t=GsR>QmBLCw2s`r9{AAtyzG)+hF+yAldD^+JR7{34Hx@WO@xKj?tXo{&YpZ3{r0 zYQ5roOok(XVC*HgHS>KCfcAjj2^be8{>yYa#EERQ9wnKa2fXnQVEvkzY5n?j z$}tIi5J+lD4V(^RPceKJ~oNhG8NUavR6i~23g(#i@@MFC&>M5DZ0T+0o} zr{fhd0}V>p;+-_Ym<0a5u5auYm0(9_Y$DXtdL)a*`NB!p3)*X4wl&v8s(0Ew|l=e$^Jos{x!OM}3~1gx!p;!Y=t zhBw1U1e4_FClfY$vSX@Td8a@@QN7TiWY1u!0f8vf$ z@ns5QyL^VSCz<26&LB7;Kj70UTexLyKA7ia0e=q@KS6!~<7_a}7Y&!h@p0(*8j&Fw zci_z#$5x`m*8c8yM=4j^;E-Gs_37;u3{Tnb&-}RV0|)4R-q@+qi>ldv*$;Z(J+hZO z+p283LvSe?GM~7fs%*mDv0zSj&a&VSe1CQCL-H7YJe^D$2UULmVeF~6KbL=#|Aq2o zio+Hh-|TJC*6D=!oAUGD@vN~+o)lL8NqV(C>69v37PI_`c&IP{!c4QOTHXw#n#*E9q&hulCnKx01yj|;Drw>P8^h=pjCAXSG}bY1c9xtuKvrzL4ZcE zY3UaTR-9+`cfY^&F|~P4W=$vN_Fw%}uDIT_P268wPsGGBR~bP;V&1{^j%ab1$MO3y zpj)NStQ_|gI@bJp{4IJel?%fJF`8}?Z#YcTer#_Ss};Iu z7ezqnW&ER`%TmC?!~fZ6fxvRwhKw03`r*k*UOv8hYJb@6SEEzABF` zQ}^;?_!tyLSTnobx{*9+ie!3L==5vI`S+w>B74O4&7;Q>A!QNJ*6;^>1<|7}^QsV< zvxk@mJZt|Xlk#v439VJ!ERr(@?1t8*^H^}BA^r;>LulvZxU!p=_jr4QPYWI;t!Jo!H2ZaC8U`(YUO-Th{mc}cmmb(B(3?>! z5XXbs{@4QqxM&*)%Xt{{P(<}t^%<2XR};g~Ge#`O8jkzCxV&>B9~-_6HhI`NW0Hx3 zl5w@D$~mzd2G_C)VKdST;Gha~7&yG$%TwX|nq>6FFki|kE@W>swIskIudO%y8vX6K zI9qLPDJpK~F4wdR8@XhHozMlwGQ%Z}tc?B-@8uQSnLY@kwc=LvTg8Ykn_UMc^UVemySo3yYXHcF(rX z`-DGgzgvu+(I%QW7_FCtqaSV%<}wBv{v^xGggfR;CU^N;EJiF2zFMi5g^xLaYN_Xk zsYpXf*{3J#y>0L`F$(qlO;R(1;%wtjts>uzttUde9?dG|IA~|RlPv&_CbG9%9O352 zWMbD;EHOlezYZ@~{Q}uf3 zR#s-_bTqFvIA88#&MS%iyA-^pPf=Z6fr{sy!neB@{wM|Dc;bRp>UT%9pK6VP;zz{7 z8v+YPMMHBpd}2G{_U_%)#l_%CT__mAl&nJKPXcT0j&)RanYS~=)`^b z%%N=AJC4q|W9d~l=*7>J+pkYuzpI96>}oUUS(VH$CE1955k<8DJPhV82=d!7(;v3&KEV>|Ece)@g$P+<$)TBqXR|_~K2RYR=vD904Aq zWubMi4?Z3x3Bm2MeaOh~WfW(9!)FlgMIejt=-tRvP9MZz5CV?pq*h^A)ccQ~XBW87 zkiV}KZU#2-w{RauMB8rpEIN9B6c-pNMDnvH1Wm4X20)Lp8M&jwuaOrW?}a{w#bk9k zK2?;WJDS~ug8@P42LBRE!2N7ub7YQ8f}MxWdAYX0ZUn>RPw>-CH(b;>*=&P57Cy*`$L?c@qPry-kjblAQL{rZb&KJ-?MMUSOEi z9~qPR(NX?F9HIS<93<9=WhOK){aSu7sJS_bP%rz?(&D^(C@;_ZKeoPg=_=2dQPj(;V z&jU5t2u2IgfC2l!Y_m_UDr_sD*<ZGWkA$<#)m9U}dAA>a~##VHUqYg|sz8 zLm>nIk9@k2T8Q0c`0y0_h>4ABP#{Z3r)$WHeZnHM0yi-lLwfFIrZaKRa3#wA@8MaN zXRF*cvkUNdqMvE&(^U<4v5|=r&@U7OkwgSic)zp|MjwZjQ=MiPnw|f z!Sxm?tAx9ie$3sRs#{eJhce-PW#StAvsYbCKLVU8V&qA~E{S{wvTnA4BF9A6u8jEc zo`9%l>5z-LIRhDOqS5T{(UHf>lCJci_;b%o-(4p%1}}07$21g*durx;j0(SwHt?-C zw=i;H1IK&5RmR~ox^LASHQ;zC9-a;bL6vES$8`-2vcL`PpcU8zp-HEKMYOwb6lKrZ z+VmTDc=8sw$96jwQE*`wu%{8-xY&35%4QSiha&sxMl~gbU56M5Z~Ba-N&)Km)z4Q0 zNGqbP^sR{qGi!fK%WK|v<6bay@W&`??&LGCW?HZ`d!F4@dzpC{eQkG^ROnZ}!Nh!i z$4uok|9*pT3t7MBi$^C@?M3qu(Hhkj0W{`KYAMqPqT+)d$FG~(+kM5B08}%3hD^UB zVrhG`LrjK`VbOU{MDleSYRD$-dnsZ+OGcL?)YSEcy+bwMtX9kguI!=^8PBoX5Of7)E@8v^jb!(OG zuf!si|54~^6I^5o)NsspK-?KMoD9AyD3w{5LZe_=c$;vF5gvjIYoUdx{3P%Cp}4?4 z2$7<1Ksd|j{x4?y*HZIOz>LRJ;za_ZcwkEn%!->pZT*+o7#?mn9ij{%9$-mr4uaR> z<0nCO^njJSwKWUvW(2#F2+jMu+gq^UG*uwm?Xd?ghEE_XJkdfK1V1Wd1M~TAvqutn zz>sgyD;&VimUDG!|K{~WC!|rHnDX;d{rJuNNcd>e0nRaog>htp4 zTw%@K=j9rP!*CG__0j7? zjf-%2k{{C8J)x;hHq|ssy4ljh66%!~rFQHK?8|T2w8?e}Ba(kJ<&&2Tv%5lb49mkQ z&(Mb4$yGK~4F};O?6C~{quzq#))P@^&S!-rJP?hNKv#76>~F`LO~3T&(`5vn1z zhK#A4_bCOW>Z$h;_mfl1gbeEQ4hOs-tU(ZH?4+fodEcMT8^Po<2=2&5hKO)DpWAt9 z?;(rL=61bCd2B6Tyg(rbk*l6Se0UClGBL>de)O;TZE@9}02QR{Tim@>(|a9HX>&0r zn>>};GZ#3&%Q~cZmhZeFHP< z*EG#O9WK{>&-H;@boPCKPm7c%_6PVqSMBz_YoNlCWYk3wmGFy@W6`IqzDq!&<_|vM zr=ESDE66RuNmyOlhF-=X?nT8%C*h8g5se$67agv##AEM^NF3Fxu=OOQm6o)*A!Jrb zF#F&X-vJw-MS{OO7bj=cE6D^veg3|I#kqMWZu;1>mWODn z{1P`yQQRFdl8Pwe24H>xbBQqutNH^bEc$45iU^tJYK#j(Rc^RYi*ECzQn}t#KDQ@A5l5pr0vC!k+rem|d_% zU3nSpKEIz*5XCgR9$ETgJI*&;AvbNlr07YWR+T5EP$+s|?X_|+;9(nTTB}O1G*rf4 z{9>=vx~WNn=vkXdt2@r&J>=pyte^){;d0Zck=e3t?|+YSbDP}@`5#nJzG(W(mj=GJ zqf*7Hd9|T!^$pW50ywKj;-2PM(SW= z91se@_ri!uZ(b}Gk{ENoFC!zZ-lyB3sc7`vQ7<0{4V8J@?8ZjHq^(}Qz+v17viM`` zN&imB4J{63oRfq!m*81UfOH>Zp5$e6;34gq*i6x@@1PyK)irn#b7tU6ybgOcz`>n4 z=P33cZO+ zlS#A8$YERl#lw<{h93J0J`07CuWp{KrA>_uQ%yVUHWbk<)KPW{{;lbZ^2nL(tG$zJ`Jl2SG0#f8xJ#oYN@AI8;$z!i6Tb2*eA0b4@aM{ z-0B>(xg{8g-EEHPPf91cK97DFYFM4&UUfLl8wuMrQr$)z>OLcHZcs zl9DGcdx8PYg$TSemGf-V(pA0lpn3&kgkyr~u@WwTabltLbq`J^<*2}<;{B1b-Pl1ex zy_(No=M*eV4UJ4rb^)b4xcB1X<6Fd($J2QsJjN%;(^vohKeB)=O*6*mC7$L=j)>!X z$wcLNngnXe-gRNdj`c=dT0vYzch0yp#~|l#2nBIcm+8U`rH!4}^|prIq!IgPSkc)M z{q6Q&&-NWw7wzKa2iT9k9GZCsI2E1@sziX(?Qf;6vrlPzpO_zzc!K5y}f z5;@>E?|*hCbB^+mMGf1w{#9!Aje4X~-lyMnzi5%Dpd7+cp-P{U`kjvK=P#;5hD$Ea zW-_ah8d+^m@@Q?(YvtA(DZ&`vyj~*Rw~&W_Z&{~ks1^!(aNyK$8LqwZsw`U%{H|c7 z0u130gDTQwQ;W%U1kceI)XeB(f@-$zDeAg%+b#oFrX%hY0huEznt zyMJ*Q$N_xFs_;aq1wAvle;_wA$5GO)(iKHgxa>)pHw|%hTQ#dTa=S!6{u%++Jwi)%d2)^6TXcX>*~SJ;4DTEZA`|R+09IIW6dZ3a_J5CF zr~2(Y9w-=5sWh+nvnGH$j+vPm&?_n8T2WF_JQ& z@GTARHx3l|@+o6*X>XOti|F~U{n(4}Lt#|{IQ4h!S8$bBI2^PHIcMgDg>|m?(9$HtS&&41chR21@eg)UdWJFR70f-6bqXedZB9FZ1!ihl25HEZU-z~jmLQuC>+N2+oo$!&+*w-t zA<)e}z$@gCf}Y6wxy({y@mDa+=1Bi62)v2m<_BbM)DLM&N+36&KE%esaoFSg7lWJ{ z6>{EB`?-q6!8Tadevj*u2eFw2#7z8WmgK2?;y_tv?{%7e=Ib!+(bn`e;}p)YIa8l# zhCi$hY2~jtuLa*|&lyc^qxrmPwn=BvtNd9Hr(hp9GjWax{jsHB+y?h7tGlDF)e)5L z#GXt3Sv>h;lHuSdUPM|mR{amzS2lIEpIDuvs_UagDq1MFzXupaQ1@TPomvdIY|W_X z*ZFEzmKL#O<{WGG0#*~%O0dP-mkeFgtWhg>ko2COW*Z` zpaJ!tvjo*E5FY^)NYSye+v%J>b14EG>I+8+s|3L5($uv~-f}rlQf7U<;(6Y!(_K+_ z=hstoJf}s8_q`80N*iy61Nh#JA79fBlt0niM`X$d$xH>z{LnWt0`*kzNk8O^)E_)i zCOQ$POk*Aqu0q2acCFkI@?bcUzw41fJcBI#AvQj~^By0qxJj4q#lNRp>agF&i0vKy z5S!wxo+7y}_vz^U>f?~ZcVQnrn08f(2oV-~@>pJiOJA4Cl^0QIAQ*7B zh}K5xro$2MuD45V`-Y>v)(u0p{h|?RWt84GW^(JL4BwayOyd$;c!k(K)Nd;};&b>Y z)Rrh;kq-SzaK>I|KENEt^1xmA1v~Y4Xk?Q&7gbie#JqPsk#E~%=EEQPy@u=a|K4U? zyfa-XFy1eE9}M+&SCa%+3y3`e%<9eMZ%1?i5UnfVcliqxh4iPd7Ee-CPOZZwnsLWA zF_bBM3R2sL{eXI;8w;LK1he{3C zoF5wCT9$165YX6x&HEj=7JIxh+PA4(57-H^Z)gbf{^t6cidj;$foJ|nUwbFDF zk<)4)Ek|8NMI9W-0ZUe#f92o14X2D=SW)fd>{TQdv#3d)~PU@&|AkY>&nVT`&zVp ztb5$>X_mccnXZKav9N)-BVm(yani5&_uL1))OVc3^%l z0M?>`*c_y<#|&D5RqKrLmBRzUs&f~E-%&rOjwPu$k`g_{U;J0*W9dKRyE6-8VP$LY zXv>rF^7xw{R^a>&=NS*FK4oWrZ)PUvJcmUPQY05 zTh2DTy5@oE{66Q@Yjb^$RlF*Y`3*;t%q zQm}4MPLAL?>DjY*u!J^u{j;I_=H{l4@1_7JqAxf&7_9I3p}#&w_LUT8;bHrI zNQ7Sdie!?#))f)0ABT1%1z@dB87RK`1JRxgzjxt+u1 z_wLPaGzA>Qi>y$q^~Ig$l=bT*8r3c4S#p$%jY+k!SEv?0!y%`o4C0)+4trcOnXa_5 zXC_QGKjq@^6()wUU{4cz+h|7=0#NfXe}9+Nb(ksYRWoY5Lw}7vIbzBF4&A7VaPMpP z?hN>RMXZy-Of5<~q+E~OBr<7YnDO?^p|%k%56f1_f3RaAN0t8sHa;Z_>i z&IqF6FTCi#US^d^F#ez024FE@4{Z?0f8rRG!Bqn`Y2SebK#&~Dfz6y7RS;KHx>t`f zxKBOI+kqyyN|GIr8l>i$ zW$0+yrm2Ea$d-DXgK6_&O4jh?t|~gnRp#9wZ)Is^VP|daS~rITJd4MReWZ9%sjF=h z_arrePLhozW`f6iV0rllsI-BIn^NLUW#BE=v#%h9B^%2%YWLaA6^z@tZE>eL2a&a{b$C>S zIIKJH^2=91E_tn9kAHu!BC~Qn9P65A_!|)iXu_|Hv3U@Pi*&R9UvT}t#UV`K7#Zgz z$62{ED<;k2JdH4SF_D`DEfOeU|3X!pCjy9xi3OaOg}k?RcKU;;he;waa4B*n-)S+x z!XqLsel3xH(gf_(b3|Q&VVNa_@yy$uaIrMTR}2ONv(qR z{?qMG*n>pSy%g^N}v%vqJOZ8?`3`$e~RHBUQQMKKofPl z5xGhHE>*xoKK$JKaX@Qupg8)ZP%yPvw?SE50pxiv-`(xVu_u|4x&iFDr{lQD}2(mwSH@8Btw;B1;cKzV)op%r;7UOJHzCog1Qjp^`Fyc^>aujxK&Emv%zNRvraZSD~SARKB4+g<7mC z1f^6*c|oJ>V78NL{&2P2I1fh006Qt>0FDePEL3!KU2lJzB1uF-DHj$NfCs)b$cXnB z_uOJ9yje}v`*3dFdv2iB{7JF9L)iE7)1o~LLks4!&dX?0m-_iZuay~l2mVOd1v~jy zZS7(vr7Ud2(WpVf0{IgdDdo%D4WDjk(Mi7tXH{>pX#)(V=Sww4^_Unp?Ce9|_x96q zBE+0_LncytnZYuBsXcBsxswRe3Q#S!F;Fmg5zvagv}wH`5#8`dGt14(%gfF6_6PgX zfc3&~-3WRJpeN=aiv>dJbH@ zUzv0cQ2ckt_+(~-q2_~6imh)2f!q4zD;bXAK3-yv0&&q#34~P)c-y-5hlg_Kr>t<} zD_R2dv_&7%qWO3m8QT&xL~Hy_qvg&Q!-1&AX2|Bc8C7WhAal>+LiiJxqUQIpm%t7n&;ri_GzME5@26;(mEL z_zGbyJjr8YL^+eda4nYq;VqBzki)LLuT2iEjR`7&J$boA)KZIw5!Qo+mAFcuaT zz|DGr&8_u5MpBvN@jYNeu}%713gtWK_)X|xSm>dE=UG}@1o5;#jK~=nHbA^70H89` z(|vt?<*)xm`2l9D(DcYSh!D2Bx3{#kB!>%R?^Ka9A3}cv>PXvmu2QG&ArWJGjV;ZsXN=&w_e~p7B`g1@yhh4PlpfjOz3A zwTUa;7B1v;Wd;+QDv|Ve+`j3YC!#TjQtHNGxyMA>ATBU8NC3Sl#mOEGK~zPQy>%!$ z7XRN~4{@YLeMVKdhyMCh&V;aLbQ1@*PPA})7D2^?r-C!>-X;;MnOs^=IUvX!p%rj3Q3% zL<;#3B>M8ElOi$6_qD={dGx)zklO1C@CtsB{84e0D0BssgjcuPv_A_cMzB+ z0u6wh1@MzP(ed}c1?On%pTT=P!PS)H@vXBzF$INf**JlyNd>1~dFR;}cVic@)ksTA ztLqGvLLgNdtvyQLFgfZmmmLp|eJbPbyO1Ec5v=_02o~U&#MF(d&84o-ON#;zN z9hJ!O)r&!wU?3C^5#S0gfihe7h)@f({O$SV|P8J2(|=4zWm%zdYMh8+8ZgTq zgn$|1!s5dEt!W?bWBd?aDTFGsaHFMu<-oGV#9r!&B|BHGZNj}qATy#+$jLuGXR%o= zIpvG7L=(FP==|jK!cbY1n`kOC>NjM)(cgx@rO;WHm*y`2cyoZcN4B>~`I$c!?ya0k zR#$!~S4x!aO)N3FB}dY>^$Yho1%=!#1CsfE!9V zJfLj_h&%G*r%#vkJIaoA6FxqHZSZ@ey8wR1FR}WF!Qai*ALvRJNDwC=3-H^g zPoL26gxxlKz~*Py?b$dOiR(JwUumt`Ps{T13`1tKqk6+W!ctCkdw#zT`Xpaby=Y+61PO7Pg_^KyE5Zt9v z@`uT?yCwfj@T%e$$i)ZgGhFffZyYF1ueWhJ&M-_d`r}U)_8c}(F+{0eQPIer;evmG zwG%@nmb0P62&@{z?j9{vxh(!Q9m7N_9l=zLK7&<3#8Y>sn|fajfYhKCMwy(>XBA%**z-_{z)ARNi|6q*AW?E~b<6Y)^ zM9;hE`2u8>G4G&-AD>^B2$fEExy5uej_TClv9IUy%K0d*$NMajzig67l8{7fVmznd zv;Php?m^!CPn{BF;k-Bj+lfq9#5Ef;vjSg6jXqb&C?%Ka{as9tT21F`SGYYUtTBW| zZ(-g0VH{U<$1_!Eem!CLEm*7q@44SL%T~}I<^2o4gk()#fJAKSNdon(%@HmEthB5Q zAS2G;e*unzS>^q1h4H}-Ftudyz5|fHk-q+ck%5K9+Gkf7l7pN3C-Aj9u>z>7a#W6l zS2Z!>pAW}*29}ztYHUbZv{EhilW1N z_=pFi%2u%&leA`Qme9P=@7wVocK?2r7^nI zUk%^>wwucbeXW`mS=xW^#VrqDp7tUaH2uQIe-ydWrWbvQz`*5SOb9MS6aU_4*qOwv z+^P1zI!9022gq)a#hOKQ)KBFF4$9#2HXn@p#rHj3i#C%sma$+13-(THgKl2xd&?mx zBnSBQnKFprsqa=n^%-EJq0I>d-TQnDo?Z4P?t0@N`3Z`hNy1~7hcNOpb zZT%DbZ?aohuaC4>*snvS)yMcpO|DPkp`__c<4z|S>_<5!B{TX42Ec{?bSFV}-$Ul- z&lvW60oZdD)ebJDG_VMpUtabFWcJBBAPF`X z2=GTin*mCa{)*KBychiU;qgFYUsqEDkBi$y)l}EexJE?{DFkC5sBGXpo&j=WQx&5E z7sB^61blFX2O+?~2?YB#wX|FSe=k`VZ*L@634ix%apuOn)miedl^(S^wRp{F!!B$s z=}QMIu4T|wHx$uo0%sEQ{Y%-9AERs49?h=IR6CRTH}oQ7CcC1&HosGy!&z3AOrONK zjBOr^c(IjKl#Av$snm@qQ>%Y|yrjo9UnHhF!kYA@%QuY}`*5ft*M8PhH3k?-+ML<8 zB53~_qtVRIaFll1w5e@bBpG&$Emt;iP0b$EGtoQmFW&7o9!E;zSCk|`pB4--Yc??r z7G_l2*%ILzn~xi4e`)?T={8T~-U;FE2s(lrZo&)x95l%#Z@}>ozdtuu$x}3DZ%kyifkOT9b5pmST<`uF*(9L+3CR@ zYJ*DTsV1*>`H6Zj?8ic%cHiG{ceXS&g>*}CObFfz5N$)ntOs1=_sA+*1QAZebE(ttmKI_CDI-CE5T~DD^z#?^pJ8`K zpxL~B?b*@OJqv6_acF>bQri;bWClzyot>S?dA00n=ToIOyf>_LQYLQt*Kv=caHn;d zHx1dN%_5*Z9YMUbtSPsQT81T_Q3}=b&u@wc6$n41_So$albLUF1x`fmqDfUPmI)EJ#kFboww{zI@E|O*aOzoK-ZE7yBSXh?m%iq> zEzDq7IxFGeh)~f^6E%b^ptw_X(=u(*_-hq@w8_xjJ5{PO|C{j?yG5s+?Gp(smqWf; zOgTbzGqsJEZ?Af|6U&TnyS#pq9X`F9lOz|9AI!UOw2g9)iG?-(%cdR~N-9dFP-kdl zV9?gl0X1&?j~+#tsO0sR{NuYn1sS=y=|`P63+qT?;NQ0l|N`aum^kC=b*MXG-b4l04kkGj3=tSoWs z5u!!ZsIVRR7BIF(d~Qs7#0lJ4oTyW*SlnLr{zQMY&_#|!U488mfpzzrlv(=&7BrnE zSg&2!VyX{kdy?bFjikqUf0rbR8DgH-yH|;+RxlUMEq1d0q{>BYvXJX-lNRLkPcI1v z_DY8j>89bASbO7UVZGwthf3!iGr`bZ>U{+f+WrMN@*v&mS@o^WTVZ@jXeePU%GGVW z8>hb2j#4Kjlg~24Gx38TVYGi*B9Yr3RkLFjPJ7BHxNtYF#G;9G=>Y1}h+_-#cW<8* zQ)?8{x32S#7A4yn$y##aocGl8U}QWm`3#k~G5RInv^m}%(}V4SWD0)v_0+eux2SCs zQVCkefW_N_DhdB2MqTESP4ze&=LtU_eukuC!foo42;K4e$JmMmKARBa1XP zCQ~*&0tzv?GiRo~rtAXdZARy!+yzr@$mUnYhzIM;ZM-b3zbjxN1E0bNiN2t(K7u`M zo{1n8wmS z1i&Cp>Go{6^i}osm#3#~!wvoW|Hz0<_b?S#EhMV{tr0As1*pkSPfu4V>I?zX3+9to z!vu&-U_tAYCF)Aw%_=JTt~V3|2pacyG9bLB`r6usuxntp!={<}($R7JuKbhFAKOZl z!PXm^-YyyQr(r>3K6xVf1G1qkDmZrQRI<8-zmAohG(;KGwd6m#x6mtNHRybaPJVl3 zYvg|M-?z-wq@v9yM!RY)3TQL(WmanxG1*J`MNh@0maxeicO-RYiTZ`on8=%jpUH43 z&VEbq7dQ4`Oi-TTo3a{~#Joe3L26U{xHYsU3e(fHe}s|v1w&)Z>+64o(hX4>fBzCy z#M0#b1VEx2pV=FBN`snw+Q+~5mE0U7Wgr|O4i@7EcL8b#&(l63lw;EQ=qOYvnsMWl z=PLjHO=^B+b7R6ZtBQYqo0_BRvZbGt96}$s-0eOVr8_^k*znNV_fTeKj@Xa5#LVRU$g;-Q{Q6QA+f1LUD;!&$)ydv>0|z}6m>w=JE~Xpa z1=D?rnH6kZL@k3~2uVZ$3k-r|1j;?MW9fbPjIq_%Q z^J(dNX8mW?I&UWpd8k5&P*R0VJ9U>=j~WHiri0n@^#>wj(qP<${;(>_8KeVoU}9$ZUOCi=Ai zM|^m9FunL~C?V@_3Ln=l$_YjW&W`i&i717Il)sGT;|v{&l>cA9vGfb~BnU8vCw*0U zT5emve*d22^kPq^(x{i?lxg=PdGU@$O+R1rNh1E^Q-mY`A9P-oZKj2SkHHZUHdZEV zfcZ*x7=qqj4%irN1oTuv;y>})E~ML4TK+_VT4t4%{=Yue?Fg>I-rNfTJ&9<=62y4F zuH}~^yy9-OYw296=&al497}|I@FO_w%8J-!7MZG(F=xFq;?pW5P5)k6ZTN-o$bWl3#1cCb#nSX+&Do;-SQt_Gy6=?u~L^-(m0vH-9;u z54oWqsA~8S&8&w-ixGU}Lvt;GPmBr(TeIqQxRxJOqEtBJpkSzqoD`h2271JgZ$Q^~ z(}pqe0-Sj)*T&wh^>Q*4qm#3I)_4lwd6P9$j1`P?c?L6NRzy@ixl z8voKU{LFa&tWZtzSdPEk70b_YFrv9$fJEp<&@43M|9qhS5q!vQA!iely-75fHrWMe zI%5=zFCXY0?cnl&uRqDGUwObbbB%@@3!u{azGOx-VWJynY(Ovx6-~klQKGWqN_L0r;w!v>8Rp ztBqe35M+H^zOqbt`$-7@l^>73jO*93@D+^x&$QV8r#Xt$dnY52^$1aDFTu$8l!rpL z*l!0V{1gLhhot+ATAgCBrr?ZM+ctEGdFt(!yoC63#fg5ycxLhTz8zMq&Y98j_Y0A8 zMK@rcYPf$oRR4QJ_-4aG$n+ySq}5hm#6S28lqTbUU(S5+L5RBP5q+kV<&XJK>dQWa zp{JKaBcmF51bMiuSn^s~YFu%T1|j@x1aX}Ky}UQYet7??o8?ctx4qKK>@01?oh6&N zL{dT;>gtq{Z4Y)s<^aD9E&p+FVAtxOaI|h$$B*dg>+2JQn(!bJ^*+S^?J5tT8rX(s zswCd`F_I6}*3Iltz*gS&)O@H;Hyl}!r9LmZc#16kP>kx*DD2np5XgJ~ z6hs*Ys^xGmC*xbX?*{mpVa5z2|k{Q<2IaBgFE*D4rkO4RWNkT zzg);kug70S!@s!2Wi|}5mo7G7I#=kKQJ+SwZ29n*`WlN^LZlH0YzJ)cw%2R z+&O7fOe$zi(xhBcRH>Cqv=efoq~zlxC%3gwAZ_ho;J0!1KhJSewMgG}={P^bNL%N{ z0`UokHv%Al0G-mQng6{eTAt#w`A^pH|1tH}VNtd17pQ=A3dm5>T?2?pH%KVm2t&6> z=Kvzz-Q6i6jWBd~Bhn2j(jkcF;rqVxJ7@lR-|JF0!`{!nYpr`NZ*On#$~=6Q-jReu zS#)iRjV7M_Yac*qy8GGg*l|_fZXe+;C}j85rsHBM^CCrT(cxEnb=BxQXV0Z@#e`&k zgY5dd!`__*rq2$j8O_~3n+g+Q6>ZF)FSFV%`-vZme=7EQdN==P@_?dyZPg4zoFDDW z3k!f9`5lGkAVgidJ7RpkIQ$LUdJQlaBMsRZms_zl>Ua2o&|yWz=hM$AuLKt2PA?HV zwGUr1{RwT+tDnxG*6Nt>=nQOuK1S{WyQSgIAg(-lTnh?+0DxaouNuMq0j0#;@XH%G zt;7}`>*w4~VyCpsc-6$jczGE*$G7hdtUViQD$C^@UX|2vh`f$X*QN9m661I|^6D;H zUwl||tyj#zBpMbj?7?(iBKFCRy1n);3hR?Kk@c86gAFRhJ#9fsx-nt~c$j z+N-+W7g-GptM5ELmxe30ATVFklcchWm6ECxN|E0>IU67FfKU|>a0Qt+PXtJbI=}7r zpndXe zo`yq)Dogu?Hf4m^iEKbHkuUXKQDQ}x29`$`533pOn0omk_nCQ+q1fYlJ6pahqro4L@(~XuXy1Dat=^6y#*ED1X$(9_l_u1CGQ4v1oIV7<{qm61mfaMWoX-j@!~n{Mi6ir1BnYn$ zp+%tV2>?-^A;IJv4#$<)N&6p+2hn4U{u>Cn5!|)g$DokI{Dgsp_2+a1ijGVEPys4bjG0aUcN&xqKRyVsF)}b%@ugoLQOpbpAIn%OuiRWfSAVSlK`rnZ zV^`MMy9PU^#U#R$NeV@JpSjrB1OaaltQdKp?;H2>Wc&U(2*QSVd3*O<<0=gAoL<^D z`2R1UFuU@>X%mJ5B{#r4-th)}fA8q1{4)Y@ zUy#9cIT8#eNP}6qxR@|DpR7>e=c4yQKE=m3H(&qDa#*Up^3z9%G~awjdFXM2KW{D0 z8+81j;$W|%V}a0*#c1y z4bGxqXxG9iY;T+&_LcAnRdz;#x}jF^iOkoCj7TKY#=yYGuU`+u(Z7BP=BU1R*PxLp zE-vm4RVq>&GK=9px~2lT3}ma3%-Jb0uZu|cQvJYnja;=9M#L;=3ILO;Z8OWY@Ca;N zOiU~s92|^JaC2YUJ?mY!6<}du;icPjv$1hhRh97+=!ZO$K5hpDM+Az`R_lvG|`9`Mt9*sI%4|NYFugcHkL z4lw&aj+KgbpwAtoZFLHi(&`LCMLJp6Gk%J+qe5a3rxgUdm|k03AAmcNo)4EGj%-_g z$4yF60F0ILbThj4&ZKq?a^X{pu|uS20eJw00NOl&%XqZhQkNDw1*E5e!9q5_V}4Cd ztaQJ}vME~PgQt%jrfmY0+r@GQl`5^e8Y-h2bI`7ee+Y%;K3w~>|^(IQ<2H5}gCf7*b&;h9sP%7}>=7&ua zOS$L&=Tf2IQg2H)zUow`jO+kSe{7%&xlomr7K+4L4Tf|;WdKAp8s^Bq9HL|>JHXY8 zK)-uw8#@<_>R!BfY6{~M;Ex8UtLGcU>fsY*!2;8v<`_A20mi4xK;jH23XYGDzhE{! z|GoAP4E4ZHQoeQio+q|azxe-sGi1ar`B&|1zD8OY-^ygxf3Eb>1YC)SJW95DL7jN# z$B(ae-@bsg#Pl#y@Y_UbPIr!)mkPSn$@No$FAFLX|s}fBuwhBIP2KMJF79K=<%p%cb|L>cF=G_r%ye+Wj{6VYn z4Ud!e@e8f-3!USiz1drL<09F2nnlCb3Z!}a>_;LL02=|PG6_9ad^QbwI4fbn;4^O( zd@7?J@TPzA#|0}ZE7-gw7xAhO2na}vo&w@E0Br|BI-q0XOt|^GD|GGCY2Uy5s}6w9 z&EhQc0Ees1&CS-B6tHYIWdlU(IbUH_pdYW9^@Tspc=drP1b9!pU#j=NWME``q2N8* ztXG+mRj}ka6}0rH<<|jQKs!38bIEhf&-ZS zuc?i^8(!}>=b9T!ayqp@gfBRh8qk!wNn|8w0_Kg z&Lex+b$yvB=z0j4g}*!gAqooU84!Ojzq?X5CnqIc{8+%Z2S-ULnJRQH3>-r7jJ$*) zV@JmmAVUU{OlDl%6w5Cj`ci4AbHUdeUYUzTsMB1qG1AYRsxLR>imiWOj8Pbh-}r>9dp?;Y1bAN_ydH&YfEpQ8~5pr>AV`M9}V0#0qo+YDJIwA9n{8D%if z?Hn7!4W^7$FPIX}6;~X3=vPC^jXNzGyEhkWO*!@IKdN_ib-7YPU$nwcE*4-?0pOKY z#EX(GknL4)`|E9XgFJaG8&#woZKp6f_^#BCS*sLXrL~_%!|a>QK27WPp-9H|_hIc|rx(-H(Rm=Uu~*Z1!ONYPoNThM#0Nh0{d|c~J5*2} z%p7!<;9+Bb2m4UKNkZFst{<3@G=tIY;-XIU7LD`g9(?evxitdFf$IB*WP5H>*=R}t z{fxkTZ-NQ|qOdSA0R^_seEO1-$P5;imMPl95TFtti$QP5;tbYV0C9ENra{ej&>0AA z1Ia}R0kMB~XF%1L=6M{%C=fW4^)9x4hA~hg6 zT=!uOLG63(Un*a02|B4 z=8+~$8#yE;!liy(?jVw@rS-RZJ^Bp4Rirf)9gHKY%6yJc!_wW~{y^e&1g@e9Zc4<3 z3VGqb)O?YQ3icf~d$eJ9=;W`K64Wz}$qd=Ok0imv7n5RWC#dJ7sjxW2{0r7vK0n@w z?^*eO4LQVm%y{q;JsWhWtJf9zxAI($QusJsQu4lJQ$}sXP(FKi?aT(zscf=x0j6}F zAiZ2O1WsJKulYb863n_SFxgy{xmLmgOKK6P(mp<2DA zc|6q8WqL5P-uz*=5{&MJBD%k^?3%Bzp}_{4@7O-It}`Tv?cZBtvu)s4(BR>4}uz~?m(FDk^*KypLiICDr+(Ui9q1ndV_L~D2S0_ z-j{ZIdU~JLgFwjFS4Zg7Tg8>ZPkz=-#J_x?;ewbCw%LAsZ-P=H06)k~iXfks0C=?U zne>JN`GYQkAAJy5V4`KVrvcemt}Va-zAU`y4Tx>do7m{42(wb;qx&J;>h{BojY`us_!f zu3Be}2rKxsh)MhN>yvVhq`ZPxGYB zRp8%J)DF_iZt49gH=jMYnJgXgr_=K=WB7vU6MTbh7JKYFLA5~Qc>7bXc_)9ovP8&H zlgHyl(rW(^A@Ao5#RI3Q;nRY*+%r;10o5!fWTN4lLLOKOBilcQ*S-Y)(hju9DQUgs zm9KPo`uRCtb3Or^i1OR!Vqx~xN&=mpAaaV)_;$VZwJ)Sk3(t?u-HNRyb`J20oyR3h zrbOUR8RBgi`kLBUdS3_i$8_{ZmSoU|4zvW5|SMa{;GvNa@# zFbO(Eg%5*wdfWvqYs{456t(M6(!ENb`HnOtJNm!JEjdm#F}0Lhm=px5KyzKXx5OkQ zt7%iU z5J}!+;eTD|)Z&{!U3HKS;-LcwZ*P^9sy^`Dr=QB?C}KG*!oC(Wbe#6Ay^CUjHLI<6 zRNRF3+NmO9Enx7JN>pWdso3?((<5hAOG=W?;dciT`EaDNPceSMONlDKUd^z+N_5yr zRyZ+s&L_Ct{81P#Rl4MI*>^L!qYglqYoZUYT0v%n&lwPzb%YBh;(>Ex=I-`hg4$1*5xFO}-!m~FEsj~+3NPQMzO z8Jd)B-kksEGZ{bA4 zjyWleQ=`ha2%6Z5{@sB0gOFnpS70V^t=3rHM<0B&av>FR7=k15pOTd1rIkuc0Ln0= zF-onBA&$qy#H8`VnkfAG7-TFo9MT%lOMjnw^5e>U7;Rwej-%H96!j6_Js4*I{lJ$2~= zEiCO{@W9!tGvKuV$>a|lrwwTshQ!iwh9FhJI`G0kWC2(h-&?V>(dQ2PM@NQSviA&L zfH@fmntFhf66-X@nf{s;z3omCOwrzXwq1&fi}d9toqs89ZYRPqU(|uSVCi>Who!Sh zA_GiXwM{=enkQ^Z{2=o88leS^U9%`UM1(I|hMIM%%STd`} z5eNm6V^Jz;yEh6PZsvAn6VledUnOXFJx2m;mdMQV2>4VrtOF#0_!~k(u!@o#w((;90to7_ zUrgpn74^+J)R~Q=Etlz<8l9safKH05DHG0Px5zyco1vl>X2pjyNMu6lO|&_LPCN&Er?PlYHVIjh7{SVSH?ZkR(Q;?h%h> zb#HtxGn(7IST+i(K}qGtRynDRyg(#v;@AO>%Kae@CAVmDNVmdMZow@-XBSw%Es1n_ zX24=&_ESZfHt8ak_|0D{2Zkx60@`zh1!5W0Q-C#6b#kgKMt` zi6qh^<1#bb%tuHpE%(4XXu&1Q22B!62Z!K|w6wIDnb}yEvajzwnC1>C5D;P&Xx(&k zT*`nv3;K84mx>#}?tqu)PR6qc&STPx!P_1~(hBlcb8r=|m#cqlQX z5j5nV62SxXB$vXp3?%H-@6hxKh%uXgBqN_EwDmN2N}}6|kaq~F>KRcl!b8)c^#>hH zoc8Zs;73C3h%v|@$5T_?SjkWznh_W>1mWt&dg65b$USEeA{1X?krX?G?@(vpL)Han z!|}?E$ua4CiprZnvn-xs@859;H^g9Mc@&Ed_XkUPkq*kIV6tk}ivMm`;ekha!^0dsLU99~K1 z!Yomtx$pAdXECet)ylVY&ZgZ^S#=gngu&Q!33wl2ope{-j%vQzVU&qs0nJC!ZdT1&|l@%3%3w(W36Fx3(Qiizf$H{R$`tHOj8g*oyYP#E^_g;ywvMpUR#4gZG1 z%t~?AyAm+bsyuh=pmNJ$2AkP5t|?HP70=$t^wYjEUMl#e{3G0Mv><=sa!5^Ugh*USJo7Yub>AQ*o^veYVr?W|3AK@qZ z#oR%r`bx^1PG*t3VZ6pKZp=XzuRLCZug>c-Vjj$)gak>mJMdQRpAAFrAC^*#I7= zdgDO5-7KkA&~_NoN%5f#DU90huJ%9^^uR#zF@??=XxI=M0`J^$z6oH;0{#{dVy6wc zh=(T9nO$i<4`Tv$>{;%sH`@uy+fFwqA>sIW8>gsYK0LR@HSn#oW}6tN6$9g_ei}bi zOO}|tpcjy6Di@avGV-lHVD^2akpO+U#(atTt!2(`AQm|)FQl44H*t_WMjtT<$uQf~ z;uOXp;9BS)Dt_nu`twFq`0yfxxvpaD1EjIQHE%vlZ){Z~PhRToX>kH$ZiSF1b{&+9 zWLX>0%(d{{AosgBZ!r?j$A3Hf7C~%7h$;*dR*=h$bV)>kJI~jJ#b;;IwYWFPhz5|q zS;M{F{Kf?X(8m(7=;D{!7gtx*B3>>HMfA#1=_hd+ZH3oU+t>wD{C@ZFwC2x4AZ-Ks zf_%*|7zM8R-bMwUEH}QV7;5wV>%~v`!bZc|nw9Js7(7JOciZj7fdM`+0F1AQrV?4o zm%)Dh`t_F+tIwx>U;s-~3mOWwQDxGX(09$Tqkn1Uel52U;lVsMP}RP48S%rfxf3}m zYR?9NALrnQAaLu6H?`=&=5ElNWfVqX;Y_oS8*3m^nQtC3n4!4>ekI=n#ntAb$G}M) zG|C=f{_Nik3;o6>+4=+?mDIJkL9BUiC2hG^&2cV|>I2Yy+IdCMglB!q^p1PG#{Sjw zmhN^C@|id&HfUieT64kfa+)s=)gjhRcUT7>=P1NN)g(-)#f)D{-fX2nKL(jJPf2JK zyQhVhXyx)mVp^D64i^Wp z+qnsix^~{o_}+>(Lgj1|C(3y?@y9Uodzp<|oVAe@e>A(u530 z&*}dTeK#s5*-ReB^)wjMqwD-tg@unZ&w-7BT&qk;^fSZE8l{)#yQ35834FS0{`Rz}%Qo&$a;PG>@meb~-@m4_=v*5oiZa$Y;FD^3WV0jOOYSOulKWTi`xCTtJ^~u#$-^pAFFo?}(86FxM>gu8u5YR360$5zJ zCRjyQWU}AQC)kPj^a)w*#q0%e?XJ>mu-Tu?bGQcMK6IdurwAsLuX%xl_=2r4nNB{s zUrU5?5`1b!8)GF+#{jXvKUR;h;)2y*5eA~t!9KdT^J=Bq(mEGqf8_}L_z|*RKC)av z5)+9_l6jP!lIrUILO-FtTeQ4NLrB?pvv-u6@nizu5<|aW$$K*3F7=<8Ls4dJg3gOL zXg%6iW(FH=fY4v9=F_e3hbbsJrL$96_w-GYlh?vZoI;8|nkx}&*_A=PJ4rJylcg~| zMI*hM;k6ukgEt1QH=Ehh$CWuX3z+r4{_2+}HO)!BnR3=}r)HAH@zkqzEH52(xiS|G z*J>xKA~tctQWa%mi_$)R)<*ix)60zD>kIihT0{Du0-Lf@DUyvMSApd8EXKnMunwD3 zREHv+wN>@S^@e}ueP2i~;;l3-scD1zL&Y2AB5Yq1D4M)K1>im)f`dNYO3S-sDHyJ* zrzZ&5g8xBd2p)UJ$I3&%i0?&)3lC`0_e+ocz*-@0Waf=79Oab~W!$uyIxG89uaks>0s7#^hP2My+mk1mF8Y4t7R3qSc;_Y+ zR>d?|te3pgZoDMO^h#sL9lu`)BmZaO^NJcx*gZdo*eY_yo~0|uy;=NoxaN%DmQn3t z<#4%f`^kvMTPP2rh@fjaAe*5353yF?^0j+@|4vPlVi(jf*&o!rleZ*`WY`{PXL!iZ|b9|f+I0=WM}>={h(-)aUZ z3E-2aE47066x89Hkr*o}V&q}ldo)oYf&-__aw9A z`|cxUN|$VF%2>>(p*ruAe(bVp@R)BA9$eRXJL|cZ}_@4Xq3!S zm|BbGO5^*D9!6@*n|^Ue>mJ!@}wFVDz7S9V8YY0I+|3Ub!Jtr2r_&L8K= za==Kt78BGPDn{VsU<-eptI#(6`2ev#mY|}ZzNBMdEA9=%B$AYp8Y;wQeLf5sBUxn$ z9Qe7*`8YPQC3IJzeZ87HN?{6~>)P+H9hghP1Mum$l;DdG_LqT9@xp**q41%8k#eVd z$b+Xk;5#!+qke-)rMrNl;$?V#p*(~TAV|(%X3-XeSD**W8#v?DaubIc2VA6Ws*7iQ zg&NhBQXaUEYb_pz9JSEhiJX{PXgZ}+%YzTCi9WYO_NZ=}zgS@Dg{6A#( z0dof1=io;O7^#5ex!~Fdc$?sHEeGX5oR8w$Cdk2J?G}h+wplK;VBGPECX~|{JVJZ> zBS1q~&nT_E-5oLpqc$XWs)zeR(5oi*Jpz=Z{Vvme;6M5K`Rf{=6Sx=v><6yO2)^W_ z&VMgf(pm+Kz`u&522iXT0Bs{)|L4bA^HUByg+Maiw(f)X2naSC)d1v-S`T>`0&Y-a zAZS*$zn9kv?S`39oXP-L9}L5|FTuA0e~K#&KpmG>5GU*8A;4)h2Jpc>5zzs-AV>6G zmYP1+!cn(L(8+-3X|REoA7uZ6IU9D2Rp}ZfYPGSx|J5C{MYv;DFG1hUq3s0 zc<1jyKB=Kinh)2`v;V2thpt-wr`6w`I9U7B;!Pae=dNzNZ3EPtL9L%k7|?#yI_D4N zvm~zS+I{5%XtkyR6+e@V+%{jhZE(*0*3C5kVZ))drW%8*5s7Q|FH6O{rb{@=c-ocm zyay!wBHKyM*DAuZ4Sc(Z-*heG*A~swl@p8SObp0EQ(l0r1%Q$Kex6qs=giL zdaF2r%VIoJw;G(uF<3VYK}&Za~$Of>5I!^8R)<;hK#$+j#xH`EG{4;h1Jz z^}R?Mo*_<~$5MhoLdA2=u@0RzdEvSK1poe?h-66l>hn-sBXHD}l*Vs=cf_2^5TX9R z?@dNDmW(`+ zPPto(Yx}#jtEr(f^BCgrYeGF|Su14tVnGoVn|02cWS^!e2yC0pue?9CjR3_v>a%rZ zPUiyQQ&$VijlA|JT5)+HQ1xZ*n@y)$s&H~5IP4~0#rC6KZWX{WDUy7+$XtB0Wj#8X zH&*r)zQJ-A*5&}tAEdW6ZuUL`+XWpeXsF7A9xzRYZm8P%T#xYcxC&YBj(!54o4t#W zGLyvAwhVKi5vbC{XIvB%!n-CTS4{z)d@M{&P99zdwZklm*Q`h+Z%`=E0<;zpo`8Su z%~<%>S`V>;N~G1I5S#yE@E<(~JIv*1ne3iRzj5@ZosEqR01mK)kd^G+g zh4S^l<*8vI>JE0PHrwSBj~ckDvq7k8J-RxCQQDHDS~D({x-7m$rNdI}F2!Y4rzG6w z^A2=#G*INqMzDYKdg4A%DFZ1~M?@X+ITt6w!g zH;jC!*x*E(2%^Ly9Pm6Ws;E352WlBXO=JDn7Uv_)?@b>d3aJ-v)xy?xQh+VH<9GXg zjr%ePx05?^U6?g>yFT+c)mvL?3q_I$cw13@4Z?JL!AHx>^*OgRai)B>e1L+5LZTAs z_(#{;TD^6`K_NCXa|y_7tW>VkL4ifv5nvx)yaISWJdT3zrdf{8$4~;}nsLO~G0+OSsk(DJAY}*=V#6;s(tpOqPCye&zB8{73K9fY3AMt0w#4bw z;yhD$SOyW_^iOP-^$vm7rtZWZlt2|ip@aq=z79Uwi-0hN*v~Hko{{Dyh4}(O*@^I# z!u+PdpNAn}`R-}O(T|eYmMK3x;}q$#cpa*xIzByA`?C4oB*eSQf9uJ^0T`lID&BMO|8sZeKQdFG|+;H3 zDF5Y%2t?aw58>Fc_9_GgArKfGe0lw=#z-F@-G0&gAmPJGBjs^>LgJY9T-4vLk2EpZ zU)l%%G8qU<7DlA&XdxCm{QiN$X&uObmADKWalgsruYH^G5Hn zz^i7vXphp)&d%h6zkK0U`@+{y0H740wiv%1k)KZ&pPiVIH_!}N z94_<9R3L3fyJPQIt4=>ZP=}T>%6;CxW8G3!amBK?n|3t^LDh5N)qf${zb`Kl$=R7b7R04flatwPeMM@o$7TG^f1inVxzE~Y zn)(UTgzm&OLXZYvgj}s|zii?j%9kW4U>4qkWz_BnK%!H4AfSLm12!9psi^ENEt!WP zz*6~vrF8SaOao#zAo>9t7{COeF$dd-vIXlSUB40>a;d1OVrc~hy?|kPA$uqs$zZlZ zyBdUF24-f(7u`O%z=`}6*bG**1;ddpBz>(gBRQR&o%0?;AP}pk+uy*x^$-yR@(L{4 zl75g1{_p7o!{sg3J7mz@-}qgQqi~cL{Mb_Kv#*qoY?plte|svMkZQqqiPpHN|E4wq zvmYu$6eVlAp!4ZN=+i=N)W=UAAGD{K>yjiF+5L|CJ^HNq2$@cHa%Jo;Cv4(~+kI)J z=ISohdHjH`Z%DEaw~^3JiULM#@?^Bf8HZ7)H`~0N0m~(_@?XaFoEmXMZa~gDj+AcR zBv0WIRIQXW(h#{O(U#TnF|l1&)ISMg!Ol+YgIuz6d|AG8BEzC!G$ZfIkCb(Us!N0z3HhZkLi0@M-?3|6VoDa8o3=Z5W$Iw!J!xTmn@m3~ znbWbuUgonNcg9tTkUTueaMb)0&BJ@t`(yf}(02-n=%?E?s@(nu#Ob6Eu1`-j*s?k$!RFl$TfevQ{}vmS^n;(|-;cKrH%`b|AiS~v!R8x8Q& zON*9Y%I_-?C5h9NZaabI=GCvSj-3L8mCR_blVNO3LBwj=imXP83eBhIlJ|{LNZGWk z+c;=(0`hE0<#RTEe*Xa3{E)g8P-A5upa;s<+_~24O+bYPFanTC`*RN#8K{G)vjm)h z1_+8_8<1L@o10S+1EX{gApqq4^?d-3Dl5Te0x&|}$br1}9yMJYPgXg>OnCsAO{<(Wi7n;8t(6`)6l2u+wDGgMWn(6FmBw zZU0E?CF!7%x+xrq>2B6)DEE85N49@V&#kISb8Pe+rUmcf(z!V1#WgaHX-y>a>jKqe zihkMVQ8hh}ldq34$O!Av0-?({Gx>~v-mgYT7i3z@o?r!nANyN6ys2oUv2diZc;sc_ zVCU*|t1PZ&iD`EQ09gKUjNH@xnNuWV;YR`>ZNlMM?M z_K}|{HV>5$IT*nmt8{c(rj}F&3~V&;V{|%Wlt@_Xq^-QI;Tr_ZeFGZj3p*34y5899 zD6w?n>Py-F@K?J7=bv&fT*Z_@ITwIn+IB|Gha(BBsS}-+0nSfuc(!6qNI3yx#!bVdFE{ zqwy7+^gZ97Qt<-=v(eEv*w_)E+duUX{`(RLXx|K6BO@kjVM73Q0g-w0@F^+jBCsCV zXJ%w9+KF+CI+5`flX&fC?7y979eFSNn|_~)g(FF%vhXBGO@BnwYNKS5Nz>@q&Mz)Z zaNt_<^|Q{-T~5-x9j6tP?EbVeN?G%`W|iM=wZNK}Z!Gr&^_^P5EbVVXXx9o`Ku4P* zpQ}!1#&EU&N#BQHX7*&}e0x9WWDkU2yFFT?j?EsnMf z)GoW)V->u{Tqh}uwG+yK6~lN%!>1Yxo1-CG;$m73+vRK-EQv0X}uv5$|M+HBvaS zVnYu?jf1h%j&=YqekQ&uODHyGoOOh#i~lcoJs`2!dmzIQKkwIOX8?BuPA49~h!sij zpPY?Nc~a8c_E5rxD{%Ynha5}yZa8>d{rhjx;MM0?T@@H}wvBR`2uUy}N;% z8D@ZFP`8Sei;PwIC;u+GG-H;b9OtRp5SbI#K%{;_&B9bl#shc#!2F=~1k6=rAwLoL zhQFlp{?!-8x0i#M%hFMf&%r}iz1~z2C3olC5kqcTTzY-1ni#mcD%uqILgATqUcgY# zcO641WbRiauCCn5d2@4g%d;%47SVFpGxqZPTa5lr#K3V?tLQRfVreix1qlxOAowGVIcCAX9i5U3+gMQ^? zj4ujkYj=T!sv|y?aI-wT%Z!%?p#uhQU=rChi)|<*D0sA3OAr3if1*K9RL=U&cS%G! zEzk(1i?^Z*gI4;WiXaEsNx`4!L8SKohZN8DaRgX$({5QlSM`^3+g%ikyPUG zSGt!J@-w!lhx_|T-LrXyLhrpe5Du@6IjO&jk;0k}P{Z4LrE5jJ(J-4-qM2R3C3CH% z(XM5%Yul(2M?~L$>f(McrN1{oDe%UW)m0qXjno~l|GLv?ig_yDAdOeYqnc)0I6np| z8p(USyO_unP!YWL*_MS@OzwtHZRBX%V|yxW z7xVdJ0anhu^uCe~Mw2R<4xM^p?FM$3bhk+@3D-M06If~{2*$uRQeFxCuZJ*IKv!rR zHwGl+^89M#@?O*=8h=>iG|bo`MsGMQn0{euPvrar zbv6%$EgN3VJ9n$P8SVSYWVj-zA2K)SDg7$YiRy%#0mb20Dz|h9mpUFj(eJQ}-w+a~ zQqRmYImKg{Y#pL*nJ&2t_AFLNA%4MObgq#Yji3NFiBhKEMz)UPevoeHI<{%7=Q?(h zf~Jnn!?R0X_tn(Y?2?-LEdFmU+HcuQrF)%V;)$9ZPgQqi?6WpvGKW_Nw9NPP(o9S> z^CKf8z|P>)na4DEWGvG%L_}67a8*Tfrl6*+ff%p=A@VFUp&!EUQqtZo(v~IS-RS$U zaiyiD1;#pn@_t+y;Ulh;$uIE=JQ99IjD85R|0C1b++3R0sE`o!+0Nvb{SW}A1Baet z64?c6$N*x0twStf$nK_KWo8SzCdGBI;}Ka>MFN$q%XXQIX}9$GLBx+D7IYS!zklo) z)l0i*xh7^`V;Q{Jh)|5dSP3)k=Ixox@=Idj6ux1pEj~BiA8!P1%B)x;)*F2tR#x2~ zfQ{_&=0uE41ZO4w%1wwN1=Bdrk0Jbg?vW)kzM?)%G+T+{R><0XH5Z?G!u6(75xE

    -E}dt+aRp-?h(3i*VmI-p!}*}X{&=?ZTR@dP)0XOK)0cXM7KE(E;J$b z7SthJ%UKstUd}On+0X}uA`tQIB=KGKKKlul^pPXhv1bUEpFI|%2erc|a2@2Y zrJ3v4|9gV!*K|?q*mOkk8f-z9E&Xv^!1FgdGjqB1Kqg(4Vj}`nOM+`Z!0v-1V-(b3 zb9Qo4g`J(f^jn*!Gf0p!GGM5}99;nxUe(}O$R)-;8$pmG_ z49`+;FStLErL;!b`!Xw>5uzg6B%7MAYX$eq%FIep}{$Di@7g!KT zV^;AWPu-i(EX862wabn1xx}9n95F7&;VKO|0(KaZ-G^WF$3c?%x3sQi<~pS;HIfEp;>KcSA4yrn1_Qi` zryjw!Lti{|Y3_? zV@U{VlPyY|bYBM`p#U&9IjD@e& zvsR7r&{(_%qp0Itx{7G9tSjmjv(_hXBxj0-6Y+22;}G`efv!?pq3OqK_}`oqKM;ex ze=#hQ@PrTJzBG9vc%rCvf6;y`7b78b(rIknv#x9nvpB_g2phiT+bVqJTrofiY(#vjN-SEV$0#!Q&myCuQz%nTQ{|Y$!<8`W zoYv;%(+I?~@HmFyL-HmQ?S&~*wwUzi#*<#r=I7xsYvfqv3=#0det=NPazWM^bl0R!%Out5%@Xa%{~- zn^9FwVpb`|N>`3vuF$`v@2&|0BhVCERWns>(X5`Jf{(Zo9?XH?DG@3*wqlC0`B4{= zIJmoyvhbTZZPpXF2UKator#{c`0q$j*iuUb2q~FO^Gd>zYzVpse?Dk=06W$DyBh|V z66>&j$kCDgV_2+YxMQ*xJgz(zoIA6h`7;q8Uwro4e-Pk2HaHu_GnlmDggb(*S-^q; zYknzJCzqGO)DE0%+yvNztE5P;vi-v9_5f=m0e&S91yRyJ!v>xaK zclb7ePzP{{zAeC}x&n;@Tr}t2+TNb)-52W_CJ!{L-6^hC*>+mhR%jDfEDC8OtZ>-P zeE34$;$vPrt<0qX36_GqHZMcz=`Cf8!c`6L>q3E4=CxF|?^&$q2}C((IYjzR+LB2} z4hR$3`t1vcliN6x{aDtS-G~N?_(G*p=UKG=zwP2Ydq~422kKSjD*K`(!SnchPt?i` zlNkPf2)vH^YI4hepqZ>zcBOsw9EY)zrJwtGAB?da7gKG?Etq!wy+d6w-+Zkk>Ur|u z2huUZ-Gfn$@rb184)$yh73eR&0zbH8TfWgTCf&NJD`S*GF>GBOQ0>OA~!B z5nZpt@99AD)K34l)~^g2KfuH!SHel8;z^lnbXqCXl_NUCHu=hp$<9yo_tJ3eAP#fzV$ z8QAHN;6tnr%JZSo^oj^W8LnC!Tfvu`K1>{p4+fW7D zF``|NlwBqqy&l6z10>nzp21Ny_;98Yt%mfUY`SR#hEEU{y>}7rOihALE&ag+!>$ob z1Pz^+6Bz~K(aFsnU?654!CaOHgn@2gS!6^65ys>9SKnxCT>nxW%NVEC7pnD@&nIfx z=GBz*^*s&Os$jI>7y5rQ0cjv@by8iRJeFt^t?V*fu(y=6dDTl+q&w4~(F3P^W{grtf{cQ}B6NJw`#NQtz7bV+v)-Q6JF zAq`SPyo+J^5UjCG++O8Fv)F9}Q%D<06N8 zE>m1M?n-)kO{SyNc<{DLqw`DOUbSq9YMt)IT$S6>53D5E%=+bNx{8m}Dhc_O%8y=s zr!5X-HvXHTI~NhgP`wt<8(3?w!NvHnZsR5e!6dQbtDrjCwq`xVwDyjHF?D+45y3sg zFi$b6`;aMYe7g&bAdJJ#%}O>Mef3`_n$!%YF5o7UxUB<}Z`=(3x zcGw`cv~J8xmg6Wr6f~$-+(|USPN1;k9h|(w5G^x) zg?`zI*Sw2CA`frP>PEcMu2AVgD056?lfPQg)j9lj#B)j)l}=-_w*Bm;&&MxN0+B!U zCC8Qe{8xnP7ZrK+P%)ml%-s9#U&=K%5;NHsVm}Zd2lx8~1+wGXr@hRCDRs`4=Zyi0 z0h7oUjDDF3!p3xACu{7@HB$^GDnJX(9D0qvyUWZ@U=6{CgKqr%8_&{1!LTilsQvNY zcqk7I5M1y#@U{y;df@>ekPwhXgm@U(uAW|jwQF8p-mcRTi8IYaPME&+`U+=alWV5? zMHBo?uim{VbA0jrTuKXGO=+ojU;g;kdWF>W5Qc&(s3d)MnV;@znyu1tN}apV31)}E zcb;R4414y1Qb8$hiG*Jg%)ruz9R*9qV*OGp9*||*5wRSMRn3j6#A|yRoFZ5EGapgP z<=lI>YK4(%zVyp1h1QbG2s)qXnuidWx z83|={>*mf3uh39*BG9G64t! zF62KEx=VuJ8_z2Y46|)+sl;5>iMU6wqkH(7t#=sQ6 zrq$Y9>s7B9pPAT>r>{Pe_O=92b0L4=y+Jd<;N_r2SAUg_P!jM<3JZ@*OX-Qr4sz^u zB`TdTEE!Sj9;s;mjegJ)(g8i^Dr# zeSnH|nbB;sCgUdwdEnGJ#Qo0{05nBvyYC?2-4kBj*}2LJDSEGM0Z*A`VZI@eA5YSJ{i05R`mNH@NH>c6g zwVE}^(EafK2VLw<%q!K#VE+N-r8!Rh%kCEtO0ho((F#5Kywyu&YZ!SxUv4ERjR+@^ z0z03Hc13T;CghYRt?39M}Yk2-U z$~)Y=nhy7ER^AeX8XpuvxyKX94lvK{nX7R~@pVvF8y`_DaK7$Bf0jq>w$G&R#XtB& z;o_99uqkGC&}O`%{(fCm@bP6?_ppH*FT{9WwtaTc*+0U$7+PEvHvCUBX4pSGR+zSG z2-C}yL}g+qAiDdDS&JIyscDZQ`lam48W9=UT&#IBF{c^Nt){3&M}e2#g|Y1@XISM; zpHe2&ZD+%idCFZ0@+#8<-v8xsNz)xl;}P~(qf>j)nu8iEEB+n7-c+xu1;7o+@3(bx zA(o85Cm=*&5X|1Pjq>q+jd8rFurLsl43{)Eu5)>34TBupeyc|8d~Y`Cr`pAVNcF*d zbT?jWVOl%l>!G%ReF*Ebzq^|A`Uk$WSn`bP{66d>W#6RVY0UkuhBn>(DPE{wG4~R+ zA2aBc)$IK77wWV-@kE1C@M_CFXjng{y_>x)fa8lir`JMPQHqd*=Vi^bAoii$HJWR~ z9ue9*zo8}snk84bo(FgL)D#gBS&}xU8}jX+`_|wW0W&&`rEBiTi=y`ux&2uPW=? zJC%yiB`EyjwGMTT;w3^K{mVlIO@~BVswiF;LQ#7g&~E{m9bd40)c5Zh>IJml`P^CD zWkKNeuuvxtasq&fv@-WC8O9+9E;WaNy9=U^{StcIwt2ct)y{9Z47mU9cu_F+(k79ESm zW}(f$iyqf^N2gI;>Fh}zkW&iLcINVmKOCD?_h-8csBs)_i)}*cBl+B_=R0siea)N7 z#M89RX&QjeSt@-r1yHOFj?udp+~^xmA6pL9>Rx=DHhq@G^?`)r>0$)s>2-va*Zk>t zx*$fJrplX7Ytt|LE`NuzQKk+hU|2Occo}r=hQqyHV*TmN+!L`*CY7!lJa(JkTF>Wp z@~E-uJ*je}5Nesjp;zc<+l*JuFPX=bXlx_3y!4`PyqKJ_G8uGe`6904xW}1$nfjoi zUyYQXL=Wn%J6n#$x2jP5nL$>|p!c9KYi{}s!4n!ozDq4QnAR`(0N``{Qc3sIF|@%` zz;Pu;gQnk`7kEUWRYtvdAf8(9SUZkmhsqxXeC`c9mKNRkQ3i)2Qv6ZCt;{rZhTX3a zz^{UIt0oDxBTdj z#~g)jRa@e^UO>hU$gZ>Bx|iv%a1F2llPB)ibE$jjbX|C*I9q2I&&=oz5hE>DGqpos0R{mV^MlkBhW zvFvw#DZKu5a&(MA*rpxE{)!B6HmK4uXMUNFPjaHN;BwS;_9#vOn>6u<4k(RjYH7{Q&Mri} zK?o%iV%%gxJm}EU*8017ywUM@`QPq58TX3R_;Yv+ zAr5RWUS`l0-Y~P!k!gS3#nCJL(4@VDJm3!sA=HJuIEKhk=A{qKC)qp;3Sy{x#a8?n zDJzUzZgV@!cSx_kB@@0MoMnMxHDm41epkP#B9Z=tBOHVp05cE*-Hrd&+ZM>}M}reO zRBE{ddp*23qC?V*4b@b+!%n-xh>umD4xb^04pczVOP~kSUYq3b&)i!pT;|1+&38TQ zA4kU~C;wg=j-jTGaI7db95cA5AAWj_--X$_14k@0d++J7s!9sA?yL$G(?KlJD1v`o zWEMUs_}FFO{ur*Jo9-Pq+8dBN1idmD9)71$NOr&J4{AJ9E1@@=N1el{3aYYZ8Y-=v zn}RIa7xbxp8n)|M+!K+cx7y-~XTRXA<!LZ(<7le_Inzi}4VhCU>y#fvi$W6TOZ{ zfXkz;uUTw%6sa~(%o|r^r{F1kU!zVU8#FEqd-T`MSRa1w z2nwpXfF>`kx z>w&`P(7n5r=iz9k?#KOBxj#A}D;;vDix7UI%U-oa<;{Thk{~M&^u3~U_ z8kc)b*8~Cx-QC??z?u1N1|+F=oe=#b=mjPUbMq22A|96})_28HmwK|r^dmX!b6#10 zrOftA!(j!~cjorBSTlQ3$8{7!_Lb%3#r;ntRzj0tMc(Xz08c7fx7Kz)er6=%Et_u~ z){%5TspEO0^pR`v?f31hw$g3;ZS;Gx*l&;&-Gqc*wxTIR_v4+gx_h7;7i;*-81~n` zwoBf!=Q$b;DM(&S4i59Mn&b?+~P*N_G^nq~;dMCzOc8FvTGMu2`P zSj9584PrC>zYqx&u%Hp-*xkLoAp(&J$zTRcI*}R1kWu@v78)h!zD@92@f|*9solzc zV(4^PRMK}9Y#GijkPgkoE7GH;#Y}Av2`zc|-QA*QZ>k#+s8>As<} z3MD@73Tq`{4caLiw)l?lEkp@*+?w$9+*j4MdSrQt#j7D0(#w2OkAUQ3KdQ z8*A(5px7l3nj3()et3%v2lnlqG&%|6AYq+qPrCsr=NG^SOG2+e(`3#F|vL*k;}# z=hFGyUY(ZH%P7BAfM#$<-nbog7P;jM#h%sOk8#9Oo9obPjDJ(6YT9!PX^^^QWe#Q-V@?srzrnR<%p13WZm+>n^cY}}SaEZtd#K6|!x~L84l_vD6 zDeb%?u!FFCe%-khCeJotcoaA#iD&vqOz*x^UAQbVcffkS$?0l09HdWQUS}`%7@*6V zSL*N8NX|-X6Tl6hBU_rfb1tn^II5!Hd$@C2b_wtH^t}ZLELc2gVGJI8enrl(|4`isbB6lQ9*5PAdnbVdm+n98 z+|Z9s?SiDb3)z7nc*o@MPRwoV@zlg*m(6_U?|^ExhRUkj`k>g~zndoH3CSnbv&<&z zJB##wuSl>~e<||DBtgiKdpyg4(1*tC7GzN_iLgXgoP#?d5wK3@;x&A~^7cSP@M7LB z+U*d&m3#p^{-P{{8R7RFCxQ)*#CL(ai3%5|~fk z&CaI}&#T)ANYcKO#@TlMcxE|=QzhPOh#pBdQr4LRt+{`)A$B*=AadT>L;usa%?DKi z4Q|+H4|Q(X*`laE@63hD`2;lY-}Fzxh%b(%G;2LB#4n#$qW4MC4mS(@vRd+7sCV$w z3zQA^VW7|WE`W#6a~M7B0ZJyumgny>8?lk4#V*?V!S2HKsUm~YRhX9Dlh+82N3uoR zr*FsgnVT)<-U;^*@>L$^?n?%Wn%XT3du*}z9%LU^jogiF8!_DP*|95ca}{{loX<;Z zqJ=X$7NO>T5&5xyYd$-MuN{=i(^Ha7_3N|O=VmM};uPnu_I<;*(^~y^M{{X4M5*wj zxE&!Yz5t^=-f1sP~ed~Eg$T9jvEj;8leR3!!ibZI&Yp;C5%ZB5xREdh<_ z4w$K_4F@?z@EqB6DJb#wf?nI(?{JCCFL|qZx%<<-yDoV;ZEmHQmq;%MN>I9Oh){c7WLC}U&CS%&Se ztRLAu^_p1wKGPej$G13``-@F(?zWWnq+p4}fo{JImWd05#W32oAOXF4CI)KQEAE=_ zE6MYSNnwBiJw(`z@0R-Pyz2d_<;AT83G?MT$&8Z#+lXgQ&zq*|!%`&%91-s!;4 zQ*9(knCHk+FzP4<0fE}GveD6%+FNTZxCB!yfD?}HgC*2Mo&H$yejQ#L&6`M0-ut$k zM$)f00(&lXQ$gAGsXx!pl_tETLeIR4ov1{!JC?U>H(W7{il>qbDGjgw)wD_aQ2oe> zg}P6%+C~*C5&HfQwXyG+%C9#*&rQh*;PKCXjhh`~%AtMT;qZ4Fm+-^AX>8Jk-%z!! zDavsN{v6jt0oF*RB^8T53b_dGT+{1Fjm8fpS^Y>~O@07}Hv#AgZeHwZ(Mg>PG z4zVCAsLsi0Y`j4SJFya?Onv=-%*k+;*4qIj(gb+h4%q4gC~(oeMy61K zsQC_9ZI#77hM_Xzu1UtRgCNBGp#IO7?P42zQL!T@BSq)7uajb!ji+py<@#k}oQx=w zbrSFlNn1O(M9H{+7u4BdDg;N}(Rt|29OH|UVTGS?$x4az7wxgP&7)Ls-&z)1L2~S* zaEWw92HUUQ8+QdxRIlI}%r;o?jQsq!1(V-jIMDxw>=XQkRI#3SYE(1_Y{MIj%|~FD z8k|yrB5+?yVy*$clsCgan_xF)^2qO3xpwH@&{nbwy>O~#$8;U+WS%I4i664{*L%Qy z6C}8H{~Sru+l9-&49LnnM@A2jNY|BgOcJIh3eC*Ous#Xq21UhDm^E9vhteEZ5H(fR zBZ-r&fp?YXgKgG!oPWZRvn#!uUdLZsB{%nYjc-!e^t$kP{&~xpC;!J9{3>-#6}!DQ zZ*1$myG>8hQubYteG0z^dhf|z4NUNZcJIh%-iXD{dxYN*V5~NNwoRny1)0x4WV6SX zmY__r-wlEp|NUJ5Z3Gb=3$s{t1P6@KOYLpWh{_NePP;4<^9U7H4Yd7G>|T+53|?KA z*uL!MPS-&}k0eI+-||#0mY!qDhnWPj**}n`FCu*Z`Nq23Jrh7m^L1=YIl6a!+j`!! zHqe7A>J5iO?)Z~^41%vWK&swUvj3*PsAR_!8jSN`EEy1*ty@GkfVx-yvYwd6^$IW% zTziCB$*#yi&?jPCGY=uh{&an|^N+~LW?L_hfJ4)(VlS^~mq!}bEZ?#KOXsiP2m#db z2?+a}h>5u>p&itf?00%!OrgZ~zh@@!N=p2eprdc?WNuEiExt86#r=H7%??6y*S)b zJ4JEt{Ff>3+$kgFGdH%jUi+tLUZ}K`7kx^Q7`XSAho2Ek5pe~PX{!uF z) z9A;gR4jC*q1XbGaZ=>l94lr`@g9eN9^4`eG3A?Tz{Wx?QxDx%^raH#yLys=F!}G+nd3)Mj(p_EV zrj(!YPWLlb_}oYu&vun-O4m-g&OGV=WOBHd23Rg`V$2Ba?tRqXkQ8j7N|4C@Y^8ia z`+&Q$f_lE6Qez8mgRX}D>R^eA7@D52nPgSgbMui%uUCy*B8@FDL93KYXJbj^`smP8 zcM3rgE^Z$t9HQngV?PrbtZV$rS>d|~jXEvaVOiAqdD_*+Q)0E+bs6YcFJRGIVw0ZB z9uqT8J62#P$s_-ge;q3R-({W4E$o0baP`yIy6rIUk6?W+2#AdmIbTD01~n@$>k9$r zrBpW!i<#rAHpCNl0&N(w>OfZb>)!cy}I&eJS{2D>dO%@+>udR#19U zB1)>DYyfN2Y|`k`Nm9e_|5=Dq%|a4xliJA}To5dw0pq|8Tqq|=7;`*(Zgx&!Kp>@P zt=C+{!l}l7a<#xwKVeYwthM1#mm&eW@w2O9EZ?PtMh8@RVv9%URRZdZg^*YwTyj&KyU>h+ccr>56(KVmN!Z zf0mzXz>ZH^#rvassIC4XM<;9CSyONk_LJ~>>djB__BHsby%!fM$5oj z^1YMLY~oj39o3hpp$ti4`(G)odl0(#rc2{14Ddz)w)9#c{r$*RRGV zdZ$B=Ey)i{!k1%}u%8OTR}-ON^iKP|pLmHw+3OTXA+9=Q7ByMm)X+CPeNUS+m{qv( z&O5>SI0yn{cu28w4y1tW#UO6To(B{M0Cra_3ZaSi_Dr3~MM?nu;Nm=R4z^G-`S|$0 zuiPWAqYAw(D!&23#SqgFB5?1tK`WyMg+3!BM1~l@?p{4_2cW0|?xxVR2RG_tiv{;3 zwg;0!z&7j~w112gA;QHKAE33dC&PV!vH9FGks^;yUJC|wfKdhK0yEu{FNnEw!g3Ms5M_6^}m;I-$&Y-y{7ED_3x&1#c&TTUAuX|C%jye4e=|~IBd>x5R#y8+N5&-6_vFiZ{j`&kN zi5ZBfs3?dJDXc%Ksi7PLfW>dz{(GH}K%59# zA?#7e|G6n?;DCPY7#=ORR!2e-!R3j5_~(gaj5gRM;K%}Ur_A9%|6n@E8ODA?m}0*Y z+dnWbsr#|X{}c{MWP7-S4w9(;4L}!XQZYN~^H27JfUTvZgi9{^+RKk6%>#He#REp$ zf9}xR+Z*uq%wpFc{r%hdubiwlwh+#P2b&&FkuLguiV)%dj)FSL!@#4l2f%`BW7VSp z>Ye|4LXC2D2~6u}j&A=if{c}Y=wSR49K|3?Gr`-gopFJLiMXDXn$%m{BmN`ASBC(C zl_-?g<-};fW5phXp@hupZ?cvDIS=#=hNuphH$1Vcs|(S+cP2gVRCn^EpS3 z+A#z@F@R%TO$q@85bZ|ivRBVr{yP^}Ff!zB{fm2bFaKo#!nd>y_J^x`!_d$8Bl#Se zb2}p|D{DV3)ZgE~t4juKx;Ib#qkD#s2{YcL!Jk47Oq(E_1*M6BMDCOc*wd3Ma_sn4 zeV|kXU$YF$SESxcz}tkj+xW(%hkuGd*gp(xodWihl;1wj9UmW@07H`!@QtVqmcV6< z4$dm5RX?w|*s*IKBH@!3(WhG}Xf_!!Zth6;U~#@$Xg6>hTpilzoYRIZ$Gj(f_|Jx5 z2D;jh?Wf22ESPv&PQ&PkRV+|*O_9k|XN*Nh65k6|&Q&8j)4qHxbS>vyDO03wCy)%V zQ6yOQ{ucu;$DAXlLfz}kuBM!`WlL25dHJx6kzI{1BEY!;GflFG@h2_xK@3gmHS6v3 z|2e;4bN#v!6{bn7ujNc#&~z;_$5btRYm>hb{*y127-B>!O}0ozE__0|6$q!eoLy5; zSTW1Noy@bk<(h`j#(axDLA${FFL-kq46dZveJ6aJu{(dblq( zI33A{lVD7H)~Y|%Gu7AJ@wn2J^XJXBr7H?%Ab250s~sUj32@(bla&4eXcNuis9rF* z*?EEp#X4s@f$VbM{uO}{7+^jEUJKkDIAV@* ze<4z+N5i|pl$_WK9yFi<2g>CC}pFdSq zS0A`v>1f@?3r^at-PMlx$Em3P{GnH}WFyReBo+4|NP}ECO}#*iB`z`&C+EOkX!%=b zM@P%wp;0I`21NyX0>}cv0l$g(xQ{_S{;*ZI-0G)eT)%vJ6&@a*Qpbs8!yucj`~q)s zQr+^F*>$kk2rZtRvI<ct*_@USi|i6DW~hXoyxtukx#!;w}I3BTU=p@%@YhUuP{G z&%(byl!4mxIbvdBfSLZ!5IA+bN?SWN9E{9#! z+yM_@8-N?#DXZ{!Jk7OwObu4jYAEbiHa23TqI~?=o@#(Vz*->L*SC?v$E&0(k%obQ zQLSCQXx=j?qIEit;+bQepmoi2ypXo`_V;wrnN~4-57hwW{E4|avi%3BzAWa_Tn~dm z`%$xzPJmd~VOZ9xzg^i+==%*bQBEdzoSSxF6-m)3?p!eG(6Od^#wg;Q*)4{{H=Y>r3FGz^9K9&a}dStuF;0gTiUP43HRJ zU%O_G&RoSaBTyH64{BP#S6(iw=1NjW>F>%v9Bk+|`h(B6 zspt+R4wnHQq?YW#ORPhFL)IT3;Lli`159Jii-2)J7YVyLdH0XZe=ANK-^Vb|d9Y+F zYtm2sTZYb&!%K`O$prDZUz?ePkda8lyUH_nB*;biFmfro{NQ_8?6;9t&sVUG(9d-F z=jhxo&z+U0t23g%$YDQ^WI3Rn%q~jk=GK+it-J3L60uEB{6fK-F}^ z)%Gohd{B+rtsx6ZMY7)3BKyLW8 z)6l&UZFLh!Vj9L-yt)69XUz!=9yFsJ47l^I*6mWm8g0?&DJZEHbDp2Grym7kyP=)` zsY!v);6*zSsu(?VG7RHu_CPkRB$?O$(31pW6uR6{+@z# zX@?Hwwb|WD{3Fu=JNB?&28?qg{gTn3CzCsv;8B*m;5hSS*2pFi)Y8RnU{@Dnntx@s z?+Y>1oaQ;x6jEVZ7)+mycnyFGP({Grl{15!69jia-vPztKWYj#eSkDY#m8T4CRzQK zkpnQTyLEP3z>fLy%yd3{A9D7YQf9X<#ox1CO|;2oo%+r8<5Vz?L>4E^chWoHD@%WU zaXZ-Y6u`&Nqn`JCx@M`q{N*7ID*1i0IG7}|dv{yWIa*Dmnhs@Qyq7Sz!PQC{vAV}v zb62S<%&{#uI_>5e+;4W(i*ZTGCTsJV*8*~E^U>J0<8KHL?7*FBOAL>p_Q{hc0PY~dgQ1j{u~?2SG%|8{VBp2uAG(2E za?QL zknKd)*qJ!0YKe`S;yBYeEPm9LqqriU(w7P%a0yyHnLTWaTW4nkmd3+7Dv#@P3ZcDp z(5yo{O;-cmHNeQQDQIdf&Nx`_kTE;*;*w=AjaLt4G;6vGhE;XzAdpONRqa3={FavW z8E0iVZlQYJ)MivXhk9WrMU=h%rU)MmfB$Fy`FP2>LZ|w)Vyl?M2IKp_U8wfI1K)Fn6r3^DW{a! z(8+utoN3_|fHtOe^XVV$OidMY+?xSO2H5X>U?9x2StrC0?~&4&gFKz3zzFwyrVl{Y zE+{eUL|4_@=ZYGzpEi#qaBqdoK9y=r{HZ}nn&N(R$Z(mYqWTW98}bxSolwns2%@Ua zO~|_!=s)30)5>YU$q1~DI=7{cSooGGf_B} zNxw>MIL@YPAmJBMdZvs_Uy*hqK{C$wDsW@N!BF#qqO4Uz#mEWw7TW`aCsUJpsvFAa65-0&+gv5uP!{yzQ@Z7v4K78*#pT6Pjc*IqwZdZfR=rh=|&7 zZ(g$8xf>83$9kJcrX2TPm8Ng|4}==CY(F(u$tO~2d-GyjfSepZK1M}6mc#NqM!;-D zX+zb<$o+cso63{V0i|o0={_@T1PLeE?0aj4R)Ch8t9T++KAZy`LC z^c%RkG{<}zhO>QtW_O1u9KNw|orkG7OEKTYFP5%=3lCtuqWtw`1=?gcQ^cS-yZwNpR7RG09ILb znms){JVYLf4%(xW=g3I*qT{f@)Rq3s?x)q>``W=W?+TDkAy@a5rO&9Lh7*rFDh?a@ zi@|)rRO(UFh3ilA><#m8yrXG5N4A$lj1>GvoFZNBR*kV;^}F-DJ1*|l{; zXF4pFtccovb@or=er8J}IrQXs99MY1!mo)CP%w*S&UbfmMAKe07>FZ!JAlzGu~w^W zr@To!W3wt>^=bG6IFv}y=uSL-iAtEoWDfkmt>rqO{{8}!$Gg-ottG?Q{1EgvFJIo2 zMU_^Af>goOy~SVtFDB5IZYsWJ_)oW``|W6lrF(St;6C{IpNk!c3Y(g>GuLV0vl@wa z!Exui3-EyW5BXXBX(qu3-5$ba0Jfszby`sRce^^{xW|OTgR$D9r|dA0LC{0kv;gnP zGloaq)O?(%=bT5&A-O+2hw5o01F>l$&^Yap>M!P`?|%ODD?iyGvJJXzmMaj zLeP5>a8b47>sGwael)>7d^?`{H~h3&=ZVhj<@gj%mxmcEBCiG3jKblMpz1UaaY|5D z9ExDhKHy1|vugTFl}Q)M)l)2EPA7T6ktdTQKUHoD&I8honcIdI`?`_iirlr+ z;>hl85G!+XkmIW;M^D`FV|5oSEz8P!xx)NQ{shwSh6n(Kk)imY=h52ytcOpRi3%`aG^PNtSMX$ z>Ii#{_HmX#Z>7DOT~G=9o=$$cE{qGF!Q*YdU98RLzM=FqLTZGqMLhm2r~x3*kP^i1 zVcqR`8*Yu4<&X*PgEjW&x&bv$RWvGM6rbOy{`$-E*jT;zY9)HODWoRJb8#q|7Yu%2 z66@QD`%w=)y>|&BikqCmd1heqC;}rbS@o2n zGGflA2DRx==8cw2Ru8tCQ>n+ z@xzH%JwAPBx~S58LT>bA5qj)uITn++6IYlUNK&zhmr8oyD>YL*oxuOZ>*HbTQ&T~n z&tN7e&b#T8!X+H23jFV3^WhukIaM;tJ&cbQ%3mTWMM4N@BO{#M`{H4Tjbaf;3i^`n z0avCy`8A8T-%1fge;i%4(H58snwf5`(cEttBm!_Yxg{4Un2_FHdA+iK)Gf35;nznr zRu|o%Nay6dt%%2nL6~l)Gm?=lZ7qmYrGl%$13InaJ5BH`^?yr1h1<(n3cF3%nm&#*BpLuO!>0Rudvg0;Eo;nid{sZ(j_!pfKNgKh!8hQZ2{=}cZpd|w;;g>~P{8%OI9~#kgLc+s~3JT2K z(hSB&9x*({$4C5Iqs>ednoemtJlM?0pA+km&dsaAlkogtD&dDbMwpE|jl!qET1q1H zzwdu_(P<*|2e@*_6sjlc(1v;|Y{-())OJaw<04q9L}&92{WV5%wF{h4rVINx5XU21 z(z%9WXQ$@3Q)LnRx>DHtS1wP2{icaxc;7&yC=Jq?Zhjj(Tk%PjpQtu3dG# zDK2~SrQCrwjn9-x$9yU&2|pmbO!yrFR%TtDyk(C0fYe*lw~1pf%*$kD3Fz`(1b)im z(XCOj+{f5%0U&qfZRLKGpqZQ1m2(#7;qND*23>l0VZU8D95yfEXiaoB%XIz9o%5m=<_E6DzLJ4duliPPs`%W1;}w zX!)KrEklhi(*&If~THHE@+EoXi zBI9gGk+XRsvW}yNSpvJx5@f4zo584K5`R|fY;`Hf_E$z-YWyDHv)UpglMJSZvh<#x zZIj1Kc{lbJGc5?Fm&pK{S4{?0*>#zv#S9h}E!Q0uL%u_l)L;!6Ouf&Y5 zi8!tOUYhuYcnbMjeDbK0Ps2e7pjF3H=@IHVW=V?UhyGd?zF%d~6!Y6GV{Bohmtp+<4KpM<1EIbqQ3@c)nqK>Mo za{&l3qC8Kd<|%4YV}VQjWo# z!-ID#m}91ojSRh8@X_^xIfnre zm+%%tKEbEHVlW?kC+%^l~A{FIQK#Dv2 z%P&Y;;>1OyCwD^Wqm0LK{1tv2A$u&53E7+K>p!n-C)VT8KO&l70s>jGsoMKtw zWGp=B{@0ZFZNvFbvYG>!*&ofGas7fY1c}q`I`a{P?dG?$QjT>l?Gq$+wgR$+evK+aveN|h8ruOg|eS+DIEeQL}gneYVp zv6$CF+akk9SOVI!;d>8MQQw2Gx|BMMxHfNbksv$)NX+el$T!r!s+aNs?pQhOfr*iA zbZjN4W9}Fp21XM|9i7Z*P|-alLw)_3Vvla`BUR$MT(8=Yx8vvgF9W+wB>N4H>lWmc z&S#p77q)_VW{n;xC+rn@&8L^T;Z)?UOC&tc0qE~yKNPx#2UsU(M4daR5tB2#Uu0pR zVE$Fp9s0gez-KW_7^}+h@f_j%BQ2=!4{7efEi-Do6CwK>G`0=IPf%0zB@}$R_k#?P zGl@FCV9v-SP4t7qTWqs!G_!X~a&bNYJVJ<|2DG8lm^xo9b)wTHaNkeZT_d{mu2qf)_ z@5MF3qg`RoL%^PJ(isY&p`rOZW`4wVvy*E&jrHV7I{FIb-5$4*-uZejKGs{PekNB7 z;3vnS5URA@kR5olx6lAdwFP*Ya)A{+reuI6_j0Sspt3`tEQ*hZeBpThJPk}mu#BCNcHxBj&H3*rs#C|s#VK;xuJ_!(fg;5- z0$oO7Lo%K9@VFEab}^@sW*0yo@v<=xgTnGrtzH)r^Vr8Ba{hljU1d~MUE7uv7`lc= zx)~azySou^NF_wNyBnktr5gmKLm0X{1*AKqhmd^F^Zoev%UZK$&e`|A>x#eS`lbo{ zY$Bra7~-jhjEVs<_=2u3Qa6SdD*D*A>fy!|LWh>)_4d0wu78x!+&UZM=0SjU}+B?E9NinZURo(8fTg){^(S**AQyJzvmRqh;vHuJUZ zVO}(nRc~=kMZFYKikNhYY{qu@YPXdTq4RTTkpNq(;Fcf&0(mab#QPDE1j+(8akOS} zgc4&8qkN}gUm;@pN=z@C8X|W4IU!v)e-?ZwJue9rKQ><~dPT#i{oa$RHHpK1XQ37Ij*to)k1FOM@TH=ipvVLS_@^m?I`U%YEmfp=N)^ zH%wR`>?rA-3wugg3VA&t&OQ_RYPrbGTRG(MVty}U2SuX`uCY^LmWD<6+Sea zO$`qX4b8KmMTX2(eqgk|l6;D+KVA0jD|T&jw|1Sute z<7VImt5GCuh%?<+6f0DRjNgvWasiP9l?vZY%zn+{Q6>{=W@6&Q(xlhoJ((6`;d3Ww z&-~A##{k|K{;%gG$+#lIw@?GR^M%J^E|aL?YfmR&kP?2Gq8|uGZ-DnhI&*?rHN%nv zo!V=o(cMl6a8m~7+oNGYp^JRjH?FO2PY6$Y!Q62#E*PnftG4JJzvb1Pg@z2x=V0O>v(;y}Ew}@EkyR z_U^ir+c~Y@oUOmO-&@={S$*F-IjPE@20Qs$dg6EeyV}n$0#*i#YTJO_F*^@)N?ICG zyXpSUj$-i)b$}%KSr7tJU0vO|(bP4tc*}Ph%jDKnE7pEG3w$ZO!X!yyqSFv#UF-*x zlQ#bEB)Uiuime*FsAALbk9>*CeSf)z(SHaO9Vg5`0RIS)pkDNyR7oZje%$A&ArN2{7L z8a$*kOF{%7r4Seh9C{=693B+Ih(Pr24Qi-JMiC^Bf|N^iXW43`Y>iizRrf%$CGDHM z84}Kjc2DkKYp1vVwTy_@GwYEW3?vLYN2FFQanqBH?vlHa>Jm3w4CjsMsOXvRoZpy? z$k+why~rTjqM1kHCv>GgcwJ?5;I9s)Pmh!9+Ksn>5p7Ni2ipyEn)naeO2HOfPU&Be zVHK_9mx4fKv!|4si-v3S!x#I~4vv5utJ-=ruSQ-S+1dnwqZdPl4kX?1n{XB&##y)G z&*MrUQ1rH!_0Q!)Ht;ijXkIe>(TPNEKnVreB8j_0*R0wbZ?P|lzNmC-5SP)jx~mn3 zTc79WS1f@0QN;6&jBs+ zl$DA3$tAisjEy7;Ln}?klKY&d<((E@-+GXvu>EVVGI~?dkqaOKXF)yu#~fwUgHp}K z_Q!d;7QYj7K6FU>2OMmH2749aC-RE_B0CUHNb?P~aZCyE{rXI2A^l-23)(ds6oNVU zLeBeqO;VJm_$uKj^4fTMQtx$wh`6-(Iw}sohQ*blnn{A?XE-&N5WR4v@oi4t-2<}h zHusxe)Uz+O+pwZP>mEmQt=6OZK8K(KX71Pr+ZQPxPYIj8uBr2VvDdNT@9wus$37=RtV2@oKD~Um#e8H;_9fwE6S4#}VqEx+m~GrA@7+L~K4p{1p(ffaD>j zzt-6+j*nxHb(3IRJUn)QUZIs0y`BPN zin$I3IXSu7+el#E`l{8Wat$AOx{AEjVXZ@j8qn#@jE+YC^uW!{eO}87N5NiIYAnq7 z&taUt1I6Cnp4sH583M)Nz(5a32IwXLx1W;h^ch@F-f= zcFafRFV}Lsf>bu$y7`{9=`hU{Jd!rAOR~54ZcNx+%ZhyhX7|!%x)MWaP{oWHojhgT zEUo7uzpVi83OtH7f?t5IIy_vuYIAtLBqu7oC55i=7GH{4%>-TMBW;Wo2@F$`gF^8~ zLz+KP6h@7ep73-f2ZNgYmIP}hIGyH#&w+{t{No-oA=Rv zL_bt5nYL_|`d2KyYo@_BD==|CAGDc2Z(VG>rGpmuP^Q5iE4h~axe_vBoL

    @?|5! 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

    sBH~3=3S#)B4soUV-oeKR*|Phd!)gn(W)>3vgX$ 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 kNM z@_s3aymg0iev)Z`d}UIXs15SL|GnXwRdX26;LX0!JCf-HL`d^a;e>E$%@C$0UBw@C zp8(c=5LwVJN(PpX3I66wdsNMo*q)lKKz8&!BI1=yM32t-W|A}2Mq0P&7bm0uBK(J3 z4uKV^;Fwa57E*Cw6`p@D%X`LrUU6tb>x(%)Q$Tkb1JOmJO}`DvJYa zD@zX)rek%Gq@t&)GlP1X9TWE=uh$6j%#DmT0Z`~;ef!oIqHc8>DFgY(U{7X(DQ5uj zS&~8W#=)h9=i&1bKx*`TeLUDUM9HvBzLMPN^ecIW zU*3rojfp0I^AxpRVgrMq`h34`EuL?T_UT^@cum#%h3Xz>|3zMO9zt4U-9O;`<#Hnu zOK-)d7pRbHpnEY7Myo4+)UJoDu=c1K~5pr8a_r-jo)tfCU^@|#kR zj|RE^VB_>}zm@bH9f3!WoG-c0sEVquO|$UTT|}{rYK2|!6F1JH@$@-**m^iRdVpkihx^aR&;>!#XfTSD{jHX+l5!7F$iKT+!PDoiirYMSilFfwpY~D#QRF~lVm_V4!VST zx|s)PS?+PN5Dhaw3>d4U9kg>)G_=7dJ^L2Pi1Vcu7dqkJSl61PV`D(!8|F)TLPBsn z_b3QR4X-efSA0f5d`VSRRcUGM7QYDJd+sG`UHAh*nM!l37t)WA)UGmh4)OsVar zmLzrXD#EeMDdUE2bEob!4vARyJ&%}$f+jwdAH@(;<+Hp#&;gpGnP`T~cP{y76fv4s zJ*_=bAhVgENQqjGG7Z;A1zofz*yzfpQ0dZxaaa4y*HO49!>(77- zmvOVH|M6yTC;AE_OcY=K+>JX(yUoSspWO1`~b3Gu1LyN;PcA-ur%SBbd)X5bt0eqKLmvN?8Ju6_( zAi=RI%Htk6orHhN(o2v%abt@j@^gOk)U@7LrXXfQ>1qJBO*`wt zLnt7$UA1*|zbV-~X7j~T{0dR0v=`wZIDRP}cW)DOZGISJ@}XEwD$d${C}tQqCXvYu zne&W9WC5}2%hbZ2u6b+}iO$nQFuuwrhYha>y!nxNY!Zxs`a81Qy@}#}g%<~XZNtIA z;j&%A;IrjOrx)6x+(W5i^rDiA0*=#IH~cI5;`mV%m;*YkHBJBy(eT`b^@|4LnZHNM zvanL;92Ewmo8U|F1x{gi#Ds-vP8dEEj<6a_OvucH*kSwe(}($r?1C{yz&4jQbD-Z4 zO~zK!=aS?TJ_a*GY~CR8pXFMiuZMJVT+^U^tW&^0r;4;XOxWyuXNEb;<>)FAEyt(T zSK~HX4%wxWz@C*68Cskvh7WEQijr4|!p7y;z2pY2Os6%bd8(xYPNQZJx49d%$>1KA zilImYDEUc%+~>8b;3fQrge&mE^fpLBC9K2g$-tax!O??l?hI|%J@@)h2u3v6;P1If z*KtM6c@5!)5$;|wGuWayP^sUxD7_9^=#Rfr%WW#v=|iFFMCKeI^rwa90M_gz=Ol~< z>U}_hkT|o@>V75{-_ei+Zm-5XJUcl-(e5*(7TiQk@NDzEG_mypDhBO8KEOGTrLf>d z?g6tLNY~87roWO+y8bDR4f@Z)czVcvg>D1ZWy;J;b!u9Ts!yUoEY9JnWKI=Kg#q%{ z==~9@`+l2&tKRx0x{oBi&~*mi-#xGQ&xSK#o1spAAgXT)4&Y$u&V`4Kyp~m45j*xC zX!$tA62OUBD_xFYHe+Q9H_tmfUzs6#2T)yy8Bi?TJBO|e6 zIf1zA=o`fdD4`RY_k$ZFeY|oO7NR?_W4mk0lE6QQ1J3p$M-u5G+Y;};MMce>+$N=a z&VJ%u^M5*9TV3ez@lbXx`PL1euKombgSETb57AiQuUh5P0O+7Mcftp0_E6%8cb-1w z2;K7FxF$hUE|hB^pNn(exr}%S9le4-EYPAVC(wzK3Ft3`>)1t6?lGG*^nb$T8Hawy zJhKcySsR-epNChX|-K2)ZM zx-(Oq=gg;WB>8YeZussw6pbyVX8v0V4U$PJh!HlE>PN5hpwS4euVvqiF=J;fVs&1U z`-F({%t~$D#F=(csm{-M@nH1$)C|$0j)J2suI6E$!HVDdsP)u(nfP-3~ z4uuqOCGq;J#3Kw;15i?#nwlEDWxe~efnE(yT%ldl>qYt)jK%x$(F9nG+aJ(Kg|wUO z4e|(@=||913x$^eR!fcf-PEUYUUG^ozwIZpLC2cVk*jnz)8!xyR8R?RHVJO>Dhir`cl4;W zA}*cFYty?>Zm7pJeTG5Eb+A*rMCB`PDcp3W*af|pNF)HMl+wBQ@*-C9kv34OO-2(H zsqd9%Me>nyE9=(X@ZcTiINh-DkOk;7Ct7H#)HMwTpAjsgj@(N3@_<_9Ye8*8rLUMD_#viG)6!IWg&9x8%$+h0_%aVZm@j%=DBvno2=|9Vc%kaLywt4qrQJ59*rN1e_G ztxqXn#trOhm36zKh5~WGI{Kv^Z}NlVv{dL$~iMLGn|6k@tkZDxZ7mO3{$%SA_ zp=k$tr4nsJeTka^kucOTUn8msL}nKDrD*qeA%dDn5WPa*5AY}L3v10Oq&4p;Ovkiu zBr{il0ydB0ui2H1@Q{wO84XhVy`*Whee^28&HW)Bpf=$Hd17Q?Hu372_OUuLsec>> zwz3jS6Z;WSr|pTX`~}h-GQaV%=ju#Ks$xc;sRezlc=_1D_aqF8zr9D5`OxFJ6HE-U z)2^r9ElVfW_i^sI1bNS2|GOdwE(n86gb-l>>txLJ;`ZYD4gCYW!dRjygu{0A=!}@cZ^3 zhmlgzgx|KX0e9J^4kSimS$s|fQibsscvGnD6@D((V8Gw0Lnhj#9=FrYq@MA1Ge16P zq!B!;{%O(B@5BcWgT^9$C4FPgq2J~bjHib1mAtPNjf8tjvV4<;I;VkDZx?(Rh4!g` zuMLy@=i1v!3^oCbW}}T_QLx>Ne6b`>l8N7JQcVBp<(fJch?Tg_7L$FA$LWU=KQG24 zpPw#$i0S-U;TxZxE=wZMYrC|0TMX21zMv8{I&9?hUdtfkxnzB)IGHPfg~Qv6WKjDd z13Qr|D2Oi&WN=!eG`b-yU$9RTO&<>=#dTs3g92@%+3vB!KhY6P;tRVAz?bNC~%T(t(Cw ziD|{qklIRK_QR<(RU-wQaPg;BErEw;ZP!!3ptSDoZ>ALktzhq_XBy6UeR%czeZx-*R0nIh-#`<$52A(Y#9o zaXp?p8c*k(`5^MJ32U3hW0z6K_y|J`a1ELO$jZd01mM$IxZw=`{4&HboVNd6VHKK{XIuO za*>64Q3&L|(osL`Wh4`66Tnvu?s+uLWD{w$yMhj)=9hb@<(%rZzD{<(-GD7SSQ0GKY!5{j z)ZgE4)XTf-2-H$VU^>x<@}&&a#gxkC|H0DQ<^YwenP;O!o)V(0VHUw$>V0zBnZ@M;arXkN4BGHuon2g@cf`j2bUwvQC17Za8;I#Y-JL;u5b@aZ0aa>X0vTQ3 z11(7a?A&M~GzBpJeFQ~2JK`1-SxEKe=0?{5008xqm02;+EkmSVVvce`yY1A-fb)lw zPTog{Kf^h%ob8MY%SxH2+QW-m8Qn-BewG^3puDOsoXj9P@+NIHQxhfHTGlen$q6c> z36@@+7}zOVJyX*L-VpUO$~mNiCFIU=v$r4J>fr!xEV$nAGvFYv3`+7@r)=W*A(tHT zlch3~jY}o9vKG1(fJ*K6*e7@RrfL!e!l>-@G0}6dzgp4^~_>9eZGJR6A-+W$=1_w^7q6OHOvgwBvx2P zQ(h;k`oz$*O0Yk0 z40yTKB34TRAC{2OhSWhVZ82DbAyB44li$~I@bI=>9ii2sk@OC~kq!b3Xvz22W$T(3 z#~B^l^#P`AC0gIko2q@GX7Tf4)F_*@yScY zD5GQnyro7j~VWFHGTI)~| z8Ryu}!650Rj6RL-KQ6`I9&41a|FdV4{aX7J*2R3SxqKEftW0^_R4qU!7ik|A z#^)djTJiPlnTWt;vZ9`<1$>_CGeB;Q?H=87jQhe|Koi81&x-g6keEJ;0YsX>lsS*& zzXhr!{#7@Qgy0hTI*VVWQ7LbalL1yR&GodOG9H>ue_M00X*52peaGNlVvN3A|Aoxp z9rRwP(T}feMmd0}54yA?u;GHilGk|d(p{X95!^C_Lv?!;K_H|JTT3<{cn`LLESFf9EE58>FrErwrTK-a)^yfAi) z3NetRXw0sy9*+AI@$G!GUig5o3Ss>VN8S&Vo|Pa%vyenyWHs*hY9yGuD0hx7btWGp zY}_t3S>1^O7%F>@s_o}8aa2*XD&{Xu7(JMR#w)n??BTEV2O~o_XVPZ3SPSKozUaoU zV^tWRlPk-XgpKU+L|HCk^=ne%e`ESJtsYdP{j?hX)Tk5m8>QQ$LG!(l*Wny`5$c=r z-*YS~tE_HEO)o03$Kqo20ZS*|u1S%0A5Vi<0=JcXS*JxCIj!aMuTFj#r#u{X`e8-y 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

    1q-qllLXt-qDS10t)XVYDw6c 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

    v7+X*7-o%MgI0?1)pGiDl2ny#Z7}kT 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 ~e4g&-d`Id{)$Gf2_2?qDB- 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

    x&oht(;os!g8dTg%X_} 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%0A&4b5w+I4&lyWSN!45mO(4r;Zy;>- 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