Example #1
0
nfem2.set_default_mesh(the_mesh)

##### Making the elements... #####

# conductivity (scalar)
element_sigma = nfem2.make_element("sigma", [])
element_drho_by_dt = nfem2.make_element("drho_by_dt", [])
element_phi = nfem2.make_element("phi", [])
element_J = nfem2.make_element("J", [2])

mwe_sigma = nfem2.make_mwe("mwe_sigma", [(1, element_sigma)])
mwe_drho_by_dt = nfem2.make_mwe("mwe_drho_by_dt", [(1, element_drho_by_dt)])
mwe_phi = nfem2.make_mwe("mwe_phi", [(1, element_phi)])
mwe_J = nfem2.make_mwe("mwe_J", [(1, element_J)])

diffop_laplace = nfem2.diffop("-<d/dxj drho_by_dt|sigma|d/dxj phi>, j:2")
diffop_J = nfem2.diffop("<J(k)|sigma|d/dxk phi>, k:2")

# Initial conductivity is spatially constant:


def fun_sigma0(dof_name_indices, position):
    return sigma0


# Later on, we will modify this field:

field_sigma = nfem2.make_field(mwe_sigma, fun_sigma0)

# Dirichlet Boundary Conditions on our sample:
Example #2
0
element_sigma = nfem2.make_element("sigma", [])
element_drho_by_dt = nfem2.make_element("drho_by_dt", [])
element_phi = nfem2.make_element("phi", [])
element_J = nfem2.make_element("J", [2])
element_M = nfem2.make_element("M", [3])


# in make_mwe "1" is the region where I set the field
mwe_sigma = nfem2.make_mwe("mwe_sigma", [(1, element_sigma)])
mwe_drho_by_dt = nfem2.make_mwe("mwe_drho_by_dt", [(1, element_drho_by_dt)])
mwe_phi = nfem2.make_mwe("mwe_phi", [(1, element_phi)])
mwe_J = nfem2.make_mwe("mwe_J", [(1, element_J)])
mwe_M = nfem2.make_mwe("mwe_M", [(1, element_M)])


diffop_laplace = nfem2.diffop("-<d/dxj drho_by_dt|sigma|d/dxj phi>, j:2")
diffop_J = nfem2.diffop("-<J(k)|sigma|d/dxk phi>, k:2")


# Initial conductivity is spatially constant:


def fun_sigma0(dof_name_indices, position):
    return sigma0


# fill the field with the magnetization stored
# in the magnetization dictionary


def fun_fill_m(dof_name_indices, position):
Example #3
0
# sigma = sigma_Py for element 1 (ring) and sigma = sigma_Au for elements [2:7] (contacts)
mwe_sigma = nfem2.make_mwe("mwe_sigma", [(1, element_sigma_Py)] +
                           [(body_nr, element_sigma_Au)
                            for body_nr in range(2, 8)])
mwe_drho_by_dt = nfem2.make_mwe("mwe_drho_by_dt",
                                [(body_nr, element_drho_by_dt)
                                 for body_nr in range(1, 8)])
mwe_phi = nfem2.make_mwe("mwe_phi",
                         [(body_nr, element_phi) for body_nr in range(1, 8)])
mwe_J = nfem2.make_mwe("mwe_J",
                       [(body_nr, element_J) for body_nr in range(1, 8)])
mwe_M = nfem2.make_mwe("mwe_M", [(1, element_M)])

# the conductivities sum up: temporary assumption (reasonable for now)
diffop_laplace = nfem2.diffop(
    "-<d/dxj drho_by_dt|sigma_Py|d/dxj phi>-<d/dxj drho_by_dt|sigma_Au|d/dxj phi>, j:3"
)
diffop_J = nfem2.diffop(
    "-<J(k)|sigma_Py|d/dxk phi>-<J(k)|sigma_Au|d/dxk phi>, k:3")


# Initial conductivity depends on the object (ring or contacts)
def fun_sigma0(dof_name_indices, position):
    ##    print "fun_sigma0 -> pos:", position
    if (dof_name_indices[0] == "sigma_Au"):
        return sigma0_Au
    else:
        return sigma0_Py


# fill the field with the magnetization stored
Example #4
0
element_drho_by_dt= nfem2.make_element("drho_by_dt",[]);
element_phi       = nfem2.make_element("phi",[]);
element_J         = nfem2.make_element("J",[3]);
element_M         = nfem2.make_element("M",[3]);


# sigma = sigma_Py for element 1 (ring) and sigma = sigma_Au for elements [2:7] (contacts)   
mwe_sigma      = nfem2.make_mwe("mwe_sigma",     [(1, element_sigma_Py)]+[(body_nr, element_sigma_Au) for body_nr in range(2,8)])
mwe_drho_by_dt = nfem2.make_mwe("mwe_drho_by_dt",[(body_nr,element_drho_by_dt) for body_nr in range(1,8)])
mwe_phi        = nfem2.make_mwe("mwe_phi",       [(body_nr,element_phi) for body_nr in range(1,8)])
mwe_J          = nfem2.make_mwe("mwe_J",         [(body_nr,element_J) for body_nr in range(1,8)])
mwe_M          = nfem2.make_mwe("mwe_M",         [(1,element_M)])


# the conductivities sum up: temporary assumption (reasonable for now)
diffop_laplace=nfem2.diffop("-<d/dxj drho_by_dt|sigma_Py|d/dxj phi>-<d/dxj drho_by_dt|sigma_Au|d/dxj phi>, j:3")
diffop_J=nfem2.diffop("-<J(k)|sigma_Py|d/dxk phi>-<J(k)|sigma_Au|d/dxk phi>, k:3")


# Initial conductivity depends on the object (ring or contacts)
def fun_sigma0(dof_name_indices,position):
##    print "fun_sigma0 -> pos:", position
    if(dof_name_indices[0]=="sigma_Au"):
        return sigma0_Au
    else:
        return sigma0_Py

# fill the field with the magnetization stored
# in the magnetization dictionary
def fun_fill_m(dof_name_indices,position):