Develop and Download Open Source Software

Browse Subversion Repository

Diff of /Conograph/trunk/src/lattice_symmetry/LatticeFigureOfMeritToCheckSymmetry.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16 by rtomiyasu, Fri Apr 26 08:50:24 2013 UTC revision 17 by rtomiyasu, Tue Apr 30 05:04:41 2013 UTC
# Line 70  static bool checkInitialLatticeParameter Line 70  static bool checkInitialLatticeParameter
70  {  {
71          const SymMat<Double> dbl_S_red( chToDouble(S_red.first) );          const SymMat<Double> dbl_S_red( chToDouble(S_red.first) );
72    
73          if( brat.enumPointGroup() == Ci && brat.enumBravaisLattice() == Prim )          if( brat.enumLaueGroup() == Ci && brat.enumBravaisLattice() == Prim )
74          {          {
75                  assert( dbl_S_red(2,2)*0.9999 < dbl_S_red(1,1) && dbl_S_red(1,1)*0.9999 < dbl_S_red(0,0)                  assert( dbl_S_red(2,2)*0.9999 < dbl_S_red(1,1) && dbl_S_red(1,1)*0.9999 < dbl_S_red(0,0)
76                                  && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(1,1)                                  && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(1,1)
77                                  && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2)                                  && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2)
78                                  && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(2,2) );                                  && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(2,2) );
79          }          }
80          else if( brat.enumPointGroup() == C2h_Y && brat.enumBravaisLattice() == Prim )          else if( brat.enumLaueGroup() == C2h_Y && brat.enumBravaisLattice() == Prim )
81          {          {
82                  assert( 0.0 <= dbl_S_red(0,2) && dbl_S_red(2,2)*0.9999 < dbl_S_red(0,0)                  assert( 0.0 <= dbl_S_red(0,2) && dbl_S_red(2,2)*0.9999 < dbl_S_red(0,0)
83                                  && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2) && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(0,0) );                                  && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2) && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(0,0) );
84          }          }
85          else if( brat.enumPointGroup() == C2h_Z && brat.enumBravaisLattice() == Prim )          else if( brat.enumLaueGroup() == C2h_Z && brat.enumBravaisLattice() == Prim )
86          {          {
87                  assert( 0.0 <= dbl_S_red(0,1) && dbl_S_red(1,1)*0.9999 < dbl_S_red(0,0)                  assert( 0.0 <= dbl_S_red(0,1) && dbl_S_red(1,1)*0.9999 < dbl_S_red(0,0)
88                                  && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(0,0) && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(1,1) );                                  && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(0,0) && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(1,1) );
89          }          }
90          else if( brat.enumPointGroup() == C2h_X && brat.enumBravaisLattice() == Prim )          else if( brat.enumLaueGroup() == C2h_X && brat.enumBravaisLattice() == Prim )
91          {          {
92                  assert( 0.0 <= dbl_S_red(1,2) && dbl_S_red(2,2)*0.9999 < dbl_S_red(1,1)                  assert( 0.0 <= dbl_S_red(1,2) && dbl_S_red(2,2)*0.9999 < dbl_S_red(1,1)
93                                  && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(1,1) && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(2,2) );                                  && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(1,1) && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(2,2) );
94          }          }
95          else if( brat.enumPointGroup() == C2h_Y && brat.enumBravaisLattice() == BaseZ )          else if( brat.enumLaueGroup() == C2h_Y && brat.enumBravaisLattice() == BaseZ )
96          {          {
97                  assert( 0.0 <= dbl_S_red(0,2) && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2) && fabs( dbl_S_red(0,2) ) * 0.9999 < dbl_S_red(0,0) );                  assert( 0.0 <= dbl_S_red(0,2) && fabs( dbl_S_red(0,2) ) * 1.9999 < dbl_S_red(2,2) && fabs( dbl_S_red(0,2) ) * 0.9999 < dbl_S_red(0,0) );
98          }          }
99          else if( brat.enumPointGroup() == C2h_Z && brat.enumBravaisLattice() == BaseX )          else if( brat.enumLaueGroup() == C2h_Z && brat.enumBravaisLattice() == BaseX )
100          {          {
101                  assert( 0.0 <= dbl_S_red(0,1) && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(0,0) && fabs( dbl_S_red(0,1) ) * 0.9999 < dbl_S_red(1,1) );                  assert( 0.0 <= dbl_S_red(0,1) && fabs( dbl_S_red(0,1) ) * 1.9999 < dbl_S_red(0,0) && fabs( dbl_S_red(0,1) ) * 0.9999 < dbl_S_red(1,1) );
102          }          }
103          else if( brat.enumPointGroup() == C2h_X && brat.enumBravaisLattice() == BaseY )          else if( brat.enumLaueGroup() == C2h_X && brat.enumBravaisLattice() == BaseY )
104          {          {
105                  assert( 0.0 <= dbl_S_red(1,2) && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(1,1) && fabs( dbl_S_red(1,2) ) * 0.9999  < dbl_S_red(2,2) );                  assert( 0.0 <= dbl_S_red(1,2) && fabs( dbl_S_red(1,2) ) * 1.9999 < dbl_S_red(1,1) && fabs( dbl_S_red(1,2) ) * 0.9999  < dbl_S_red(2,2) );
106          }          }
107          else if( brat.enumPointGroup() == D2h          else if( brat.enumLaueGroup() == D2h
108                          && brat.enumBravaisLattice() != BaseX                          && brat.enumBravaisLattice() != BaseX
109                          && brat.enumBravaisLattice() != BaseY                          && brat.enumBravaisLattice() != BaseY
110                          && brat.enumBravaisLattice() != BaseZ )                          && brat.enumBravaisLattice() != BaseZ )
# Line 121  static bool checkInitialLatticeParameter Line 121  static bool checkInitialLatticeParameter
121                          && S_super(2,3) <= VCData() );                          && S_super(2,3) <= VCData() );
122    
123          SymMat<VCData> S_red_cp = S_red.first;          SymMat<VCData> S_red_cp = S_red.first;
124          cal_average_crystal_system(brat.enumPointGroup(), S_red_cp);          cal_average_crystal_system(brat.enumLaueGroup(), S_red_cp);
125          assert( S_red.first(0,0).putVecCoef() == S_red_cp(0,0).putVecCoef() );          assert( S_red.first(0,0).putVecCoef() == S_red_cp(0,0).putVecCoef() );
126          assert( S_red.first(1,1).putVecCoef() == S_red_cp(1,1).putVecCoef() );          assert( S_red.first(1,1).putVecCoef() == S_red_cp(1,1).putVecCoef() );
127          assert( S_red.first(2,2).putVecCoef() == S_red_cp(2,2).putVecCoef() );          assert( S_red.first(2,2).putVecCoef() == S_red_cp(2,2).putVecCoef() );
# Line 333  bool LatticeFigureOfMeritToCheckSymmetry Line 333  bool LatticeFigureOfMeritToCheckSymmetry
333    
334          SymMat43_VCData ans2(SymMat<VCData>(3), NRMat<Int4>(3,3));          SymMat43_VCData ans2(SymMat<VCData>(3), NRMat<Int4>(3,3));
335    
336          if( brat.enumPointGroup() == C2h_X )          if( brat.enumLaueGroup() == C2h_X )
337          {          {
338                  ans2.first = transform_sym_matrix(put_matrix_YZX(), m_S_red.first);                  ans2.first = transform_sym_matrix(put_matrix_YZX(), m_S_red.first);
339                  ans2.second = mprod( m_S_red.second, put_matrix_ZXY() );                  ans2.second = mprod( m_S_red.second, put_matrix_ZXY() );
340          }          }
341          else if( brat.enumPointGroup() == C2h_Y )          else if( brat.enumLaueGroup() == C2h_Y )
342          {          {
343                  ans2.first = transform_sym_matrix(put_matrix_ZXY(), m_S_red.first);                  ans2.first = transform_sym_matrix(put_matrix_ZXY(), m_S_red.first);
344                  ans2.second = mprod( m_S_red.second, put_matrix_YZX() );                  ans2.second = mprod( m_S_red.second, put_matrix_YZX() );
345          }          }
346          else // if( brat.enumPointGroup() == C2h_Z )          else // if( brat.enumLaueGroup() == C2h_Z )
347          {          {
348                  ans2.first = transform_sym_matrix(put_matrix_XYZ(), m_S_red.first);                  ans2.first = transform_sym_matrix(put_matrix_XYZ(), m_S_red.first);
349                  ans2.second = m_S_red.second;                  ans2.second = m_S_red.second;
# Line 373  bool LatticeFigureOfMeritToCheckSymmetry Line 373  bool LatticeFigureOfMeritToCheckSymmetry
373  {  {
374          ans.clear();          ans.clear();
375          const BravaisType& brat = m_latfom.putBravaisType();          const BravaisType& brat = m_latfom.putBravaisType();
376          if( epg_new == Ci || epg_new == brat.enumPointGroup() )          if( epg_new == Ci || epg_new == brat.enumLaueGroup() )
377          {          {
378                  ans.insert( m_S_red );                  ans.insert( m_S_red );
379                  return true;                  return true;
# Line 381  bool LatticeFigureOfMeritToCheckSymmetry Line 381  bool LatticeFigureOfMeritToCheckSymmetry
381    
382          if( epg_new == C2h_X || epg_new == C2h_Y ||  epg_new == C2h_Z )          if( epg_new == C2h_X || epg_new == C2h_Y ||  epg_new == C2h_Z )
383          {          {
384                  assert( brat.enumPointGroup() == Ci );                  assert( brat.enumLaueGroup() == Ci );
385                  assert( brat.enumBravaisLattice() == Prim );                  assert( brat.enumBravaisLattice() == Prim );
386    
387                  return checkIfLatticeIsMonoclinic(epg_new, cv2, ans);                  return checkIfLatticeIsMonoclinic(epg_new, cv2, ans);
388          }          }
389          else if( epg_new == D4h_Z )          else if( epg_new == D4h_Z )
390          {          {
391                  assert( brat.enumPointGroup() == D2h );                  assert( brat.enumLaueGroup() == D2h );
392                  assert( brat.enumBravaisLattice() == Prim                  assert( brat.enumBravaisLattice() == Prim
393                                  || brat.enumBravaisLattice() == Inner );                                  || brat.enumBravaisLattice() == Inner );
394    
# Line 396  bool LatticeFigureOfMeritToCheckSymmetry Line 396  bool LatticeFigureOfMeritToCheckSymmetry
396          }          }
397          else if( epg_new == D2h )          else if( epg_new == D2h )
398          {          {
399                  assert( brat.enumPointGroup() != Ci || brat.enumBravaisLattice() == Prim );                  assert( brat.enumLaueGroup() != Ci || brat.enumBravaisLattice() == Prim );
400                  assert( brat.enumPointGroup() != C2h_Z || brat.enumBravaisLattice() == BaseX );                  assert( brat.enumLaueGroup() != C2h_Z || brat.enumBravaisLattice() == BaseX );
401                  assert( brat.enumPointGroup() != C2h_X || brat.enumBravaisLattice() == BaseY );                  assert( brat.enumLaueGroup() != C2h_X || brat.enumBravaisLattice() == BaseY );
402                  assert( brat.enumPointGroup() != C2h_Y || brat.enumBravaisLattice() == BaseZ );                  assert( brat.enumLaueGroup() != C2h_Y || brat.enumBravaisLattice() == BaseZ );
403                  assert( brat.enumBravaisLattice() != Rhom_hex );                  assert( brat.enumBravaisLattice() != Rhom_hex );
404    
405                  return checkIfLatticeIsOrthorhombic(cv2, ans);                  return checkIfLatticeIsOrthorhombic(cv2, ans);
# Line 407  bool LatticeFigureOfMeritToCheckSymmetry Line 407  bool LatticeFigureOfMeritToCheckSymmetry
407          else if( epg_new == D6h )          else if( epg_new == D6h )
408          {          {
409                  assert( brat.enumBravaisLattice() == Prim );                  assert( brat.enumBravaisLattice() == Prim );
410                  assert( brat.enumPointGroup() == C2h_X                  assert( brat.enumLaueGroup() == C2h_X
411                                  || brat.enumPointGroup() == C2h_Y                                  || brat.enumLaueGroup() == C2h_Y
412                                  || brat.enumPointGroup() == C2h_Z );                                  || brat.enumLaueGroup() == C2h_Z );
413                  return checkIfLatticeIsHexagonal(epg_new, cv2, ans);                  return checkIfLatticeIsHexagonal(epg_new, cv2, ans);
414          }          }
415          else          else

Legend:
Removed from v.16  
changed lines
  Added in v.17

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26