!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%% ***s/p rdmoysubroutine rdmoy( chrd, ch, vtot, inrd, ni, nk, nkrd) 3 #include "impnone.cdk"
integer ni, nk, nkrd integer inrd(nkrd) real chrd(ni,nkrd), ch(ni,nk), vtot(ni) *Author: * Marc Gagnon * *Arguments: * * - Output - * chrd array after reduction * * - Input - * ch original array before reduction * vtot work field * inrd list of reduced levels * ni horizontal dimension * nk number of levels * nkrd reduced number of levels * *Object: * select a subset of the levels of a 2D (ni by nk) array, * keeping the average values of the rejected levels * *Notes: * ni .gt. 0 * nkrd .le. nk * inrd(*) is included in [1..nk] ** integer krd, kc, ks, k, i, n do krd=1,nkrd kc = inrd(krd) if( krd .ne. nkrd) then ks = inrd(krd+1) else ks = kc endif do i=1,ni vtot(i) = ch(i,kc) enddo do k=kc+1,ks-1 do i=1,ni vtot(i) = vtot(i) + ch(i,k) enddo enddo n = (ks-1) - (kc+1) + 2 if( n .lt. 1 ) then n = 1 endif do i=1,ni chrd(i,krd) = vtot(i) / n enddo enddo end