예제 #1
0
	pickle.dump(trunc_triangles, f, pickle.HIGHEST_PROTOCOL)

grain_ids_0, overlaps_0, voxel_indices_0 = ccb_c.populate_voxels(M, L, trunc_triangles, nr_tries, delta, vol_frac_goal)

phases_0, good_voxels_0, euler_angles_0, phase_volumes_0, grain_volumes_0 = ccb_c.calc_grain_prop(M, grain_ids_0, trunc_triangles)
surface_voxels_0, gb_voxels_0, interface_voxels_0 = ccb_c.calc_surface_prop(M, grain_ids_0)

vol_frac_WC_0 = phase_volumes_0[1]/np.float(np.sum(phase_volumes_0))
vol_frac_Co_0 = 1 - vol_frac_WC_0
mass_frac_WC_0 = ccb.mass_fraction(vol_frac_WC_0)
d_eq_0 = ccb.volume_to_eq_d(grain_volumes_0*delta_x**3)

sum_gb_voxels_0 = np.sum(gb_voxels_0)
contiguity_0 = sum_gb_voxels_0 / np.float(sum_gb_voxels_0 + np.sum(interface_voxels_0))

ccb.write_hdf5('testfile_0.hdf5', 3*[M], 3*[delta_x], trunc_triangles, grain_ids_0, phases_0, good_voxels_0, euler_angles_0, surface_voxels_0, gb_voxels_0, interface_voxels_0, overlaps_0)

# Compute actual volume fraction:
print "generated volume fraction of Co (before tweaks):", vol_frac_Co_0

# Make new copies to play with the unlimited monte carle potts simulation.
if False:
    grain_ids_1 = grain_ids_0.copy()
    gb_voxels_1 = gb_voxels_0.copy()
    
    start_time = time.time()
    ccb_c.make_mcp_unlim(M, grain_ids_1, gb_voxels_1, mc_steps, kBT)
    print np.str(time.time() - start_time) + " seconds"
    
    surface_voxels_1, gb_voxels_1, interface_voxels_1 = ccb_c.calc_surface_prop(M, grain_ids_1)
    phases_1, good_voxels_1, euler_angles_1, phase_volumes_1, grain_volumes_1 = ccb_c.calc_grain_prop(M, grain_ids_1, trunc_triangles)
예제 #2
0
파일: make_cc.py 프로젝트: Micket/CCBuilder
    surface_voxels_2, gb_voxels_2, interface_voxels_2 = ccb_c.calc_surface_prop(M, grain_ids_2)
    phases_2, good_voxels_2, euler_angles_2, phase_volumes_2, grain_volumes_2 = ccb_c.calc_grain_prop(M, grain_ids_2, trunc_triangles)
else:
    surface_voxels_2, gb_voxels_2, interface_voxels_2 = surface_voxels_0, gb_voxels_0, interface_voxels_0
    phases_2, good_voxels_2, euler_angles_2, phase_volumes_2, grain_volumes_2 = phases_0, good_voxels_0, euler_angles_0, phase_volumes_0, grain_volumes_0

vol_frac_WC_2 = phase_volumes_2[1]/np.float(M**3)
vol_frac_Co_2 = 1 - vol_frac_WC_2
mass_frac_WC_2 = ccb.mass_fraction(vol_frac_WC_2)
d_eq_2 = ccb.volume_to_eq_d(grain_volumes_2*delta_x**3)

sum_gb_voxels_2 = np.sum(gb_voxels_2)
contiguity_2 = sum_gb_voxels_2 / np.float(sum_gb_voxels_2 + np.sum(interface_voxels_2))

print("Contiguity (after Potts)", contiguity_2, "volume fraction", 1-vol_frac_WC_2, "mass fraction", ccb.mass_fraction(vol_frac_WC_2))
ccb.write_hdf5(fname + '.dream3d', 3*[M], 3*[delta_x], trunc_triangles, grain_ids_2, phases_2, good_voxels_2, euler_angles_2, surface_voxels_2, gb_voxels_2, interface_voxels_2, overlaps_0)
ccb.write_oofem(fname, 3*[M], 3*[delta_x], trunc_triangles, grain_ids_2)
#ccb.write_oofem_transport(fname + "_d", 3*[M], 3*[delta_x], phases_2)

# Make new copies to play stray voxel cleanup.
if False:
    grain_ids_3 = grain_ids_2.copy()
    gb_voxels_3 = gb_voxels_2.copy()

    start_time = time.time()
    ccb_c.stray_cleanup(M, grain_ids_3)
    print(np.str(time.time() - start_time) + " seconds")

    surface_voxels_3, gb_voxels_3_1, interface_voxels_3 = ccb_c.calc_surface_prop(M, grain_ids_3)
    phases_3, good_voxels_3, euler_angles_3, phase_volumes_3, grain_volumes_3 = ccb_c.calc_grain_prop(M, grain_ids_3, trunc_triangles)