예제 #1
0
label_args = parser.add_argument_group('label options',
        'pick labels for output figures')
label_args.add_argument('--xlabel', default='Time (ps)')
label_args.add_argument('--ylabel', default='Maximum shear (1/ps)')
label_args.add_argument('--title', default='Maximum found shear of system per time')

# Parse and control for action
args = parser.parse_args()

# Plot options
colours = get_colours(args.colour, 2)
linestyles = get_linestyles(args.linestyle, 2)
labels, draw_legend = get_labels(args.label, 2)

# Define system and add data maps
system = System()
system.files(base=args.datamap, start=args.begin, end=args.end)

# Collect shear data in list
frames = []
max_shear = []

floor = args.floor
ceil = floor + args.num_shear
if ceil <= floor:
    parser.error('number of cell rows to calculate shear over (--number) must be positive')

rows = [floor, ceil]

for i, _file in enumerate(system.datamaps):
    print("Reading %s (%d of %d) ... " % (_file, i+1, len(system.datamaps)), end='')
예제 #2
0
        'pick labels for output figures')
label_args.add_argument('--xlabel', default='Time (ps)')
label_args.add_argument('--ylabel', default='Dissipated energy (kJ/mol)')
label_args.add_argument('--title', default='')

args = parser.parse_args()

xlims = [args.xmin, args.xmax]
ylims = [args.ymin, args.ymax]

times = []
d_visc_energy = []
d_slip_energy = []

# Create system
system = System(base = args.base)
system.files(start = args.start, end = args.end)

for frame, _file in enumerate(system.datamaps):
    datamap = DataMap(_file, min_mass = args.min_mass)

    times.append(frame*args.delta_t)
    d_visc_energy.append(datamap._sum_viscous_dissipation(args.width,
            args.delta_t, args.num_cells, args.viscosity, args.mass_flow))

    if args.slip:
        d_slip_energy.append(calc_slip_dissipation(datamap, args.floor))

times = list(np.array(times) + args.time_start)

if args.print:
예제 #3
0
draw_args.add_argument('--save', default='', metavar='PATH',
        help="save images to this file base, conserving frame numbers")
draw_args.add_argument('--dpi', type=int, default=150, help="output graph dpi")

# Decorations
label_args = parser.add_argument_group('label options',
        'pick labels for output figures')
label_args.add_argument('--xlabel', default='Mass flow along x (nm/ps)')
label_args.add_argument('--ylabel', default='Height (nm)')
label_args.add_argument('--title', default='')

# Parse and control for action
args = parser.parse_args()

# Define system and add data maps
system = System()
if args.num_combine == 0:
    system.datamaps.append(args.datamap)
elif args.num_combine >= 1:
    system.files(base=args.datamap, start=args.start, end=args.start+args.num_combine-1)
else:
    parser.error('negative -n supplied')

# Collect profile data into 2D arrays
profile = {'data': [], 'count': [], 'std': [], 'error': []}

for i, _file in enumerate(system.datamaps):
    datamap = DataMap(_file, min_mass=args.min_mass)
    height = {'data': []}

    for _type in profile.keys():
예제 #4
0
        help="average data from all frames")
parser.add_argument('-vadj', '--adjust_velocity', action='store_true',
        help="remove averaged contact line velocity from flow velocity")
parser.add_argument('-dt', '--delta_t', type=float, default=10.,
        help="time between frames in ps (default: 10)")
parser.add_argument('--noheaders', action='store_false', dest='header',
        help="do not output position and height headers")
parser.add_argument('--nooutput', action='store_false', dest='do_output',
        help="do not output cells")

# Parse and control for action
args = parser.parse_args()

# If base given, create system
if args.base != None:
    system = System(base = args.base)
    system.files(start = args.begin, end = args.end)

else:
    system = System()
    system.datamaps = [args.file]

if args.average:
    args.do_output = False

var = []
if args.type == 'temp':
    var.append('T')
elif args.type == 'flow':
    var.append('U')
    var.append('V')
예제 #5
0
                i += 1
            else:
                combined.update({"U": 0.0, "V": 0.0})

            # Append to container
            output.cells.append(combined)

    # Convert by hand to good format and save
    output.cells = np.array(output.cells)
    output._info = output.info
    output._grid()

    return output


# Create containers
dens = System(base=args.dens)
dens.files(start=args.start, end=args.end, numdigits=args.numdigits, ext=args.extension)

flow = System(base=args.flow)
flow.files(start=args.start, end=args.end, numdigits=args.numdigits, ext=args.extension)

# Combine and output one by one
for i, _list in enumerate(zip(dens.datamaps, flow.datamaps)):
    print("\rCombining maps %d ..." % (i + 1), end=" ")
    output = combine(dict(zip(["dens", "flow"], _list)))

    num = ("%%0%dd" % args.numdigits) % (i + args.start)
    save = "%s%s%s" % (args.output, num, args.extension)
    output.save(save)
예제 #6
0
parser.add_argument('-t0', '--time_init', type=float, default=0.,
        help="initial time of frames")
parser.add_argument('-m', '--min_mass', type=float, default=0.,
        help="minimum mass of droplet cells")
parser.add_argument('-s', '--start', type=int, default=1,
        help="initial frame number")
parser.add_argument('-e', '--end', type=int, default=np.inf,
        help="final frame number")
parser.add_argument('-rel', '--relative', action='store_true',
        help="save to path relative to input base directory (False)")

# Parse
args = parser.parse_args()

system = System(
        base = args.base, delta_t = args.delta_t,
        floor = args.floor, min_mass = args.min_mass
        )

# Create file names and collect spread
system.files(start = args.start, end = args.end)
spread = system.spread()
spread.time_set(start = args.time_init, delta_t = args.delta_t)

# Save to file in same folder
if args.relative:
    _file = os.path.dirname(args.base) + '/' + args.save
else:
    _file = args.save

spread.save(_file)