User Tools

Site Tools


lua_scripting_tips

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lua_scripting_tips [2022/07/08 21:21]
stanzurek [Sequential file names]
lua_scripting_tips [2025/03/09 10:59] (current)
stanzurek [Rounding in LUA]
Line 2: Line 2:
 This page contains tips for using Lua 4.0 with FEMM 4.2. Some of these are documented in FEMM help file (User's manual) but some are not. This page contains tips for using Lua 4.0 with FEMM 4.2. Some of these are documented in FEMM help file (User's manual) but some are not.
  
 +Full LUA 4.0 documentation: http://www.lua.org/manual/4.0/
  
 ===== Comments ===== ===== Comments =====
Line 11: Line 12:
  
 ===== FOR loop and IF statement ===== ===== FOR loop and IF statement =====
 +
 +The relational operators in Lua are
 +  equal, not equal, smaller than, greater than, equal or smaller, equal or greater
 +    ==      ~=           <             >           <               >=
 +
 +
 Example of a FOR loop and an IF  statement Example of a FOR loop and an IF  statement
 <code lua> <code lua>
Line 29: Line 36:
  
 There is no need to pre-declare the "counting" variable ("n" in the example above). It gets declared at the point of use directly. There is no need to pre-declare the "counting" variable ("n" in the example above). It gets declared at the point of use directly.
 +
 +===== The functions of AND and OR =====
 +<code>
 +        if (n<15 and x>0) then
 +        end
 +        
 +        if (n<15 or x>0) then
 +        end
 +</code>
 ===== Multiple output values of function ===== ===== Multiple output values of function =====
 Some functions return multiple values.  Some functions return multiple values. 
Line 69: Line 85:
 ''C:\femm42\bin\init.lua'' (or depending where FEMM was installed into). ''C:\femm42\bin\init.lua'' (or depending where FEMM was installed into).
  
-==== Sequential file names ====+===== Sequential file names =====
 Sometimes results need to be written into files whose numbers increase in a sequence. This can be achieved by using the structure as in the example below, where: ''"string"..n.."string"'' allows including the variable "n" in the name: Sometimes results need to be written into files whose numbers increase in a sequence. This can be achieved by using the structure as in the example below, where: ''"string"..n.."string"'' allows including the variable "n" in the name:
  
Line 87: Line 103:
 {{page>insert/paypal}} {{page>insert/paypal}}
  
-==== Complex numbers ====+===== Complex numbers =====
 Lua in FEMM handles complex numbers automatically, for example: Lua in FEMM handles complex numbers automatically, for example:
-<code>+<code lua>
 a = 1 + I*2 a = 1 + I*2
 b = 0.3 - I*0.4 b = 0.3 - I*0.4
Line 98: Line 114:
 im(b) = -0.4 im(b) = -0.4
 abs(b) = 0.5 abs(b) = 0.5
 +</code>
 +
 +===== Automatic limits in colour maps =====
 +Full command executed with just the legend parameter set to -1 shows default limits for the legend. This seems to work in pure LUA, and mo_showdensityplot(-1) does not work even in pure LUA:
 +
 +<code lua>
 +mo_showdensityplot(legend,gscale,upper_B,lower_B,type)
 +mo_showdensityplot(-1,0,0,1,"bmag"
 +</code>
 +
 +legend: Set to 0 to hide the plot legend or 1 to show the plot legend.
 +
 +(note that: ''mo_showdensityplot(-1)'' will not work).
 +  
 +
 +===== Rounding in LUA =====
 +Rounding does not appear to be immediately available in LUA 4.0. Teh
 +
 +<code lua>
 +function round_LUA(var_input, round_precision)
 +
 +var_floor = floor(var_input/round_precision)*round_precision
 +var_ceil = ceil(var_input/round_precision)*round_precision
 +var_rounded = var_floor
 + 
 +if (var_input > (var_floor + 5*round_precision/10) ) then
 +var_rounded = var_ceil
 +end
 +
 +return(var_rounded)
 +
 +end -- end function
 +
 +var_input = 123.44900000003   -- input variable to be rounded
 +round_precision = 10     -- rounding precision, use: 100, 10, 1, 0.1, 0.01 etc.
 +
 +var_output = round_LUA(var_input, round_precision)
 +
 +print(var_input)
 +print(var_output)
 +
 </code> </code>
lua_scripting_tips.1657308086.txt.gz · Last modified: 2022/07/08 21:21 by stanzurek