User Tools

Site Tools


docs:classes:fieldsymmetry

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
docs:classes:fieldsymmetry [2009/02/16 11:53]
gibson
docs:classes:fieldsymmetry [2010/02/02 07:55] (current)
Line 29: Line 29:
 </​latex>​ </​latex>​
  
-In C++ code, elements of the symmetry group can be defined ​as follows+The following is a brief overview of FieldSymmetry functionality. For a complete description,​ 
 +see the header file {{:​librarycode:​symmetry.h}}. 
 +===== Constructors / Initialization ===== 
 + 
 +In C++ code, elements of the symmetry group can initialized ​as follows
 +where %%sx,​sy,​sz%% are of type %%int%% and %%ax, az%% are of type %%Real%%. ​
  
 <code c++> <code c++>
Line 43: Line 48:
 </​code>​ </​code>​
  
-where sx,sy,sz are of type int and ax, az are of type Real. FieldSymmetries act on each +===== Operations ===== 
-other and velocity fields as follows+ 
 +FieldSymmetries act on each other and velocity fields as follows
  
 <code c++> <code c++>
Line 74: Line 80:
     ...     ...
 </​code>​ </​code>​
 +===== ASCII IO ===== 
  
-For a complete description of the FieldSymmetry ​class, see the header file fieldsymmetry.h.+==== FieldSymmetry ​====
  
 +The FieldSymmetry uses ASCII input-output. The storage format is 
  
 +  s sx sy sz ax az
  
 +Thus, the following C++ channelflow code 
 +
 +<code c++>
 +FieldSymmetry sigma(-1, -1, -1, 0.3, 0.1);
 +sigma.save("​sigma"​);​
 +</​code>​
 +
 +produces the ASCII file ''​sigma.asc''​ with contents
 +
 +  1 -1 -1 -1 0.3 0.1
 +
 +which can then be read back into a channeflow program with 
 +
 +<code c++>
 +FieldSymmetry sigma("​sigma"​);​
 +</​code>​
 +
 +Note that  the order of parameters in the ASCII file is different than the order in the ''​FieldSymmetry''​ constructor:​ the overall multiplicative sign ''​s''​ goes first in the file and last in the C++ constructor. I apologize for this. The reasons for the difference are are historical. The next release of channelflow will have order (s, sx, sy, sz, ax, az) for both.
 +
 +==== SymmetryList ====
 +
 +The ''​SymmetryList''​ class is a essentially an array of ''​FieldSymmetry''​ objects with simple ASCII IO methods. The ASCII format is 
 +
 +   % N
 +   s0 sx0 sy0 sz0 ax0 az0
 +   s1 sx1 sy1 sz1 ax1 az1
 +   ...
 +
 +where N is the number of symmetries listed in the file. Thus the file ''​S.asc''​ with contents ​
 +
 +   % 2
 +   ​1 ​ 1  1 -1  0.5  0.0
 +   1 -1 -1  1  0.5  0.5
 +
 +represents the symmetries σ0 = (1, 1, 1, -1, 0.5, 0.0) and σ1 = (1, -1, -1,  1,  0.5,  0.5). These are the generators of the S 
 +[[docs:​math:​symmetry#​isotropy_groups_of_known_solutions|S symmetry group]]. The generators can be loaded into channelflow,​ used, and saved as follows
 +
 +<code c++>
 +SymmetryList S("​S"​); ​     // load generators from ASCII file
 +FlowField foo = S[0](u); ​ // apply (1,  1,  1, -1, 0.5, 0.0) to u
 +FlowField bar = S[1](u); ​ // apply (1, -1, -1,  1, 0.5, 0.5) to u
 +S.save("​Q"​); ​             // save generators into another file
 +
 +SymmetryList P(4);        // Create another symmetry group
 +P[0] = FieldSymmetry(1,​1,​1,​ 0.2, 0.0); 
 +P[1] = etc.;
 +</​code>​
 +  ​
docs/classes/fieldsymmetry.1234814027.txt.gz · Last modified: 2009/02/16 11:53 by gibson