def compute_total_current(the_field_sigma): laplace_solver = nfem2.laplace_solver( prematrix_laplace, # boundary conditions are defined on objects 4 and 6 dirichlet_bcs=[(-1, 4, laplace_dbc), (-1, 6, laplace_dbc)], mwe_mid=the_field_sigma) compute_div_J = nfem2.prematrix_applicator( prematrix_laplace, field_mid=the_field_sigma) cofield_drho_by_dt = nfem2.make_cofield(mwe_drho_by_dt) field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) compute_J = nfem2.prematrix_applicator( prematrix_J, field_mid=the_field_sigma) field_J = nfem2.cofield_to_field(compute_J(field_phi)) cofield_div_J = compute_div_J(field_phi) field_div_J = nfem2.cofield_to_field(cofield_div_J) current = accumulate_J_total([0.0, 0.0, 0.0, 0.0], cofields=[cofield_div_J]) return current, field_phi, the_field_sigma, field_J
def compute_total_current(the_field_sigma): laplace_solver=nfem2.laplace_solver(prematrix_laplace, # boundary conditions are defined on objects 4 and 6 dirichlet_bcs=[(-1,4,laplace_dbc),(-1,6,laplace_dbc)], mwe_mid=the_field_sigma) compute_div_J=nfem2.prematrix_applicator(prematrix_laplace, field_mid=the_field_sigma) cofield_drho_by_dt=nfem2.make_cofield(mwe_drho_by_dt) field_phi=laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) compute_J=nfem2.prematrix_applicator(prematrix_J, field_mid=the_field_sigma) field_J = nfem2.cofield_to_field(compute_J(field_phi)) cofield_div_J=compute_div_J(field_phi) field_div_J = nfem2.cofield_to_field(cofield_div_J) current = accumulate_J_total([0.0,0.0,0.0,0.0],cofields=[cofield_div_J]) return current, field_phi, the_field_sigma, field_J
def update_sigma(the_field_sigma, i): compute_J = nfem2.prematrix_applicator(prematrix_J, field_mid=the_field_sigma) laplace_solver = nfem2.laplace_solver(prematrix_laplace, dirichlet_bcs=[(-1, 1, laplace_dbc)], mwe_mid=the_field_sigma) cofield_drho_by_dt = nfem2.make_cofield(mwe_drho_by_dt) # field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) print "Before cofield_to_field -", time.time(), "\n" sys.stdout.flush() field_J = nfem2.cofield_to_field(compute_J(field_phi)) print "After cofield_to_field -", time.time(), "\n" sys.stdout.flush() #print "field_J contents:", nfem2.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([sigma0, alpha], fields=[the_field_sigma, field_J, field_m]) print "Refcount field_sigma:", ocaml.sys_refcount(the_field_sigma) return the_field_sigma
def update_sigma(the_field_sigma, i): compute_J = nfem2.prematrix_applicator(prematrix_J, field_mid=the_field_sigma) laplace_solver = nfem2.laplace_solver( prematrix_laplace, dirichlet_bcs=[(-1, 1, laplace_dbc)], mwe_mid=the_field_sigma ) cofield_drho_by_dt = nfem2.make_cofield(mwe_drho_by_dt) # field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) print "Before cofield_to_field -", time.time(), "\n" sys.stdout.flush() field_J = nfem2.cofield_to_field(compute_J(field_phi)) print "After cofield_to_field -", time.time(), "\n" sys.stdout.flush() # print "field_J contents:", nfem2.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([sigma0, alpha], fields=[the_field_sigma, field_J, field_m]) print "Refcount field_sigma:", ocaml.sys_refcount(the_field_sigma) return the_field_sigma
def update_sigma(the_field_sigma,i): compute_J=nfem2.prematrix_applicator(prematrix_J, field_mid=the_field_sigma) laplace_solver=nfem2.laplace_solver(prematrix_laplace, dirichlet_bcs=[(-1,4,laplace_dbc),(-1,6,laplace_dbc)], mwe_mid=the_field_sigma) cofield_drho_by_dt=nfem2.make_cofield(mwe_drho_by_dt) # field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) field_J = nfem2.cofield_to_field(compute_J(field_phi)) # Next, let us compute the new condictivity by site-wise operation on # field_J. We just overwrite field_sigma: recompute_conductivity([sigma0_Py,sigma0_Au,alpha],fields=[the_field_sigma,field_J,field_m]) return the_field_sigma
def update_sigma(the_field_sigma, i): compute_J = nfem2.prematrix_applicator( prematrix_J, field_mid=the_field_sigma) laplace_solver = nfem2.laplace_solver( prematrix_laplace, dirichlet_bcs=[(-1, 4, laplace_dbc), (-1, 6, laplace_dbc)], mwe_mid=the_field_sigma) cofield_drho_by_dt = nfem2.make_cofield(mwe_drho_by_dt) # field_phi = laplace_solver(cofield_drho_by_dt, dbc_values=laplace_dbc_values) field_J = nfem2.cofield_to_field(compute_J(field_phi)) # Next, let us compute the new condictivity by site-wise operation on # field_J. We just overwrite field_sigma: recompute_conductivity( [sigma0_Py, sigma0_Au, alpha], fields=[the_field_sigma, field_J, field_m]) return the_field_sigma