module binpull2 { # From each bin on model mesh, pull nearest data value. integer :: m1, m2 integer, dimension (m1,m2), allocatable :: jd #% _init( m1,m2, o1,d1, o2,d2, xy) real, dimension (:,:) :: xy real o1,d1, o2,d2, x,y, near,dist integer i1,i2, id do i1= 1, m1 { x = o1 + (i1-1)*d1 do i2= 1, m2 { y = o2 + (i2-1)*d2 near = 1.e30 do id= 1, size(xy,1) { dist = (x-xy(id,1))**2 + (y-xy(id,2))**2 if( dist < near) { near = dist jd(i1,i2) = id } } }} #% _lop ( mm (m1,m2), dd (:)) integer i1,i2, id do i1= 1, m1 { do i2= 1, m2 { id = jd(i1,i2) if( adj) mm(i1,i2) = mm(i1,i2) + dd(id) else dd(id) = dd(id) + mm(i1,i2) }} }