コード例 #1
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Clears charge in current model ('clearcharges')
bool Commands::function_ClearCharges(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Remove charges");
	obj.rs()->clearCharges();
	obj.rs()->endUndoState();
	return true;
}
コード例 #2
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Assign charge to a pattern atom, propagated over the model ('chargepatom <id> <q>')
bool Commands::function_ChargePAtom(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Charge single pattern atom");
	obj.rs()->chargePatternAtom(obj.p,c->argi(0),c->argd(1));
	obj.rs()->endUndoState();
	return true;
}
コード例 #3
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Assign charges from forcefield atom types ('chargeff')
bool Commands::function_ChargeFF(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	obj.rs()->beginUndoState("Assign forcefield charges");
	bool result = obj.rs()->assignForcefieldCharges();
	obj.rs()->endUndoState();
	return (result);
}
コード例 #4
0
ファイル: charge.cpp プロジェクト: alinelena/aten
// Copy atomic charges from model to model's current trajectory frame
bool Commands::function_ChargeFromModel(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	if (obj.rs() == obj.m) 
	{
		Messenger::print("Error - 'chargefrommodel' requires an active trajectory frame in the current model.");
		return false;
	}
	else obj.rs()->copyAtomData(obj.m, Atom::ChargeData);
	return true;
}
コード例 #5
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Load grid ('loadgrid <filename>')
bool Commands::function_LoadGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	Grid* g = NULL;

	if (aten_.importGrid(obj.rs(), c->argc(0))) g = obj.g;
	else return false;

	// Set return value
	rv.set(VTypes::GridData, g);
	return true;
}
コード例 #6
0
ファイル: charge.cpp プロジェクト: alinelena/aten
ATEN_USING_NAMESPACE

// Assign charge to selected atoms in model ('charge <q>'), or get charge of current selection
bool Commands::function_Charge(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	double q = 0.0;
	if (c->hasArg(0))
	{
		obj.rs()->beginUndoState("Charge selected atoms");
		for (RefListItem<Atom,int>* ri = obj.rs()->selection(); ri != NULL; ri = ri->next) obj.rs()->atomSetCharge(ri->item, c->argd(0));
		obj.rs()->endUndoState();
	}
	else
	{
		q = 0.0;
		for (RefListItem<Atom,int>* ri = obj.rs()->selection(); ri != NULL; ri = ri->next) q += ri->item->charge();
	}
	rv.set(q);
	return true;
}
コード例 #7
0
ファイル: grid.cpp プロジェクト: alinelena/aten
// Return nth grid of model
bool Commands::function_GetGrid(CommandNode* c, Bundle& obj, ReturnValue& rv)
{
	if (obj.notifyNull(Bundle::ModelPointer)) return false;
	Grid* g = NULL;
	switch (c->argType(0))
	{
		case (VTypes::IntegerData):
			g = obj.rs()->grid(c->argi(0)-1);
			break;
		case (VTypes::GridData):
			g = (Grid*) c->argp(0, VTypes::GridData);
			break;
		default:
			Messenger::print("Can't convert a variable of type '%s' to a Grid.", VTypes::dataType(c->argType(0)));
			break;
	}
	if (g == NULL) return false;
	rv.set(VTypes::GridData, g);
	return true;
}