Changeset 34b70c for pcp/src/perturbed.c


Ignore:
Timestamp:
Apr 22, 2008, 12:18:49 PM (17 years ago)
Author:
Frederik Heber <heber@…>
Children:
87b8ed
Parents:
acd467
Message:

CalculateChemicalShieldingByReciprocalCurrentDensity(): NICS map written to file

fabs of sigma_real is taken (only positive values can be displayed), then B (sigma is basically B_Induced) is diagonalised and absolute values are delivered to OutputVis().

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pcp/src/perturbed.c

    racd467 r34b70c  
    30463046  struct Lattice *Lat = &P->Lat;
    30473047  struct LatticeLevel *Lev0 = R->Lev0;
     3048  struct FileData *F = &P->Files;
    30483049  struct Ions *I = &P->Ion;
    30493050  struct Density *Dens0 = Lev0->Dens;
     
    32633264      sigma_real[in][i] = gsl_vector_get(eval,in);
    32643265  }
    3265   // Output of diagonalized magnetic field densities for each direction
    3266   for (i=0;i<NDIM;i++)
    3267     OutputVis(P, sigma_real[i]);   
     3266   
     3267  if (Lev0->LevelNo == 0) {
     3268    if (!P->Par.me && P->Call.out[NormalOut]) fprintf(stderr,"(%i)Output of NICS map ...\n", P->Par.me);
     3269    // Output of magnetic field densities for each direction
     3270    //for (i=0;i<NDIM*NDIM;i++)
     3271    //  OutputVis(P, sigma_real[i]);   
     3272    // Diagonalizing the tensor "field" B_ij [r]
     3273   if (P->Call.out[ValueOut])  fprintf(stderr,"(%i) Diagonalizing B_ij [r] ... \n", P->Par.me);
     3274    for (i=0; i< Dens0->LocalSizeR; i++) {
     3275      for (in=0; in<NDIM; in++) // index i of vector component in integrand
     3276        for (dex=0; dex<NDIM; dex++) { // index j of B component derivation in current density tensor
     3277          //fprintf(stderr,"(%i) Setting B_(%i,%i)[%i] ... \n", P->Par.me, in,dex,i);
     3278          gsl_matrix_complex_set(H,in,dex,gsl_complex_rect((sigma_real[in+dex*NDIM][i]+sigma_real[dex+in*NDIM][i])/2.,0.));
     3279        }
     3280      gsl_eigen_herm(H, eval, w);
     3281      gsl_sort_vector(eval);  // sort eigenvalues
     3282      for (in=0;in<NDIM;in++)
     3283        sigma_real[in][i] = gsl_vector_get(eval,in);
     3284    }
     3285  }
     3286
     3287  // now absolute the B values (as density scales them by log) and output
     3288  if (F->DoOutNICS) {
     3289    for (i=0; i< Dens0->LocalSizeR; i++)
     3290      for (in=0;in<NDIM;in++)
     3291        sigma_real[in][i] = fabs(sigma_real[in][i]);
     3292    // Output of diagonalized magnetic field densities for each direction
     3293    for (i=0;i<NDIM;i++)
     3294      OutputVis(P, sigma_real[i]);   
     3295  }
    32683296  for (i=0;i<NDIM*NDIM;i++)
    32693297    UnLockDensityArray(Dens0,i,real);  // sigma_imag/real free
Note: See TracChangeset for help on using the changeset viewer.