- Added reflection generation for symmetriqally missing reflections

to fourmess
- Fixed hdbtable, reflist and tasub up to work with GTSE
- Made TRICS do fast scans again
- Added support for SANS beam center calculations
- Fixed a bug where SICS apparently did double counting but in fact
  just omitted an error message and did not
- Added the harray command
This commit is contained in:
koennecke
2009-08-13 07:28:44 +00:00
parent eb5025ab3b
commit 98009be4c3
22 changed files with 653 additions and 80 deletions

View File

@ -640,7 +640,12 @@ static int FourMessWeak(pSICSOBJ self, SConnection * pCon,
return 1;
}
/*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------
* Usage of the suppress flag:
* 0 do notthing
* 1 suppress symmetriqually equivalent reflections
* 2 opposite: add only reflections NOT allowed by the spacegroup
* ---------------------------------------------------------------------------*/
static int GenIndex(pSICSOBJ self, SConnection * pCon, pHdb commandNode,
pHdb par[], int nPar)
{
@ -689,12 +694,20 @@ static int GenIndex(pSICSOBJ self, SConnection * pCon, pHdb commandNode,
for (l = hkllim.v.intArray[2]; l <= hkllim.v.intArray[5]; l++) {
/* SCPrintf(pCon,eLog, "Testing %d, %d, %d", h,k,l); */
/* first test: extinct */
if (IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for sys absent", h, k, l); */
continue;
}
if(suppress != 2){
if (IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for sys absent", h, k, l); */
continue;
}
} else {
if (!IsSysAbsent_hkl(sginfo, h, k, l, NULL) != 0) {
/* SCPrintf(pCon,eLog, "%d, %d, %d rejected for not sys absent", h, k, l); */
continue;
}
}
/* second test: a symmetrically equivalent already seen */
if ((suppress != 0) && IsSuppressed_hkl(sginfo, minh, mink, minl,
if ((suppress > 0) && IsSuppressed_hkl(sginfo, minh, mink, minl,
hkllim.v.intArray[1],
hkllim.v.intArray[2], h, k,
l) != 0) {
@ -745,15 +758,20 @@ static int GenInconsumerate(pSICSOBJ self, SConnection * pCon,
qvec[2] = par[2]->value.v.doubleValue;
for (i = 0; i < priv->masterCount; i++) {
GetRefIndex(priv->messList, i, hkl);
GetRefIndex(priv->messList, i, hkl);
for (j = 0; j < 3; j++) {
hkl[j] += qvec[j];
}
AddRefIdx(priv->messList, hkl);
GetRefIndex(priv->messList, i, hkl);
for (j = 0; j < 3; j++) {
hkl[j] -= qvec[j];
}
AddRefIdx(priv->messList, hkl);
}
SCPrintf(pCon, eValue,
"%d additional inconsumerate reflections generated",
priv->masterCount);
priv->masterCount*2);
return 1;
}
@ -865,6 +883,8 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
pNew->KillPrivate = KillFourMess;
priv->stepTable = MakeFourCircleTable();
AddCommand(pSics, "fmesstable", InterInvokeSICSOBJ, NULL, priv->stepTable);
priv->messList = CreateReflectionList(pCon, pSics, "messref");
if (priv->stepTable < 0 || priv->messList == NULL) {
SCWrite(pCon, "ERROR: out of memory creating fourmess", eError);
@ -875,6 +895,10 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
cmd = AddSICSHdbPar(pNew->objectNode, "weakthreshold", usUser,
MakeHdbInt(20));
SetHdbProperty(cmd, "__save", "true");
cmd = AddSICSHdbPar(pNew->objectNode, "fast", usUser, MakeHdbInt(0));
SetHdbProperty(cmd, "__save", "true");
cmd =
AddSICSHdbPar(pNew->objectNode, "mode", usUser,
MakeHdbText("Monitor"));
@ -962,7 +986,7 @@ void InstallFourMess(SConnection * pCon, SicsInterp * pSics)
MakeHipadabaCallback(SetScannerCB, priv, NULL));
priv->pScanner = FindCommandData(pSics, "xxxscan", "ScanObject");
AddHipadabaChild(pNew->objectNode, priv->stepTable->objectNode,pCon);
/* AddHipadabaChild(pNew->objectNode, priv->stepTable->objectNode,pCon); */
AddCommand(pSics, "fmess", FourMessAction, KillSICSOBJ, pNew);
}