# Log
logfile = code_file_name(ext='log')
if os.path.exists(logfile): os.remove(logfile)
f = open(logfile, 'w')
print >>f, 'NY=%(ny)i, NX=%(nx)i'%locals()

# Loop on methods
for tool, methods in config.items():
    for method in methods:
#        print tool.upper(), method
        print >>f, tool.upper(), method
        
        # rect...
        t0 = time()
        r = CDATRegridder(vari, gridor, tool=tool, method=method)
        t1 = time()
        dt = t1-t0
        varo = r(vari)
        print >>f,  ' rect: ini=%5.1f s + reg=%5.2f s %s'%(dt, time()-t1, psinfo())
        
        # curved
        t0 = time()
        r = CDATRegridder(vari, gridoc, tool=tool, method=method)
        t1 = time()
        dt = t1-t0
        varo = r(vari)
        print >>f,  ' curv: ini=%5.1f s + reg=%5.2f s %s'%(dt, time()-t1, psinfo())
        
f.close()

    for method in methods:
        if rank==0: 
            t0 = time()
            print >>f, tool.upper(), method, ':' 
            diag = {'dstAreaFractions': None}
        else: diag = None
        try:
            varo = vari.regrid(grido, tool=tool, method=method, diag=diag)
            if rank==0: print >>f, ' ok'
        except:
            if rank==0: 
                print >>f, ' failed'
                print >>f, format_exc()
            continue
        if rank==0: 
            print >>f, tool.upper(), method, ':', '%5.1f'%(time()-t0), 'seconds', psinfo()
            frac = diag['dstAreaFractions']
            if frac is not None:
                mask = frac<=1.e-3
                frac[mask] = 1.
                frac = N.resize(frac, varo.shape)
                mask = N.resize(mask, varo.shape)
                varo[:] /= frac
                varo[:] = MV2.masked_where(mask, varo, copy=0)
#        del r
        gc.collect()
        if rank==0: 
            print >>f, ' plot'
            P.figure(figsize=(12, 6))
            P.subplots_adjust(right=0.9)
            P.subplot(121)
            diag = {'dstAreaFractions': None}
        else:
            diag = None
        diag = {}
        try:
            varo = vari.regrid(grido, tool=tool, method=method, diag=diag)
            if rank == 0: print >> f, ' ok'
        except:
            if rank == 0:
                print >> f, ' failed'
                print >> f, format_exc()
            continue
        print 'diag:', diag
        if rank == 0 and False:
            print >> f, tool.upper(), method, ':', '%5.1f' % (
                time() - t0), 'seconds', psinfo()
            frac = diag['dstAreaFractions']
            if frac is not None:
                mask = frac <= 1.e-3
                frac[mask] = 1.
                frac = N.resize(frac, varo.shape)
                mask = N.resize(mask, varo.shape)
                varo[:] /= frac
                varo[:] = MV2.masked_where(mask, varo, copy=0)
#        del r
        gc.collect()
        if rank == 0:
            print >> f, ' plot'
            P.figure(figsize=(12, 6))
            P.subplots_adjust(right=0.9)
            P.subplot(121)