* Implementation of GiNaC's special tensors. */
/*
- * GiNaC Copyright (C) 1999-2006 Johannes Gutenberg University Mainz, Germany
+ * GiNaC Copyright (C) 1999-2008 Johannes Gutenberg University Mainz, Germany
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
// constructors
//////////
-tensor::tensor() : inherited(&tensor::tinfo_static)
+tensor::tensor()
{
setflag(status_flags::evaluated | status_flags::expanded);
}
minkmetric::minkmetric() : pos_sig(false)
{
- tinfo_key = &minkmetric::tinfo_static;
}
spinmetric::spinmetric()
{
- tinfo_key = &spinmetric::tinfo_static;
}
minkmetric::minkmetric(bool ps) : pos_sig(ps)
{
- tinfo_key = &minkmetric::tinfo_static;
}
tensepsilon::tensepsilon() : minkowski(false), pos_sig(false)
{
- tinfo_key = &tensepsilon::tinfo_static;
}
tensepsilon::tensepsilon(bool mink, bool ps) : minkowski(mink), pos_sig(ps)
{
- tinfo_key = &tensepsilon::tinfo_static;
}
//////////
// archiving
//////////
-DEFAULT_ARCHIVING(tensor)
-DEFAULT_ARCHIVING(tensdelta)
-DEFAULT_ARCHIVING(tensmetric)
-DEFAULT_ARCHIVING(spinmetric)
-DEFAULT_UNARCHIVE(minkmetric)
-DEFAULT_UNARCHIVE(tensepsilon)
-
-minkmetric::minkmetric(const archive_node &n, lst &sym_lst) : inherited(n, sym_lst)
+void minkmetric::read_archive(const archive_node& n, lst& sym_lst)
{
+ inherited::read_archive(n, sym_lst);
n.find_bool("pos_sig", pos_sig);
}
+GINAC_BIND_UNARCHIVER(minkmetric);
void minkmetric::archive(archive_node &n) const
{
n.add_bool("pos_sig", pos_sig);
}
-tensepsilon::tensepsilon(const archive_node &n, lst &sym_lst) : inherited(n, sym_lst)
+void tensepsilon::read_archive(const archive_node& n, lst& sym_lst)
{
+ inherited::read_archive(n, sym_lst);
n.find_bool("minkowski", minkowski);
n.find_bool("pos_sig", pos_sig);
}
+GINAC_BIND_UNARCHIVER(tensepsilon);
void tensepsilon::archive(archive_node &n) const
{
n.add_bool("pos_sig", pos_sig);
}
+GINAC_BIND_UNARCHIVER(tensdelta);
+GINAC_BIND_UNARCHIVER(tensmetric);
+GINAC_BIND_UNARCHIVER(spinmetric);
+
//////////
// functions overriding virtual functions from base classes
//////////
again:
if (self_idx->is_symbolic()) {
for (size_t i=1; i<other->nops(); i++) {
+ if (! is_a<idx>(other->op(i)))
+ continue;
const idx &other_idx = ex_to<idx>(other->op(i));
if (is_dummy_pair(*self_idx, other_idx)) {