Пример #1
0
def drift_monitor( t, Q, Ps, i, st ): 
    # create actual quaternion
    q = mathutils.Quaternion( Q )
    C = mathutils.Vector( (0,0,1) )

    # get latitude and longitude of center of mass (0,0,1)
    R = q.to_matrix()
    c = R * C

    # appending vertices to plotting list
    if siku.diagnostics.step_count % siku.diagnostics.monitor_period == 0:
        Pglob = [ R*mathutils.Vector( p ) for p in Ps ]
        vert = [ geocoords.lonlat_deg(mathutils.Vector( p ) ) for p in Pglob ]

        poly = siku.local.poly_f
##        if st & element.Element.f_errored: ##
##            poly.write( '> -Gred -W0.1p,red \n' ) ##
                                
##        elif
        if st & element.Element.f_special: ## elif -> if
            poly.write( '> -Gpink -W0.1p,lightBlue \n' ) 
        elif st & element.Element.f_static:
            poly.write( '> -Gbrown -W0.1p,lightBlue \n' )
##            poly.write( '> -GlightCyan -W0.1p,lightBlue \n' )
        elif st & element.Element.f_steady:
            poly.write( '> -GlightGreen -W0.1p,lightBlue \n' )
        else:
            poly.write( '> -GlightCyan -W0.1p,lightBlue \n' )
            
        for v in vert:
            poly.write( str( geocoords.norm_lon(v[0]) )+'\t'+ \
                        str( v[1] )+'\n' )

    return
Пример #2
0
def aftertimestep( t, n, ns ):
    if siku.diagnostics.step_count % siku.diagnostics.monitor_period == 0:
        pic_name = 'drift%02d.eps' % \
            (siku.diagnostics.step_count / siku.diagnostics.monitor_period)
        print('drawing ' + str( pic_name ) )

        with open( 'Polygons.txt', 'w' ) as poly:
            for t in siku.local.monit:
                poly.write( '> \n' )
                for v in t[1]:
                    poly.write( str( geocoords.norm_lon(v[0]) ) + '\t' + \
                                str( v[1] ) + '\n' )

        siku.local.monit = []
        siku.plotter.plot( pic_name )
    return 0
Пример #3
0
def drift_monitor( t, Q, Ps, st, index, ID, W, F, N, m, I, i, A, a_f, w_f ):
##    #static polygons (generally shores) may be simply passed
##    if st & element.Element.f_static:
##        return
    
##    if st & element.Element.f_errored:
##        if siku.err_test.get( i, None ):
##            siku.err_test[i].append(t)
##        else:
##            siku.err_test[i] = [ t ]
##        return

##    print(st)
##    input()

##    #errored export x-y:
##    if st & element.Element.f_errored:
##        with open("errored"+str(i)+".txt", 'w') as erf:
##            for p in Ps:
##                erf.write( str( p[0] ) +'\t'+ str( p[1] )+'\n' )
    
    # create actual quaternion
    q = mathutils.Quaternion( Q )
    C = mathutils.Vector( (0,0,1) )

    # get latitude and longitude of center of mass (0,0,1)
    R = q.to_matrix()
    c = R * C

    # appending vertices to plotting list
    if siku.diagnostics.step_count % siku.diagnostics.monitor_period == 0:        
        Pglob = [ R*mathutils.Vector( p ) for p in Ps ]
        vert = [ geocoords.lonlat_deg(mathutils.Vector( p ) ) for p in Pglob ]

        poly = siku.local.poly_f

## for debug
##            #errored export lon-lat:
##            with open("err/errored"+str(i)+".txt", 'w') as erf:
##                for v in vert:
##                    erf.write( str( geocoords.norm_lon(v[0]) )+'\t'+ \
##                        str( v[1] )+'\n' )
##            #errored original export lon-lat:
##            with open("err/original"+str(i)+".txt", 'w') as erf:
##                #for v in siku.elements[i].verts_xyz_loc:
##                for v in siku.tempc[i]:
##                    erf.write( str( geocoords.norm_lon(v[0]) )+'\t'+ \
##                        str( v[1] )+'\n' )
## /for debug
                    
        if st & element.Element.f_errored: ##
            poly.write( '> -Gred -W0.1p,red \n' ) ##
##        if
        elif st & element.Element.f_special: ## elif -> if
            poly.write( '> -Gpurple -W0.1p,pink \n' ) 
        elif st & element.Element.f_static:
##            return
            poly.write( '> -Gbrown -W0.1p,lightBlue \n' )#<<--- this
##            poly.write( '> -GlightCyan -W0.1p,lightBlue \n' )
        elif st & element.Element.f_steady:
            poly.write( '> -GlightGreen -W0.1p,lightBlue \n' )
        else:
##            poly.write( '> -GlightCyan -W0.1p,lightCyan \n' )
            poly.write( '> -GlightCyan -W0.1p,lightBlue \n' )
            
        for v in vert:
            poly.write( str( geocoords.norm_lon(v[0]) )+'\t'+ \
                        str( v[1] )+'\n' )

    return