!copyright (C) 2001 MSC-RPN COMM %%%RPNPHY%%% ***s/p rdmaxsubroutine rdmax( chrd, ch, vmax, inrd, ni, nk, nkrd) 1 #include "impnone.cdk"
integer ni, nk, nkrd integer inrd(nkrd) real chrd(ni,nkrd), ch(ni,nk), vmax(ni) *Author: * Marc Gagnon * *Arguments: * * - Output - * chrd array after reduction * * - Input - * ch original array before reduction * vmax 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 max values encountered between each selected * level * *Notes: * ni .gt. 0 * nkrd .le. nk * inrd(*) is included in [1..nk] ** integer krd, kc, ks, k, i do krd=1,nkrd kc = inrd(krd) if( krd .ne. nkrd) then ks = inrd(krd+1) else ks = kc endif do i=1,ni vmax(i) = ch(i,kc) enddo do k=kc+1,ks-1 do i=1,ni vmax(i) = max( vmax(i), ch(i,k)) enddo enddo do i=1,ni chrd(i,krd) = vmax(i) enddo enddo end