def Run(self): """ Runs a simulation for a given couple (sy, n) and returns the (disp, force) couple. """ #MODEL DEFINITION n = self.n sy = self.sy E = self.settings['E'] nu = self.settings['nu'] inner_radius = self.settings['inner_radius'] outer_radius = self.settings['outer_radius'] disp = self.settings['displacement'] / 2. nFrames = self.settings['nFrames'] Nr = self.settings['Nr'] Nt = self.settings['Nt'] Na = self.settings['Na'] Ne = self.settings['Ne'] thickness = self.settings['thickness'] / 2. unloading = settings['unloading'] export_fields = settings['export_fields'] export_fields = False print E, nu, sy, n material = Hollomon(labels="SAMPLE_MAT", E=E, nu=nu, sy=sy, n=n) m = RingCompression(material=material, inner_radius=inner_radius, outer_radius=outer_radius, disp=disp, thickness=thickness, nFrames=nFrames, Nr=Nr, Nt=Nt, Na=Na, workdir=workdir, label=label, elType=elType, abqlauncher=abqlauncher, cpus=cpus, is_3D=is_3D, unloading=unloading, export_fields=export_fields) # SIMULATION m.MakeMesh() m.MakeInp() m.Run() m.PostProc() outputs = m.outputs force = -4. * outputs['history']['force'] disp = -2. * outputs['history']['disp'] self.disp = disp self.force = force
Nt = Nt, Na = Na, unloading = unloading, export_fields = export_fields, workdir = workdir, label = label, elType = elType, abqlauncher = abqlauncher, cpus = cpus, is_3D = is_3D, compart = compart) # SIMULATION m.MakeMesh() if run_sim: m.MakeInp() m.Run() m.PostProc() # SOME PLOTS mesh = m.mesh outputs = load(workdir + label + '.pckl') if outputs['completed']: # Fields if export_fields == True : def field_func(outputs, step): """ A function that defines the scalar field you want to plot """ return outputs['field']['S'][step].vonmises()
# Hall-Petch (not mandatory) sy = sigma_0_hp + k_hp / elem_grain_diameter**.5 E = E * np.ones(Ne) # Young's modulus nu = nu * np.ones(Ne) # Poisson's ratio n = n * np.ones(Ne) labels = ['mat_{0}'.format(i + 1) for i in xrange(len(sy))] material = [ materials.Bilinear(labels=labels[i], E=E[i], nu=nu[i], n=n[i], sy=sy[i]) for i in xrange(Ne) ] model.material = material sy_field = FieldOutput(labels=mesh.labels, data=sy, position="element") if Run_simu: model.MakeInp() model.Run() model.MakePostProc() model.RunPostProc() else: model.LoadResults() # Plotting results if model.outputs['completed']: U = model.outputs['field']['U'][0] mesh.nodes.apply_displacement(U) f = open(label + ".vtk", "w") f.write(mesh.dump2vtk()) f.write(sy_field.dump2vtk(name="Yield_Stress")) f.write(model.outputs['field']['S'][0].vonmises().dump2vtk( name="Von_Mises_Stress")) f.close()
def Run(self): """ Runs a simulation for a given couple (sy, n) and returns the (disp, force) couple. """ #MODEL DEFINITION sy_mean = self.sy_mean * np.ones(settings['Ne']) n = self.n * np.ones(settings['Ne']) Ssat = self.Ssat * np.ones(settings['Ne']) E = self.settings['E'] nu = self.settings['nu'] inner_radius = self.settings['inner_radius'] outer_radius = self.settings['outer_radius'] disp = self.settings['displacement'] / 2. nFrames = self.settings['nFrames'] Nr = self.settings['Nr'] Nt = self.settings['Nt'] Na = self.settings['Na'] Ne = self.settings['Ne'] thickness = self.settings['thickness'] / 2 #TASKS run_sim = True plot = True print E[0], nu[0], Ssat[0], n[0], sy_mean[0] #print E[0], nu[0], n[0], sy_mean[0] ray_param = sy_mean / 1.253314 sy = np.random.rayleigh(ray_param, Ne) labels = ['mat_{0}'.format(i + 1) for i in xrange(len(sy))] material = [ materials.Bilinear(labels=labels[i], E=E[i], nu=nu[i], Ssat=Ssat[i], n=n[i], sy=sy[i]) for i in xrange(Ne) ] m = RingCompression(material=material, inner_radius=inner_radius, outer_radius=outer_radius, disp=disp, thickness=thickness, nFrames=nFrames, Nr=Nr, Nt=Nt, Na=Na, unloading=unloading, export_fields=export_fields, workdir=workdir, label=label, elType=elType, abqlauncher=abqlauncher, cpus=cpus, is_3D=is_3D, compart=compart) # SIMULATION m.MakeMesh() if run_sim: m.MakeInp() m.Run() m.PostProc() outputs = m.outputs force = -4. * outputs['history']['force'] disp = -2 * outputs['history']['disp'] self.disp = disp self.force = force