c...This routine constructs a composite filter from the old filters and c...bandpasses in filterbin. k is the number of filters to compose, c...kfil(i) the number of filter identification, alength the effective c...wavelength and conww the surface. If k = 1 single filter. SUBROUTINE compos_new(k,kfil,alength,conww,awide) INTEGER i,k,kfil,iread,jread,m,mm,nf,np,npop,npop1,npop2,icomp, . mxft,mxwf PARAMETER (mxft=300) ! maximum number of filters PARAMETER (mxwf=200) ! maximum number of wavelengths/filter REAL alength,conww,conwl,conwl2,r,aw1,af1,aw2,af2,aw3,af3,aux, . awide,amaxwl DIMENSION aw1(4000),af1(4000),aw2(4000),af2(4000) DIMENSION aw3(4000),af3(4000),kfil(10),aux(4000) EXTERNAL trapz1 COMMON/c_filter/iread,jread,nf,np(mxft),r(mxwf,mxft,2) COMMON/compose/icomp amaxwl=0.0 IF (k.gt.1) THEN kk=1 mm=kfil(kk) DO m=1,np(mm) aw3(m)=r(m,mm,1) af3(m)=r(m,mm,2) END DO npop1=np(mm) DO i=1,k-1 DO m=1,npop1 aw1(m)=aw3(m) af1(m)=af3(m) END DO kk=i+1 mm=kfil(kk) npop2=np(mm) DO m=1,np(mm) aw2(m)=r(m,mm,1) af2(m)=r(m,mm,2) END DO CALL convol_new(af1,aw1,npop1,af2,aw2,npop2,af3,aw3,npop) END DO DO m=1,npop IF (af3(m).gt.amaxwl) amaxwl=af3(m) END DO DO m=1,npop af3(m)=af3(m)/amaxwl r(m,icomp,1)=aw3(m) r(m,icomp,2)=af3(m) END DO np(icomp)=npop ELSE IF (k.eq.1) THEN mm=kfil(1) npop=np(mm) DO m=1,npop aw3(m)=r(m,mm,1) af3(m)=r(m,mm,2) IF (af3(m).gt.amaxwl) amaxwl=af3(m) END DO DO m=1,npop af3(m)=af3(m)/amaxwl r(m,mm,2)=af3(m) END DO END IF c ... Surface and Effective wavelength conww=0.0 conwl=0.0 conwl2=0.0 conww=trapz1(aw3,af3,npop) !Surface of the filter DO m=1,npop aux(m)=aw3(m)*af3(m) END DO conwl=trapz1(aw3,aux,npop) alength=conwl/conww !Effective wavelength DO m=1,npop aux(m)=(aw3(m)-alength)*(aw3(m)-alength)*af3(m) END DO conwl2=trapz1(aw3,aux,npop) awide=2.0*SQRT(conwl2/conww) !Effective bandpass (proximate) RETURN END