optimises magnetic structure by minimizing the energy using non-linear optimization algorithms optm = OPTMAGSTR(obj, Option1, Value1, ...) Input: obj sw class object. Options: func Function that produce the magnetic moments, ordering wave vector and normal vector from the optimization parameters in the following form: [M, k, n] = @(x)func(M0, x) where M is (3,nMagExt) size matrix. k is the ordering wave vector, its size is (1,3). n is the normal vector of the spin rotation plane, its size is (1,3). The default is @gm_spherical3d. For planar magnetic structure use @gm_planar. xmin Minimum limit of the optimisation parameters, optional. xmax Maximum limit of the optimisation parameters, optional. x0 Starting value of the optimisation parameters. If empty or undefined, then random values are used. boundary Boundary conditions of the extended unit cell. 'free' Free, interactions between extedned unit cells are omitted. 'per' Periodic, interactions between extended unit cells are retained. Default is {'per' 'per' 'per'}. epsilon The smalles value of incommensurability that is tolerated without warning. Default is 1e-5. nRun Number of runs. If random starting parameters are given, the optimisation process will be rerun nRun times and the best result (lowest ground state energy per spin) will be saved in the result. title Gives a title string to the simulation that is saved in the output. Limits only on selected prameters: Limits can be given on any input parameter of the constraint function by giving the name of the parameter, see the help of the used constraint function in the following format: optmagstr('ParName',[min max],...). For example to fix the nTheta value of @gm_planar during the optimisation to zero use: optmagstr(obj,'func',@gm_planar,'nTheta',[0 0]); Optimisation parameters: tolx Minimum change of x when convergence reached, default value is 1e-4. tolfun Minimum change of the R value when convergence reached, default value is 1e-5. maxfunevals Maximum number of function evaluations, default value is 1e7. maxiter Maximum number of iterations, default value is 1e4. Output: 'optm' is a struct type variable with the following fields: obj sw object that contains the optimised magnetic structure. x Optimised paramters, dimensions are [1 nPar]. fname Name of the contraint function. xname Cell containing the name of the x parameters, dimensions are [1 nPar]. e Energy per spin in the optimised structure. exitflag Exit flag of the optimisation code, see fminsearch. output Detailed output of the optimisation code, see fminsearch. param Input parameters, stored in a struct. Example: tri = sw_model('triAF',1); X1 = [0 0 0 0 pi/2 0]; X2 = [0 1/2 1/2 0 pi/2 0]; optRes = tri.optmagstr('func',@gm_planar,'xmin',X1,'xmax',X2); plot(tri) The example determined the magnetic structure of the triangular lattice antiferromagnet assuming planar magnetic structure and constraining the moments into the [0 y z] plane (nTheta = 90 deg, nPhi = 0 deg or n = [1 0 0]). Then plots the magnetic structure. See also SW, SW.ANNEAL, GM_SPHERICAL3D, GM_PLANAR, FMINSEARCH.