コード例 #1
0
ファイル: nmag0_dyfe2_yfe2.py プロジェクト: fangohr/nmag-test
def save_mean_mags(h_ext, create_new_files=False, close_files=False):
  global file_all, file_fe, file_dy
  hx, hy, hz = h_ext
  file_missing = file_all==None or file_fe==None or file_dy==None
  if create_new_files or file_missing:
    if file_missing:
      suffix = ".dat"
    else:
      suffix = "_%.2f_%.2f_%.2f.dat" % (hx, hy, hz)
    file_all = open(run_directory+"mm"+suffix , "w")
    file_fe = open(run_directory+"mm_fe"+suffix, "w")
    file_dy = open(run_directory+"mm_dy"+suffix, "w")
    first_line = "# Stage %d: h_ext(Tesla) = %f, %f, %f\n" % (num_stage, hx, hy, hz)
    file_all.write(first_line)
    file_fe.write(first_line)
    file_dy.write(first_line)
  elif close_files:
    file_all.close()
    file_dy.close()
    file_fe.close()
  else:
    # Save the mean magnetisations
    mm_fe = nfem.integrate_field(m_fe, "m")
    mm_dy = nfem.integrate_field(m_dy, "m")
    mm_dy = Numeric.array(mm_dy[0][1])
    mm_fe = Numeric.array(mm_fe[0][1])
    mm = (ms_dy*mm_dy + ms_fe*mm_fe) / volume
    total_energy = s_dy.total_energy()
    mx, my, mz = mm
    file_all.write( "%f %f %f %f %g %g %g %f %d %g\n" % (s.time, hx, hy, hz, \
    mx, my, mz, total_energy, s.nr_iterations, s.old_dt) )
    file_all.flush()
    mm_fe = mm_fe * (ms_fe / volume)
    mm_dy = mm_dy * (ms_dy / volume_hard)
    mx, my, mz = mm_fe
    file_fe.write( "%f %f %f %f\n" % (s.time, mx, my, mz) )
    mx, my, mz = mm_dy
    file_dy.write( "%f %f %f %f\n" % (s.time, mx, my, mz) )
コード例 #2
0
ファイル: mumag2.py プロジェクト: fangohr/nmag-test
 def save_stuff(sim):
     t = sim.time
     H = Hs[sim.stage-1]
     print "Stage %d converged!" % sim.stage
     result = nfem.integrate_field(sim.fields["m"], "m_Py")
     volume = sim.region_volume("Py")
     m = [mi/volume for mi in result[0][1]]
     mx, my, mz = m
     h_par = (sets.projection(axis=H_direction, vector=H)/material.m_sat).value
     m_par = sets.projection(axis=H_direction, vector=m)
     h_pars.append(h_par)
     m_pars.append(m_par)
     mxs.append(mx)
     mys.append(my)
     ms.append(m)
     ts.append(t.value)
コード例 #3
0
ファイル: quantity.py プロジェクト: fangohr/nmag-src
    def compute_integral(self, where=None, as_value=True):
        ocaml.lam_get_field(self.lam, self.master, self.get_lam_name())

        dof_stem = ""
        if where != None:
            if type(where) == str:
                where = [where]
            dof_stem = ["%s_%s" % (self.name, mat_name) for mat_name in where]
        raw_result = nfem.integrate_field(self.master, dof_stem)

        if not as_value:
            return raw_result

        u = self.unit * self.volume_unit
        if self.def_on_mat:
            v = Value()
            for mat_name, data in raw_result:
                v.set(mat_name, data, u)
            return v

        else:
            assert len(raw_result) == 1
            name, data = raw_result[0]
            return Value(data, u)
コード例 #4
0
ファイル: quantity.py プロジェクト: anyint/nmag-src
    def compute_integral(self, where=None, as_value=True):
        ocaml.lam_get_field(self.lam, self.master, self.get_lam_name())

        dof_stem = ""
        if where != None:
            if type(where) == str:
                where = [where]
            dof_stem = ["%s_%s" % (self.name, mat_name) for mat_name in where]
        raw_result = nfem.integrate_field(self.master, dof_stem)

        if not as_value:
            return raw_result

        u = self.unit * self.volume_unit
        if self.def_on_mat:
            v = Value()
            for mat_name, data in raw_result:
                v.set(mat_name, data, u)
            return v

        else:
            assert len(raw_result) == 1
            name, data = raw_result[0]
            return Value(data, u)