if (descriptor == null) throw new IllegalArgumentException("This name is not registered in the system."); if (!descriptor.isField()) throw new IllegalArgumentException("Name correspods to simple tensor (not a field)."); if (descriptor.getStructuresOfIndices().length - 1 != argIndices.length)
/** * Returns an instance of specified simple tensor with specified indices * * @param tensor simple tensor * @param indices indices * @return instance of specified simple tensor with specified indices */ public static SimpleTensor setIndices(SimpleTensor tensor, SimpleIndices indices) { if (tensor.getIndices() == indices) return tensor; NameDescriptor descriptor = tensor.getNameDescriptor(); if (!descriptor.getStructureOfIndices().isStructureOf(indices)) throw new IllegalArgumentException(String.format("Illegal structure of indices (tensor = %s, indices = %s).", tensor, indices)); if (indices.size() == 0) return tensor; if (descriptor.isField()) return new TensorField(tensor.name, UnsafeIndicesFactory.createOfTensor(descriptor.getSymmetries(), indices), ((TensorField) tensor).args, ((TensorField) tensor).argIndices); else return new SimpleTensor(tensor.name, UnsafeIndicesFactory.createOfTensor(descriptor.getSymmetries(), indices)); }