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
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
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