@@ -1001,16 +1001,20 @@ Crystal* CreateCrystalFromCIF(CIF &cif,bool verbose,bool checkSymAsXYZ)
1001
1001
return CreateCrystalFromCIF (cif,verbose,checkSymAsXYZ,false ,false );
1002
1002
}
1003
1003
1004
- Crystal* CreateCrystalFromCIF (CIF &cif,const bool verbose,const bool checkSymAsXYZ, const bool oneScatteringPowerPerElement, const bool connectAtoms)
1004
+ Crystal* CreateCrystalFromCIF (CIF &cif,const bool verbose,const bool checkSymAsXYZ,
1005
+ const bool oneScatteringPowerPerElement, const bool connectAtoms,
1006
+ Crystal *pCryst)
1005
1007
{
1006
1008
(*fpObjCrystInformUser)(" CIF: Opening CIF" );
1007
1009
Chronometer chrono;
1008
1010
chrono.start ();
1009
-
1011
+
1010
1012
// If oneScatteringPowerPerElement==true, we hold this to compute the average Biso per element
1011
1013
std::map<ScatteringPower*,std::pair<REAL,unsigned int > > vElementBiso;
1012
-
1013
- Crystal *pCryst=NULL ;
1014
+
1015
+ bool import_multiple = true ;
1016
+ if (pCryst!=NULL ) import_multiple = false ;
1017
+
1014
1018
for (map<string,CIFData>::iterator pos=cif.mvData .begin ();pos!=cif.mvData .end ();++pos)
1015
1019
if (pos->second .mvLatticePar .size ()==6 )
1016
1020
{
@@ -1092,8 +1096,12 @@ Crystal* CreateCrystalFromCIF(CIF &cif,const bool verbose,const bool checkSymAsX
1092
1096
<<" -> " <<spg
1093
1097
<<endl;
1094
1098
(*fpObjCrystInformUser)(" CIF: Create Crystal=" );
1095
- pCryst=new Crystal (pos->second .mvLatticePar [0 ],pos->second .mvLatticePar [1 ],pos->second .mvLatticePar [2 ],
1096
- pos->second .mvLatticePar [3 ],pos->second .mvLatticePar [4 ],pos->second .mvLatticePar [5 ],spg);
1099
+ if (pCryst==NULL )
1100
+ pCryst=new Crystal (pos->second .mvLatticePar [0 ],pos->second .mvLatticePar [1 ],pos->second .mvLatticePar [2 ],
1101
+ pos->second .mvLatticePar [3 ],pos->second .mvLatticePar [4 ],pos->second .mvLatticePar [5 ],spg);
1102
+ else
1103
+ pCryst->Init (pos->second .mvLatticePar [0 ],pos->second .mvLatticePar [1 ],pos->second .mvLatticePar [2 ],
1104
+ pos->second .mvLatticePar [3 ],pos->second .mvLatticePar [4 ],pos->second .mvLatticePar [5 ],spg, " " );
1097
1105
if ( (pos->second .mSpacegroupSymbolHall ==" " )
1098
1106
&&(pos->second .mvSymmetry_equiv_pos_as_xyz .size ()>0 )
1099
1107
&&(pos->second .mSpacegroupHermannMauguin !=" " )
@@ -1280,6 +1288,7 @@ Crystal* CreateCrystalFromCIF(CIF &cif,const bool verbose,const bool checkSymAsX
1280
1288
(*fpObjCrystInformUser)((boost::format (" CIF: finished connecting atoms (%u isolated atoms, %u molecules) (Crystal creation=%6.3fs total)" ) % ctat % ctmol % chrono.seconds ()).str ());
1281
1289
}
1282
1290
if (pCryst->GetName ()==" " ) pCryst->SetName (pCryst->GetFormula ());
1291
+ if (!import_multiple) return pCryst;
1283
1292
}
1284
1293
return pCryst;
1285
1294
}
0 commit comments