public static double noRefF(int N, SimController sim, List <int> plotChoice, MagnetizationByPosition MsByPos, string calccondition) { //N--; string fmt = "000000.##"; //string file = sim.dir + 'f' + N.ToString(fmt) + ".ovf"; string file = sim.dir + 'f' + N.ToString() + ".ovf"; //string file3 = sim.dir + fName(3 * N + 2); Console.WriteLine("Dip pos:" + sim.fmrfm.dipole.r0.ToString()); ovf2 m = new ovf2(file, true); //double fzi = sim.fmrfm.CalculateFz(m0, mi); double fzi = sim.fmrfm.CalculateFzConditional(null, m, ops.CalcCondition_range, MsByPos, plotChoice, calccondition); return(fzi); }
public static double newF(int N, SimController sim, List <int> plotChoice, MagnetizationByPosition MsByPos, string calccondition) { //N--; double f = 0; string file1 = sim.dir + N.ToString() + "-m0.ovf"; string file2 = sim.dir + N.ToString() + "-mf.ovf"; //string file3 = sim.dir + fName(3 * N + 2); Console.WriteLine("Dip pos:" + sim.fmrfm.dipole.r0.ToString()); ovf2 m0 = new ovf2(file1, false); ovf2 mi = new ovf2(file2, false); //double fzi = sim.fmrfm.CalculateFz(m0, mi); //double fzi = sim.fmrfm.CalculateFzConditional(m0, mi, (v) => { return true; }, MsByPos,plotChoice); double fzi = sim.fmrfm.CalculateFzConditional(m0, mi, ops.CalcCondition_range, MsByPos, plotChoice, calccondition); return(fzi); }
public void DoSweep(calculator calc, List <int> pltChoice, MagnetizationByPosition MsByPos, string calccondition) { this.FieldSweep = new List <XY>(); if (!table.keys.Contains("Hext (T)")) { Console.WriteLine("error. no key named Hext"); return; } for (int i = 0; i < table.data[table.keys[0]].Count; i++) { double h = table.data["Hext (T)"][i]; //double h = table.data["ypos ()"][i]; //this.fmrfm.dipole.r0.x = h; int fileN = Convert.ToInt16(table.data["fileN ()"][i]); double val = calc(fileN, this, pltChoice, MsByPos, calccondition); XY hf = new XY(h, val); FieldSweep.Add(hf); } }
public double CalculateFzConditional(ovf2 mRef, ovf2 m, CalcCondition ccond, MagnetizationByPosition MsAtPos, List <int> plotChoice, string cond) { //int Ny = mRef.header.ynodes; int Ny = m.header.ynodes; double fz = 0; //double vol = mRef.header.xstepsize * mRef.header.ystepsize * mRef.header.zstepsize; double vol = m.header.xstepsize * m.header.ystepsize * m.header.zstepsize; for (int i = 0; i < Ny; i++) { Vector[] dm = m.GetRow(i, 0); if (mRef != null) { Vector[] row0 = mRef.GetRow(i, 0); dm = vecSub(dm, row0); } for (int j = 0; j < dm.Count(); j++) { //Vector mf = new Vector(dm[j].x * mom, dm[j].y * mom, dm[j].z * mom); Vector r = m.GetPos(j, i, 0); //Vector mf = new Vector(0, 0, dm[j].z * MsAtPos(r) * vol); Vector mf = new Vector(dm[j].x * MsAtPos(r) * vol, dm[j].y * MsAtPos(r) * vol, dm[j].z * MsAtPos(r) * vol); double fzi = 0; if (plotChoice[0] == 0) { if (plotChoice[1] == 1) { fzi = dipole.Fz(mf, r); } else if (plotChoice[1] == 2) { fzi = dipole.Fz_ip(mf, r); } else if (plotChoice[1] == 3) { fzi = dipole.Fz_ipy(mf, r); } } if (plotChoice[0] == 1) { if (plotChoice[1] == 1) { fzi = dm[j].z; } else if (plotChoice[1] == 2) { fzi = dm[j].x; } else if (plotChoice[1] == 3) { fzi = dm[j].y; } } //double fzi = dipole.Fz(mf, r); //double fzi = dipole.Fz_ip(mf, r); if (ccond(r, cond)) { fz += fzi; } } } return(fz); }