NESSi  v1.0.2
The NonEquilibrium Systems Simulation Library

◆ resize_nt()

template<typename T >
void cntr::herm_matrix< T >::resize_nt ( int  nt)

Resizes herm_matrix object with respect to the number of time points nt. Internal routine; see top-level interface resize.

Purpose

Resizes herm_matrix class with respect to number of time steps nt. If nt >= 0 real-time components are resized, otherwise deallocated (i.e. only the Matsubara component is kept in memory).

Parameters
nt

New number of time steps.

Definition at line 361 of file cntr_herm_matrix_impl.hpp.

361  {
362  int nt1 = (nt_ > nt ? nt : nt_);
363  cplx *ret, *les, *tv;
364  assert(nt >= -1);
365  nt_ = nt;
366  if (size1_ == 0)
367  return;
368  if (nt_ >= 0) {
369  les = new cplx[((nt_ + 1) * (nt_ + 2)) / 2 * element_size_];
370  ret = new cplx[((nt_ + 1) * (nt_ + 2)) / 2 * element_size_];
371  tv = new cplx[(nt_ + 1) * (ntau_ + 1) * element_size_];
372  if (nt1 >= 0) {
373  memcpy(les, les_, sizeof(cplx) * ((nt1 + 1) * (nt1 + 2)) / 2 *
374  element_size_);
375  memcpy(ret, ret_, sizeof(cplx) * ((nt1 + 1) * (nt1 + 2)) / 2 *
376  element_size_);
377  memcpy(tv, tv_,
378  sizeof(cplx) * (nt1 + 1) * (ntau_ + 1) * element_size_);
379  }
380  } else {
381  les = 0;
382  ret = 0;
383  tv = 0;
384  }
385  delete[] les_;
386  delete[] ret_;
387  delete[] tv_;
388  les_ = les;
389  ret_ = ret;
390  tv_ = tv;
391 }
std::complex< T > cplx