95 real(r8),
dimension(:),
intent(out) :: harvest
99 logical,
save :: gaus_stored = .false.
101 logical,
dimension(SIZE(harvest)) :: mask
103 integer(i8b),
save :: last_allocated = 0
104 integer(i8b) :: i, ii, m, mc, n, ng, nn
106 real(r8),
dimension(SIZE(harvest)) :: rsq, v1, v2, v3
107 real(r8),
allocatable,
dimension(:),
save :: g
116 IF (n.ne.last_allocated)
THEN
117 IF (last_allocated.ne.0)
DEALLOCATE (g)
126 IF (gaus_stored)
THEN
135 v1(ng:n)=2.0_r8*v1(ng:n)-1.0_r8
136 v2(ng:n)=2.0_r8*v2(ng:n)-1.0_r8
142 rsq(ng:n)=v1(ng:n)**2+v2(ng:n)**2
143 mask(ng:n)=((rsq(ng:n).gt.0.0_r8).and.(rsq(ng:n).lt.1.0_r8))
168 rsq=sqrt(-2.0_r8*log(rsq)/rsq)