def new_mwe_and_field(self, name, indices=[], where=None, initial_values=set_to_zero): if where == None: where = self.where element = nfem.make_element(name, indices, self.mesh.dim, self.order) associations = list((body_nr, element) for body_nr in where) mwe = nfem.make_mwe(name, associations, mesh=self.mesh) field = nfem.make_field(mwe, initial_values=field_function(initial_values)) self.mwes[name] = mwe self.fields[name] = field return (mwe, field)
the_mesh = nmesh.mesh( objects=[halfring], cache_name="halfring", a0=0.2, bounding_box=[[-4.0, -4], [4.0, 4.0]], neigh_force_scale=1., initial_settling_steps=50, max_relaxation=4, max_steps=400) nfem.set_default_mesh(the_mesh) the_mesh.save("themesh.nmesh") # conductivity (scalar) element_sigma = nfem.make_element("sigma", []) element_drho_by_dt = nfem.make_element("drho_by_dt", []) element_phi = nfem.make_element("phi", []) element_J = nfem.make_element("J", [2]) mwe_sigma = nfem.make_mwe("mwe_sigma", [(1, element_sigma)]) mwe_drho_by_dt = nfem.make_mwe("mwe_drho_by_dt", [(1, element_drho_by_dt)]) mwe_phi = nfem.make_mwe("mwe_phi", [(1, element_phi)]) mwe_J = nfem.make_mwe("mwe_J", [(1, element_J)]) diffop_laplace = nfem.diffop("-<d/dxj drho_by_dt|sigma|d/dxj phi>, j:2") diffop_J = nfem.diffop("<J(k)|sigma|d/dxk phi>, k:2") def fun_sigma0(dof_name_indices, position): return sigma0
density = density, initial_settling_steps = 50, max_relaxation = 4, # callback=(my_function, N), # max_steps=677 max_steps=200 ) nfem.set_default_mesh(the_mesh) ##### Making the elements... ##### empty_element=ocaml.empty_element; # conductivity (scalar) element_sigma = nfem.make_element("sigma",[]); element_drho_by_dt= nfem.make_element("drho_by_dt",[]); element_phi = nfem.make_element("phi",[]); element_J = nfem.make_element("J",[2]); mwe_sigma = nfem.make_mwe("mwe_sigma", [(1,element_sigma)]) mwe_drho_by_dt = nfem.make_mwe("mwe_drho_by_dt",[(1,element_drho_by_dt)]) mwe_phi = nfem.make_mwe("mwe_phi", [(1,element_phi)]) mwe_J = nfem.make_mwe("mwe_J", [(1,element_J)]) diffop_laplace=nfem.diffop("-<d/dxj drho_by_dt|sigma|d/dxj phi>, j:2") diffop_J=nfem.diffop("<J(k)|sigma|d/dxk phi>, k:2") # Initial conductivity is spatially constant: def fun_sigma0(dof_name_indices,position):
the_mesh = nmesh.mesh(objects = [ball], cache_name="bem-ball", a0=1.0, bounding_box=[[-5.0,-5.0,-5.0],[5.0,5.0,5.0]], neigh_force_scale = 1., density = density, initial_settling_steps = 50, max_relaxation = 4, max_steps=500 ) nfem.set_default_mesh(the_mesh) ##### Making the elements... ##### element_M = nfem.make_element("M",[3]); element_H = nfem.make_element("H",[3]); element_rho_M = nfem.make_element("rho_M",[]); element_phi_M = nfem.make_element("phi_M",[]); mwe_M = nfem.make_mwe("mwe_M", [(1,element_M)]) mwe_H = nfem.make_mwe("mwe_H", [(1,element_H)]) mwe_rho_M = nfem.make_mwe("mwe_rho_M", [(1,element_rho_M)]) mwe_phi_M = nfem.make_mwe("mwe_phi_M", [(1,element_phi_M)]) log.info("OK 1!") # Initial magnetization is spatially constant: M=(1 0 0) #def fun_M0(dof_name_indices,pos): # r=math.sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2])
the_mesh = nmesh.mesh( objects=[bar], cache_name="bar-mesh3", a0=0.7, bounding_box=[[-6.0, -3.0, -3.0], [6.0, 3.0, 3.0]], neigh_force_scale=1., # density = density, initial_settling_steps=50, max_relaxation=4, # callback=(my_function, N), # max_steps=677 max_steps=500) nfem.set_default_mesh(the_mesh) element_M = nfem.make_element("M", [3]) element_H = nfem.make_element("H", [3]) mwe_M = nfem.make_mwe("mwe_M", [(1, element_M)]) mwe_H = nfem.make_mwe("mwe_H", [(1, element_H)]) diffop_v_laplace = nfem.diffop("-<d/dxj H(k) || d/dxj M(k)>, j:3, k:3") # Note that this magnetization is "mostly zero": def fun_M0(dof_name_indices, position): if dof_name_indices[1][0] == 1: # y-direction x = position[0] return 1.0 / (1.0 + (x * x / 4.0)) else: return 0.0
the_mesh = nmesh.mesh(objects = [bar], cache_name="bar-mesh3", a0=0.7, bounding_box=[[-6.0,-3.0,-3.0],[6.0,3.0,3.0]], neigh_force_scale = 1., # density = density, initial_settling_steps = 50, max_relaxation = 4, # callback=(my_function, N), # max_steps=677 max_steps=500 ) nfem.set_default_mesh(the_mesh) element_M = nfem.make_element("M",[3]) element_H = nfem.make_element("H",[3]) mwe_M = nfem.make_mwe("mwe_M", [(1,element_M)]) mwe_H = nfem.make_mwe("mwe_H", [(1,element_H)]) diffop_v_laplace = nfem.diffop("-<d/dxj H(k) || d/dxj M(k)>, j:3, k:3") # Note that this magnetization is "mostly zero": def fun_M0(dof_name_indices,position): if dof_name_indices[1][0]==1: # y-direction x=position[0] return 1.0/(1.0+(x*x/4.0)) else: return 0.0
a0=0.4, bounding_box=[[-5.0,-5.0,-0.3],[5.0,5.0,0.3]], neigh_force_scale = 1., density = density, initial_settling_steps = 50, max_relaxation = 4, max_steps=500 ) # === The 2.5d computation === nfem.set_default_mesh(mesh_2d) ##### Making the elements... ##### elem2d_M = nfem.make_element("M",[3],dim=2); elem2d_H = nfem.make_element("H",[3],dim=2); elem2d_rho_M = nfem.make_element("rho_M",[],dim=2); elem2d_phi_M = nfem.make_element("phi_M",[],dim=2); mwe2d_M = nfem.make_mwe("mwe2d_M", [(1,elem2d_M)]) mwe2d_H = nfem.make_mwe("mwe2d_H", [(1,elem2d_H)]) mwe2d_rho_M = nfem.make_mwe("mwe2d_rho_M", [(1,elem2d_rho_M)]) mwe2d_phi_M = nfem.make_mwe("mwe2d_phi_M", [(1,elem2d_phi_M)]) #This is " $\ laplace -phi = =rho_M$ pmx2d_laplace=nfem.prematrix(diffop_laplace,mwe2d_rho_M,mwe2d_phi_M) pmx2d_div_M=nfem.prematrix(diffop_div_M,mwe2d_rho_M,mwe2d_M,ignore_jumps=False) pmx2d_grad_phi=nfem.prematrix(diffop_grad_phi,mwe2d_H,mwe2d_phi_M) solve_bem_2d=nfem.laplace_solver_bem(pmx2d_laplace,inside_regions=[1], thickness=thickness2d)
the_mesh = nmesh.mesh(objects = [bar], cache_name="bar-mesh3", a0=0.7, bounding_box=[[-6.0,-3.0,-3.0],[6.0,3.0,3.0]], neigh_force_scale = 1., # density = density, initial_settling_steps = 50, max_relaxation = 4, # callback=(my_function, N), # max_steps=677 max_steps=500 ) nfem.set_default_mesh(the_mesh) element_M = nfem.make_element("M",[3]) element_M2 = nfem.make_element("M2",[3],ord=2) element_H = nfem.make_element("H",[3]) mwe_M = nfem.make_mwe("mwe_M", [(1,element_M)]) mwe_M2 = nfem.make_mwe("mwe_M2", [(1,element_M2)]) mwe_H = nfem.make_mwe("mwe_H", [(1,element_H)]) diffop_v_laplace = nfem.diffop("-<d/dxj H(k) || d/dxj M(k)>, j:3, k:3") print "Made MWEs" sys.stdout.flush() # Note that this magnetization is "mostly zero": def fun_M0(dof_name_indices,position): if dof_name_indices[1][0]==1: # y-direction
def new_mwe(self, name, indices=[], where=None): if where == None: where = self.where element = nfem.make_element(name, indices, self.mesh.dim, self.order) associations = list((body_nr, element) for body_nr in where) mwe = nfem.make_mwe(name, associations, mesh=self.mesh) return mwe
the_mesh = nmesh.mesh( objects=[bar], cache_name="bar-mesh3", a0=0.7, bounding_box=[[-6.0, -3.0, -3.0], [6.0, 3.0, 3.0]], neigh_force_scale=1., # density = density, initial_settling_steps=50, max_relaxation=4, # callback=(my_function, N), # max_steps=677 max_steps=500) nfem.set_default_mesh(the_mesh) element_M = nfem.make_element("M", [3]) element_M2 = nfem.make_element("M2", [3], ord=2) element_H = nfem.make_element("H", [3]) mwe_M = nfem.make_mwe("mwe_M", [(1, element_M)]) mwe_M2 = nfem.make_mwe("mwe_M2", [(1, element_M2)]) mwe_H = nfem.make_mwe("mwe_H", [(1, element_H)]) diffop_v_laplace = nfem.diffop("-<d/dxj H(k) || d/dxj M(k)>, j:3, k:3") print "Made MWEs" sys.stdout.flush() # Note that this magnetization is "mostly zero": def fun_M0(dof_name_indices, position):
the_mesh = nmesh.mesh(objects=[ball], cache_name="bem-ball", a0=1.0, bounding_box=[[-5.0, -5.0, -5.0], [5.0, 5.0, 5.0]], neigh_force_scale=1., density=density, initial_settling_steps=50, max_relaxation=4, max_steps=500) nfem.set_default_mesh(the_mesh) ##### Making the elements... ##### element_M = nfem.make_element("M", [3]) element_H = nfem.make_element("H", [3]) element_rho_M = nfem.make_element("rho_M", []) element_phi_M = nfem.make_element("phi_M", []) mwe_M = nfem.make_mwe("mwe_M", [(1, element_M)]) mwe_H = nfem.make_mwe("mwe_H", [(1, element_H)]) mwe_rho_M = nfem.make_mwe("mwe_rho_M", [(1, element_rho_M)]) mwe_phi_M = nfem.make_mwe("mwe_phi_M", [(1, element_phi_M)]) log.info("OK 1!") # Initial magnetization is spatially constant: M=(1 0 0) #def fun_M0(dof_name_indices,pos): # r=math.sqrt(pos[0]*pos[0]+pos[1]*pos[1]+pos[2]*pos[2])