Exemplo n.º 1
0
def update_sigma(the_field_sigma,i):
    compute_J=nfem.prematrix_applicator(prematrix_J,
                                         field_mid=the_field_sigma)
    laplace_solver=nfem.laplace_solver(prematrix_laplace,
                                        dirichlet_bcs=[(-1,1,laplace_dbc)],
                                        mwe_mid=the_field_sigma)
    #
    field_phi = laplace_solver(cofield_drho_by_dt,
                               dbc_values=laplace_dbc_values)
    field_J = nfem.cofield_to_field(compute_J(field_phi))

   

    #print "field_J contents:", nfem.data_doftypes(field_J)
    
    # XXX NOTE: we should be able to make an applicator that does the
    # cofield_to_field conversion automatically!
    #
    #
    # Next, let us compute the new condictivity by site-wise operation on
    # field_J. We just overwrite field_sigma:
    #
    recompute_conductivity([h_x,h_y,sigma0,alpha],fields=[the_field_sigma,field_J])
    print "Refcount field_sigma:",ocaml.sys_refcount(the_field_sigma)
    return the_field_sigma
Exemplo n.º 2
0
def update_sigma(the_field_sigma):
    compute_J=nfem.prematrix_applicator(prematrix_J,
                                         mwe_mid=the_field_sigma)
    laplace_solver=nfem.laplace_solver(prematrix_laplace,
                                        dirichlet_bcs=[(-1,1,laplace_dbc)],
                                        mwe_mid=the_field_sigma)
    #
    field_phi = laplace_solver(cofield_drho_by_dt,
                               dbc_values=laplace_dbc_values)
    field_J = nfem.cofield_to_field(compute_J(field_phi))
    # XXX NOTE: we should be able to make an applicator that does the
    # cofield_to_field conversion automatically!
    #
    #
    # Next, let us compute the new condictivity by site-wise operation on
    # field_J. We just overwrite field_sigma:
    #
    recompute_conductivity=nfem.site_wise_applicator(parameter_names=["H_x","H_y","sigma0","alpha"],
                                                      # all the names of extra parameters
                                                      code=code_recompute_conductivity,
                                                      fields=[the_field_sigma,field_J]
                                                      )
    #
    #
    recompute_conductivity([h_x,h_y,sigma0,alpha])
    return the_field_sigma
Exemplo n.º 3
0
def update_sigma(the_field_sigma, i):
    compute_J = nfem.prematrix_applicator(prematrix_J,
                                          field_mid=the_field_sigma)
    laplace_solver = nfem.laplace_solver(prematrix_laplace,
                                         dirichlet_bcs=[(-1, 1, laplace_dbc)],
                                         mwe_mid=the_field_sigma)
    #
    field_phi = laplace_solver(cofield_drho_by_dt,
                               dbc_values=laplace_dbc_values)
    field_J = nfem.cofield_to_field(compute_J(field_phi))

    #print "field_J contents:", nfem.data_doftypes(field_J)

    # XXX NOTE: we should be able to make an applicator that does the
    # cofield_to_field conversion automatically!
    #
    #
    # Next, let us compute the new condictivity by site-wise operation on
    # field_J. We just overwrite field_sigma:
    #
    recompute_conductivity([h_x, h_y, sigma0, alpha],
                           fields=[the_field_sigma, field_J])

    nfem.visual.fields2vtkfile([field_phi, field_J, the_field_sigma],
                               'fem-rings2_all%d.vtk' % i, the_mesh)

    return the_field_sigma
Exemplo n.º 4
0
def compute_total_current(the_field_sigma):
    laplace_solver=nfem.laplace_solver(prematrix_laplace,
                                        dirichlet_bcs=[(-1,1,laplace_dbc)],
                                        mwe_mid=the_field_sigma)
    compute_div_J=nfem.prematrix_applicator(prematrix_laplace,
                                             field_mid=the_field_sigma)
    field_phi=laplace_solver(cofield_drho_by_dt,
                             dbc_values=laplace_dbc_values)

    cofield_div_J=compute_div_J(field_phi)
    return accumulate_J_total([0.0,0.0,0.0,0.0],cofields=[cofield_div_J])
Exemplo n.º 5
0
def compute_total_current(the_field_sigma):
    laplace_solver = nfem.laplace_solver(prematrix_laplace,
                                         dirichlet_bcs=[(-1, 1, laplace_dbc)],
                                         mwe_mid=the_field_sigma)
    compute_div_J = nfem.prematrix_applicator(prematrix_laplace,
                                              field_mid=the_field_sigma)
    field_phi = laplace_solver(cofield_drho_by_dt,
                               dbc_values=laplace_dbc_values)

    cofield_div_J = compute_div_J(field_phi)
    return accumulate_J_total([0.0, 0.0, 0.0, 0.0], cofields=[cofield_div_J])
Exemplo n.º 6
0
def compute_total_current(the_field_sigma):
    laplace_solver=nfem.laplace_solver(prematrix_laplace,
                                        dirichlet_bcs=[(-1,1,laplace_dbc)],
                                        mwe_mid=the_field_sigma)
    compute_div_J=nfem.prematrix_applicator(prematrix_laplace,
                                             mwe_mid=the_field_sigma)
    field_phi=laplace_solver(cofield_drho_by_dt,
                             dbc_values=laplace_dbc_values)
    print "OK 1 - field_phi!\n"
    sys.stdout.flush()
    compute_div_J(field_phi, target=_cofield_div_J)
    print "OK 2 - div_J!\n"
    sys.stdout.flush()
    return _accumulate_J_total([0.0,0.0,0.0,0.0])
Exemplo n.º 7
0
        raise StandardError, "this place can't be reached"


cofield_drho_by_dt = nfem.make_cofield(mwe_drho_by_dt)

print "1"

prematrix_laplace = nfem.prematrix(
    diffop_laplace, mwe_drho_by_dt, mwe_phi, mwe_mid=mwe_sigma)

print "2"
prematrix_J = nfem.prematrix(diffop_J, mwe_J, mwe_phi, mwe_mid=mwe_sigma)

print "3"
compute_J = nfem.prematrix_applicator(prematrix_J, field_mid=field_sigma)
print "4"
laplace_solver = nfem.laplace_solver(
    prematrix_laplace,
    dirichlet_bcs=[(-1, 1, laplace_dbc)],
    mwe_mid=field_sigma)

print "5"
field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values)
print "6"
field_J = nfem.cofield_to_field(compute_J(field_phi))

nfem.visual.fields2vtkfile([field_phi, field_J], 'result.vtk', the_mesh)

print "Try to visualise with "
print "mayavi -d run_bug-fem2-halfring/result.vtk -m SurfaceMap -m VelocityVector"
Exemplo n.º 8
0
prematrix_laplace=nfem.prematrix(diffop_laplace,
                                  mwe_drho_by_dt,mwe_phi,
                                  mwe_mid=mwe_sigma)

print "2"
prematrix_J=nfem.prematrix(diffop_J,
                                   mwe_J,mwe_phi,
                                   mwe_mid=mwe_sigma)

print "3"
compute_J=nfem.prematrix_applicator(prematrix_J,
                                     field_mid=field_sigma)
print "4"
laplace_solver=nfem.laplace_solver(prematrix_laplace,
                                    dirichlet_bcs=[(-1,1,laplace_dbc)],
                                    mwe_mid=field_sigma)

print "5"
field_phi = laplace_solver(cofield_drho_by_dt,
                           dbc_values=laplace_dbc_values)
print "6"
field_J = nfem.cofield_to_field(compute_J(field_phi))

nfem.visual.fields2vtkfile([field_phi,field_J],'result.vtk',the_mesh)

print "Try to visualise with "
print "mayavi -d run_bug-fem2-halfring/result.vtk -m SurfaceMap -m VelocityVector"