AJMR-Python-Baird/Mustique/adcptool/mc_tutorial.py

100 lines
3.2 KiB
Python

import sys
print(sys.version)
sys.dont_write_bytecode = True
#
# initial stuff
from adcploader import *
p_raw = RawProfileObj('../testfiles/demodata.txt')
startingpoint = dict(start=Vector(0,0,0), offset=Vector(0,0))
processing_settings = dict(proj_method=3)
p0 = ProcessedProfileObj(p_raw, processing_settings, startingpoint)
#plot_profile_2d(p0)
plot_2d_cfg = dict(saveas='../testfiles/tut_demo1.pdf')
# which is the same as
plot_2d_cfg = {'saveas':'../testfiles/tut_demo1.pdf'}
#plot_profile_2d(p0)
import math
startingpoint_1a = dict(start=Vector(0,0,0), dir=0.5*math.pi)
startingpoint_1b = dict(start=Vector(0,0,0), end=Vector(0,1,0))
processing_settings_1a = dict(proj_method=1)
processing_settings_1b = dict(proj_method=3)
p1a = ProcessedProfileObj(p_raw, processing_settings_1a, startingpoint_1a)
p1b = ProcessedProfileObj(p_raw, processing_settings_1b, startingpoint_1b)
#plot_profile_2d(thin_out(p1a, {'keep_ensemble':5}), {'saveas':'../testfiles/tut_demo1a.pdf', 'title':'demo 1a'})
#plot_profile_2d(thin_out(p1b, {'keep_ensemble':15}), {'saveas':'../testfiles/tut_demo1b.pdf', 'title':'demo 1b'})
#plot_profile_3d(p0, cfg={'saveas':'../testfiles/tut_demo0_3d.pdf'})
#
# outliers
p2 = interpolate_outliers(p0, cfg={'limit':2.5, 'radius_h':10})
#plot_profile_3d(p2, cfg={'saveas':'../testfiles/tut_demo2.pdf'})
#
# averaging
p3 = get_averaged_profile(p2, cfg={'order':21})
#plot_profile_3d(p3, cfg={'saveas':'../testfiles/tut_demo3.pdf'})
#
# roughness
cfg_logfit = {'logheight':0.30, 'component':3}
p4 = logfit_profile(p3, cfg_logfit)
#plot_logfit_profile(p4, cfg=cfg_logfit)
# save as tut_demo4.pdf manually
#
# extrapolation
p5 = extrapolate_profile(p4, cfg={'topcells':5, 'forcepowerlaw':True})
#plot_profile_3d(p5, cfg={'saveas':'../testfiles/tut_demo5.pdf'})
# runs into numerical problems:
#p5a = extrapolate_profile(p4, cfg={'topcells':5, 'forcepowerlaw':False})
#plot_profile_3d(p5a, cfg={'saveas':'../testfiles/tut_demo_p5a.pdf'})
#
# visualization
#plot_profile_3d(p3, cfg=dict(style='contour', saveas='../testfiles/tut_demo6a.pdf', title='contour demo'))
#
# visualization: secondary flow
p0_sf = ProcessedProfileObj(p_raw, dict(proj_method=3, uv_rot=1), startingpoint)
p1_sf = get_averaged_profile(p2, cfg={'order':5})
#plot_profile_3d(thin_out(p1_sf, dict(keep_ensemble=5)), cfg=dict(style='vector', components=['y','z'], saveas='../testfiles/tut_demo6b.pdf', title='vector demo'))
#
# DXF output
writeDXF3D(p5, '../testfiles/tut_demo7_p5_3d.dxf', vel_scale=40)
writeDXF2D(p5, '../testfiles/tut_demo7_p5_2d.dxf', vel_scale=40)
#
# ASCII output
writeAscii3D(p5, '{x} {y} {z} {vx} {vy} {vz}', '../testfiles/tut_demo8_velocities_simple.txt')
import datetime
header='# generated on: {} \n# x y z v_x v_y v_z\n'.format(datetime.datetime.now().strftime('%x %X'))
writeAscii3D(p5, '{x:6.2f} {y:6.2f} {z:6.2f} {vx:9.2e} {vy:9.2e} {vz:9.2e}', '../testfiles/tut_demo8_velocities_awesome.txt', header=header)
header2d='# generated on: {} \n# x y ks tau_shear v_shear\n'.format(datetime.datetime.now().strftime('%x %X'))
writeAscii2D(p4, '{x:6.2f} {y:6.2f} {ks:9.2e} {tau_shear:9.2e} {v_shear:9.2e}', '../testfiles/tut_demo8_rouhgness.txt', header=header2d, voidtext=-999)
print('end.')