aimsalgo  5.0.5
Neuroimaging image processing
gradient.h
Go to the documentation of this file.
1 /* This software and supporting documentation are distributed by
2  * Institut Federatif de Recherche 49
3  * CEA/NeuroSpin, Batiment 145,
4  * 91191 Gif-sur-Yvette cedex
5  * France
6  *
7  * This software is governed by the CeCILL-B license under
8  * French law and abiding by the rules of distribution of free software.
9  * You can use, modify and/or redistribute the software under the
10  * terms of the CeCILL-B license as circulated by CEA, CNRS
11  * and INRIA at the following URL "http://www.cecill.info".
12  *
13  * As a counterpart to the access to the source code and rights to copy,
14  * modify and redistribute granted by the license, users are provided only
15  * with a limited warranty and the software's author, the holder of the
16  * economic rights, and the successive licensors have only limited
17  * liability.
18  *
19  * In this respect, the user's attention is drawn to the risks associated
20  * with loading, using, modifying and/or developing or reproducing the
21  * software by the user in light of its specific status of free software,
22  * that may mean that it is complicated to manipulate, and that also
23  * therefore means that it is reserved for developers and experienced
24  * professionals having in-depth computer knowledge. Users are therefore
25  * encouraged to load and test the software's suitability as regards their
26  * requirements in conditions enabling the security of their systems and/or
27  * data to be ensured and, more generally, to use and operate it in the
28  * same conditions as regards security.
29  *
30  * The fact that you are presently reading this means that you have had
31  * knowledge of the CeCILL-B license and that you accept its terms.
32  */
33 
34 
35 #ifndef AIMS_MATH_GRADIENT_H
36 #define AIMS_MATH_GRADIENT_H
37 
38 
40 
48 {
55 };
56 
57 
63 {
72 };
73 
76 {
109 };
110 
113 {
242 };
243 
245 
246 
250 template <class C>
252 { protected :
255  int _type;
258 
259  public :
265  AimsGradient(int type=AIMS_GRADIENT_CENTRAL) { _type = type;}
267  virtual ~ AimsGradient() {}
269 
272  AimsData<C> X(const AimsData<C> &data);
275  AimsData<C> Y(const AimsData<C> &data);
277  AimsData<C> Z(const AimsData<C> &data);
279  AimsData<C> T(const AimsData<C> &data);
281 
284  AimsData<C> XX(const AimsData<C> &data);
287  AimsData<C> XY(const AimsData<C> &data);
289  AimsData<C> XZ(const AimsData<C> &data);
291  AimsData<C> XT(const AimsData<C> &data);
293  AimsData<C> YX(const AimsData<C> &data);
295  AimsData<C> YY(const AimsData<C> &data);
297  AimsData<C> YZ(const AimsData<C> &data);
299  AimsData<C> YT(const AimsData<C> &data);
301  AimsData<C> ZX(const AimsData<C> &data);
303  AimsData<C> ZY(const AimsData<C> &data);
305  AimsData<C> ZZ(const AimsData<C> &data);
307  AimsData<C> ZT(const AimsData<C> &data);
309  AimsData<C> TX(const AimsData<C> &data);
311  AimsData<C> TY(const AimsData<C> &data);
313  AimsData<C> TZ(const AimsData<C> &data);
315  AimsData<C> TT(const AimsData<C> &data);
317 
320  AimsData<C> XXX(const AimsData<C> &data);
323  AimsData<C> XXY(const AimsData<C> &data);
325  AimsData<C> XXZ(const AimsData<C> &data);
327  AimsData<C> XXT(const AimsData<C> &data);
329  AimsData<C> XYX(const AimsData<C> &data);
331  AimsData<C> XYY(const AimsData<C> &data);
333  AimsData<C> XYZ(const AimsData<C> &data);
335  AimsData<C> XYT(const AimsData<C> &data);
337  AimsData<C> XZX(const AimsData<C> &data);
339  AimsData<C> XZY(const AimsData<C> &data);
341  AimsData<C> XZZ(const AimsData<C> &data);
343  AimsData<C> XZT(const AimsData<C> &data);
345  AimsData<C> XTX(const AimsData<C> &data);
347  AimsData<C> XTY(const AimsData<C> &data);
349  AimsData<C> XTZ(const AimsData<C> &data);
351  AimsData<C> XTT(const AimsData<C> &data);
353  AimsData<C> YXX(const AimsData<C> &data);
355  AimsData<C> YXY(const AimsData<C> &data);
357  AimsData<C> YXZ(const AimsData<C> &data);
359  AimsData<C> YXT(const AimsData<C> &data);
361  AimsData<C> YYX(const AimsData<C> &data);
363  AimsData<C> YYY(const AimsData<C> &data);
365  AimsData<C> YYZ(const AimsData<C> &data);
367  AimsData<C> YYT(const AimsData<C> &data);
369  AimsData<C> YZX(const AimsData<C> &data);
371  AimsData<C> YZY(const AimsData<C> &data);
373  AimsData<C> YZZ(const AimsData<C> &data);
375  AimsData<C> YZT(const AimsData<C> &data);
377  AimsData<C> YTX(const AimsData<C> &data);
379  AimsData<C> YTY(const AimsData<C> &data);
381  AimsData<C> YTZ(const AimsData<C> &data);
383  AimsData<C> YTT(const AimsData<C> &data);
385  AimsData<C> ZXX(const AimsData<C> &data);
387  AimsData<C> ZXY(const AimsData<C> &data);
389  AimsData<C> ZXZ(const AimsData<C> &data);
391  AimsData<C> ZXT(const AimsData<C> &data);
393  AimsData<C> ZYX(const AimsData<C> &data);
395  AimsData<C> ZYY(const AimsData<C> &data);
397  AimsData<C> ZYZ(const AimsData<C> &data);
399  AimsData<C> ZYT(const AimsData<C> &data);
401  AimsData<C> ZZX(const AimsData<C> &data);
403  AimsData<C> ZZY(const AimsData<C> &data);
405  AimsData<C> ZZZ(const AimsData<C> &data);
407  AimsData<C> ZZT(const AimsData<C> &data);
409  AimsData<C> ZTX(const AimsData<C> &data);
411  AimsData<C> ZTY(const AimsData<C> &data);
413  AimsData<C> ZTZ(const AimsData<C> &data);
415  AimsData<C> ZTT(const AimsData<C> &data);
417  AimsData<C> TXX(const AimsData<C> &data);
419  AimsData<C> TXY(const AimsData<C> &data);
421  AimsData<C> TXZ(const AimsData<C> &data);
423  AimsData<C> TXT(const AimsData<C> &data);
425  AimsData<C> TYX(const AimsData<C> &data);
427  AimsData<C> TYY(const AimsData<C> &data);
429  AimsData<C> TYZ(const AimsData<C> &data);
431  AimsData<C> TYT(const AimsData<C> &data);
433  AimsData<C> TZX(const AimsData<C> &data);
435  AimsData<C> TZY(const AimsData<C> &data);
437  AimsData<C> TZZ(const AimsData<C> &data);
439  AimsData<C> TZT(const AimsData<C> &data);
441  AimsData<C> TTX(const AimsData<C> &data);
443  AimsData<C> TTY(const AimsData<C> &data);
445  AimsData<C> TTZ(const AimsData<C> &data);
447  AimsData<C> TTT(const AimsData<C> &data);
449 };
450 
451 
452 
453 
454 /* gradient 1st order */
455 
456 template <class C> inline
458 {
459  int beginx=0,endx=0,offx1=0,offx2=0;
460  float divx=0;
461 
462  aims::AimsFastAllocationData<C> grad(data.dimX(),data.dimY(),data.dimZ(),data.dimT(),
463  data.borderWidth());
464  grad = (C)0;
465  grad.fillBorder(0);
466  grad.setHeader(data.header()->cloneHeader());
467 
468  switch (_type)
469  {
470  case AIMS_GRADIENT_CENTRAL :
471  beginx = 1;endx = data.dimX()-1;
472  offx1=1;offx2=1;
473  divx=2 * data.sizeX();
474  break;
475  case AIMS_GRADIENT_DMINUS :
476  beginx = 1;endx = data.dimX() ;
477  offx1=1;offx2=0;
478  divx=data.sizeX();
479  break;
480  case AIMS_GRADIENT_DPLUS :
481  beginx = 0;endx = data.dimX()-1;
482  offx1=0;offx2=1;
483  divx=data.sizeX();
484  break;
485  }
486 
487  for (int t=0;t<data.dimT();t++)
488  for (int z=0;z<data.dimZ();z++)
489  for (int y=0;y<data.dimY();y++)
490  for (int x=beginx;x<endx;x++)
491  grad(x,y,z,t) = (C)( ((float)data(x+offx2,y,z,t) -
492  (float)data(x-offx1,y,z,t)) / divx);
493  return(grad);
494 }
495 
496 
497 template <class C> inline
499 {
500  int beginy=0,endy=0,offy1=0,offy2=0;
501  float divy=0;
502 
503  aims::AimsFastAllocationData<C> grad(data.dimX(),data.dimY(),data.dimZ(),data.dimT(),
504  data.borderWidth());
505  grad = (C)0;
506  grad.fillBorder(0);
507  grad.setHeader(data.header()->cloneHeader());
508 
509  switch (_type)
510  { case AIMS_GRADIENT_CENTRAL : beginy = 1;endy = data.dimY()-1;
511  offy1=1;offy2=1;divy=2 * data.sizeY();break;
512  case AIMS_GRADIENT_DMINUS : beginy = 1;endy = data.dimY() ;
513  offy1=1;offy2=0;divy=data.sizeY();break;
514  case AIMS_GRADIENT_DPLUS : beginy = 0;endy = data.dimY()-1;
515  offy1=0;offy2=1;divy=data.sizeY();break;
516  }
517 
518  for (int t=0;t<data.dimT();t++)
519  for (int z=0;z<data.dimZ();z++)
520  for (int y=beginy;y<endy;y++)
521  for (int x=0;x<data.dimX();x++)
522  grad(x,y,z,t) = (C)(((float)data(x,y+offy2,z,t) -
523  (float)data(x,y-offy1,z,t)) / divy);
524  return(grad);
525 }
526 
527 
528 template <class C> inline
530 {
531  int beginz=0,endz=0,offz1=0,offz2=0;
532  float divz=0;
533 
534  aims::AimsFastAllocationData<C> grad(data.dimX(),data.dimY(),data.dimZ(),data.dimT(),
535  data.borderWidth());
536  grad = (C)0;
537  grad.fillBorder(0);
538  grad.setHeader(data.header()->cloneHeader());
539 
540  switch (_type)
541  { case AIMS_GRADIENT_CENTRAL : beginz = 1;endz = data.dimZ()-1;
542  offz1=1;offz2=1;divz=2 * data.sizeZ();break;
543  case AIMS_GRADIENT_DMINUS : beginz = 1;endz = data.dimZ() ;
544  offz1=1;offz2=0;divz=data.sizeZ();break;
545  case AIMS_GRADIENT_DPLUS : beginz = 0;endz = data.dimZ()-1;
546  offz1=0;offz2=1;divz=data.sizeZ();break;
547  }
548 
549  for (int t=0;t<data.dimT();t++)
550  for (int z=beginz;z<endz;z++)
551  for (int y=0;y<data.dimY();y++)
552  for (int x=0;x<data.dimX();x++)
553  grad(x,y,z,t) = (C)(((float)data(x,y,z+offz2,t) -
554  (float)data(x,y,z-offz1,t)) / divz);
555  return(grad);
556 }
557 
558 
559 template <class C> inline
561 {
562  int begint=0,endt=0,offt1=0,offt2=0;
563  float divt=0;
564 
565  aims::AimsFastAllocationData<C> grad(data.dimX(),data.dimY(),data.dimZ(),data.dimT(),
566  data.borderWidth());
567  grad = (C)0;
568  grad.fillBorder(0);
569  grad.setHeader(data.header()->cloneHeader());
570 
571  switch (_type)
572  { case AIMS_GRADIENT_CENTRAL : begint = 1;endt = data.dimY()-1;
573  offt1=1;offt2=1;divt=2 * data.sizeT();break;
574  case AIMS_GRADIENT_DMINUS : begint = 1;endt = data.dimY() ;
575  offt1=1;offt2=0;divt=data.sizeT();break;
576  case AIMS_GRADIENT_DPLUS : begint = 0;endt = data.dimY()-1;
577  offt1=0;offt2=1;divt=data.sizeT();break;
578  }
579 
580  for (int t=begint;t<endt;t++)
581  for (int z=0;z<data.dimZ();z++)
582  for (int y=0;y<data.dimY();y++)
583  for (int x=0;x<data.dimX();x++)
584  grad(x,y,z,t) = (C)(((float)data(x,y,z,t+offt2) -
585  (float)data(x,y,z,t-offt1)) / divt);
586  return(grad);
587 }
588 
589 
590 /* gradient 2nd order */
591 
592 template <class C> inline
594 { return(X(X(data)));
595 }
596 
597 template <class C> inline
599 { return(X(Y(data)));
600 }
601 
602 template <class C> inline
604 { return(X(Z(data)));
605 }
606 
607 template <class C> inline
609 { return(X(T(data)));
610 }
611 
612 
613 template <class C> inline
615 { return(Y(X(data)));
616 }
617 
618 template <class C> inline
620 { return(Y(Y(data)));
621 }
622 
623 template <class C> inline
625 { return(Y(Z(data)));
626 }
627 
628 template <class C> inline
630 { return(Y(T(data)));
631 }
632 
633 
634 template <class C> inline
636 { return(Z(X(data)));
637 }
638 
639 template <class C> inline
641 { return(Z(Y(data)));
642 }
643 
644 template <class C> inline
646 { return(Z(Z(data)));
647 }
648 
649 template <class C> inline
651 { return(Z(T(data)));
652 }
653 
654 
655 template <class C> inline
657 { return(T(X(data)));
658 }
659 
660 template <class C> inline
662 { return(T(Y(data)));
663 }
664 
665 template <class C> inline
667 { return(T(Z(data)));
668 }
669 
670 template <class C> inline
672 { return(T(T(data)));
673 }
674 
675 
676 /* gradient 3rd order */
677 
678 template <class C> inline
680 { return(X(XX(data)));
681 }
682 
683 template <class C> inline
685 { return(X(XY(data)));
686 }
687 
688 template <class C> inline
690 { return(X(XZ(data)));
691 }
692 
693 template <class C> inline
695 { return(X(XT(data)));
696 }
697 
698 
699 template <class C> inline
701 { return(X(YX(data)));
702 }
703 
704 template <class C> inline
706 { return(X(YY(data)));
707 }
708 
709 template <class C> inline
711 { return(X(YZ(data)));
712 }
713 
714 template <class C> inline
716 { return(X(YT(data)));
717 }
718 
719 
720 template <class C> inline
722 { return(X(ZX(data)));
723 }
724 
725 template <class C> inline
727 { return(X(ZY(data)));
728 }
729 
730 template <class C> inline
732 { return(X(ZZ(data)));
733 }
734 
735 template <class C> inline
737 { return(X(ZT(data)));
738 }
739 
740 
741 template <class C> inline
743 { return(X(TX(data)));
744 }
745 
746 template <class C> inline
748 { return(X(TY(data)));
749 }
750 
751 template <class C> inline
753 { return(X(TZ(data)));
754 }
755 
756 template <class C> inline
758 { return(X(TT(data)));
759 }
760 
761 
762 template <class C> inline
764 { return(Y(XX(data)));
765 }
766 
767 template <class C> inline
769 { return(Y(XY(data)));
770 }
771 
772 template <class C> inline
774 { return(Y(XZ(data)));
775 }
776 
777 template <class C> inline
779 { return(Y(XT(data)));
780 }
781 
782 
783 template <class C> inline
785 { return(Y(YX(data)));
786 }
787 
788 template <class C> inline
790 { return(Y(YY(data)));
791 }
792 
793 template <class C> inline
795 { return(Y(YZ(data)));
796 }
797 
798 template <class C> inline
800 { return(Y(YT(data)));
801 }
802 
803 
804 template <class C> inline
806 { return(Y(ZX(data)));
807 }
808 
809 template <class C> inline
811 { return(Y(ZY(data)));
812 }
813 
814 template <class C> inline
816 { return(Y(ZZ(data)));
817 }
818 
819 template <class C> inline
821 { return(Y(ZT(data)));
822 }
823 
824 
825 template <class C> inline
827 { return(Y(TX(data)));
828 }
829 
830 template <class C> inline
832 { return(Y(TY(data)));
833 }
834 
835 template <class C> inline
837 { return(Y(TZ(data)));
838 }
839 
840 template <class C> inline
842 { return(Y(TT(data)));
843 }
844 
845 
846 template <class C> inline
848 { return(Z(XX(data)));
849 }
850 
851 template <class C> inline
853 { return(Z(XY(data)));
854 }
855 
856 template <class C> inline
858 { return(Z(XZ(data)));
859 }
860 
861 template <class C> inline
863 { return(Z(XT(data)));
864 }
865 
866 
867 template <class C> inline
869 { return(Z(YX(data)));
870 }
871 
872 template <class C> inline
874 { return(Z(YY(data)));
875 }
876 
877 template <class C> inline
879 { return(Z(YZ(data)));
880 }
881 
882 template <class C> inline
884 { return(Z(YT(data)));
885 }
886 
887 
888 template <class C> inline
890 { return(Z(ZX(data)));
891 }
892 
893 template <class C> inline
895 { return(Z(ZY(data)));
896 }
897 
898 template <class C> inline
900 { return(Z(ZZ(data)));
901 }
902 
903 template <class C> inline
905 { return(Z(ZT(data)));
906 }
907 
908 
909 template <class C> inline
911 { return(Z(TX(data)));
912 }
913 
914 template <class C> inline
916 { return(Z(TY(data)));
917 }
918 
919 template <class C> inline
921 { return(Z(TZ(data)));
922 }
923 
924 template <class C> inline
926 { return(Z(TT(data)));
927 }
928 
929 
930 template <class C> inline
932 { return(T(XX(data)));
933 }
934 
935 template <class C> inline
937 { return(T(XY(data)));
938 }
939 
940 template <class C> inline
942 { return(T(XZ(data)));
943 }
944 
945 template <class C> inline
947 { return(T(XT(data)));
948 }
949 
950 
951 template <class C> inline
953 { return(T(YX(data)));
954 }
955 
956 template <class C> inline
958 { return(T(YY(data)));
959 }
960 
961 template <class C> inline
963 { return(T(YZ(data)));
964 }
965 
966 template <class C> inline
968 { return(T(YT(data)));
969 }
970 
971 
972 template <class C> inline
974 { return(T(ZX(data)));
975 }
976 
977 template <class C> inline
979 { return(T(ZY(data)));
980 }
981 
982 template <class C> inline
984 { return(T(ZZ(data)));
985 }
986 
987 template <class C> inline
989 { return(T(ZT(data)));
990 }
991 
992 
993 template <class C> inline
995 { return(T(TX(data)));
996 }
997 
998 template <class C> inline
1000 { return(T(TY(data)));
1001 }
1002 
1003 template <class C> inline
1005 { return(T(TZ(data)));
1006 }
1007 
1008 template <class C> inline
1010 { return(T(TT(data)));
1011 }
1012 
1013 #endif
AimsData< C > YT(const AimsData< C > &data)
d2(data)/dydt = YT(data)
Definition: gradient.h:629
AimsData< C > YX(const AimsData< C > &data)
d2(data)/dydx = YX(data)
Definition: gradient.h:614
The template class for estimating gradients.
Definition: gradient.h:251
AimsData< C > YYZ(const AimsData< C > &data)
d3(data)/dy2dz = YYZ(data)
Definition: gradient.h:794
AimsData< C > XXX(const AimsData< C > &data)
d3(data)/dx3 = XXX(data)
Definition: gradient.h:679
AimsData< C > YYX(const AimsData< C > &data)
d3(data)/dy2dx = YYX(data)
Definition: gradient.h:784
AimsData< C > TXZ(const AimsData< C > &data)
d3(data)/dtdxdz = TXZ(data)
Definition: gradient.h:941
AimsData< C > TYT(const AimsData< C > &data)
d3(data)/dtdydt = TYT(data)
Definition: gradient.h:967
AimsData< C > XY(const AimsData< C > &data)
d2(data)/dxdy = XY(data)
Definition: gradient.h:598
AimsData< C > XTY(const AimsData< C > &data)
d3(data)/dxdtdy = XTY(data)
Definition: gradient.h:747
int dimZ() const
AimsData< C > YZ(const AimsData< C > &data)
d2(data)/dydz = YZ(data)
Definition: gradient.h:624
AimsData< C > ZXT(const AimsData< C > &data)
d3(data)/dzdxdt = ZXT(data)
Definition: gradient.h:862
AimsData< C > ZY(const AimsData< C > &data)
d2(data)/dzdy = ZY(data)
Definition: gradient.h:640
AimsData< C > TTZ(const AimsData< C > &data)
d3(data)/dt2dz = TTZ(data)
Definition: gradient.h:1004
AimsData< C > ZZT(const AimsData< C > &data)
d3(data)/dz2dt = ZZT(data)
Definition: gradient.h:904
AimsData< C > T(const AimsData< C > &data)
d(data)/dt = AimsGradientT(data)
Definition: gradient.h:560
AimsData< C > ZXY(const AimsData< C > &data)
d3(data)/dzdxdy = ZXY(data)
Definition: gradient.h:852
AimsData< C > ZXZ(const AimsData< C > &data)
d3(data)/dzdxdz = ZXZ(data)
Definition: gradient.h:857
AimsData< C > TZ(const AimsData< C > &data)
d2(data)/dtdz = TZ(data)
Definition: gradient.h:666
AimsData< C > YYY(const AimsData< C > &data)
d3(data)/dy3 = YYY(data)
Definition: gradient.h:789
AimsData< C > TYY(const AimsData< C > &data)
d3(data)/dtdy2 = TYY(data)
Definition: gradient.h:957
float sizeZ() const
AimsData< C > XX(const AimsData< C > &data)
d2(data)/dx2 = XX(data)
Definition: gradient.h:593
AimsData< C > YTT(const AimsData< C > &data)
d3(data)/dydt2 = YTT(data)
Definition: gradient.h:841
int dimY() const
AimsData< C > XZY(const AimsData< C > &data)
d3(data)/dxdzdy = XZY(data)
Definition: gradient.h:726
AimsData< C > X(const AimsData< C > &data)
d(data)/dx = AimsGradientX(data)
Definition: gradient.h:457
float sizeT() const
AimsFirstOrderGradient
First order.
Definition: gradient.h:62
AimsData< C > ZTT(const AimsData< C > &data)
d3(data)/dzdt2 = ZTT(data)
Definition: gradient.h:925
AimsData< C > TX(const AimsData< C > &data)
d2(data)/dtdx = TX(data)
Definition: gradient.h:656
AimsData< C > YXT(const AimsData< C > &data)
d3(data)/dydxdt = YXT(data)
Definition: gradient.h:778
AimsData< C > XYZ(const AimsData< C > &data)
d3(data)/dxdydz = XYZ(data)
Definition: gradient.h:710
AimsData< C > ZTX(const AimsData< C > &data)
d3(data)/dzdtdx = ZTX(data)
Definition: gradient.h:910
AimsData< C > TT(const AimsData< C > &data)
d2(data)/dt2 = TT(data)
Definition: gradient.h:671
AimsData< C > XZ(const AimsData< C > &data)
d2(data)/dxdz = XZ(data)
Definition: gradient.h:603
void setHeader(aims::Header *hdr)
AimsData< C > TTX(const AimsData< C > &data)
d3(data)/dt2dx = TTX(data)
Definition: gradient.h:994
AimsData< C > TYX(const AimsData< C > &data)
d3(data)/dtdydx = TYX(data)
Definition: gradient.h:952
AimsData< C > YXY(const AimsData< C > &data)
d3(data)/dydxdy = YXY(data)
Definition: gradient.h:768
float sizeX() const
AimsData< C > XYY(const AimsData< C > &data)
d3(data)/dxdy2 = XYY(data)
Definition: gradient.h:705
int _type
Type of the gradient.
Definition: gradient.h:256
virtual Header * cloneHeader(bool keepUuid=false) const=0
AimsData< C > XYT(const AimsData< C > &data)
d3(data)/dxdydt = XYT(data)
Definition: gradient.h:715
AimsData< C > XZZ(const AimsData< C > &data)
d3(data)/dxdz2 = XZZ(data)
Definition: gradient.h:731
AimsData< C > TY(const AimsData< C > &data)
d2(data)/dtdy = TY(data)
Definition: gradient.h:661
AimsData< C > YTX(const AimsData< C > &data)
d3(data)/dydtdx = YTX(data)
Definition: gradient.h:826
AimsThirdOrderGradient
Third order.
Definition: gradient.h:112
AimsData< C > Y(const AimsData< C > &data)
d(data)/dy = AimsGradientY(data)
Definition: gradient.h:498
AimsData< C > YZX(const AimsData< C > &data)
d3(data)/dydzdx = YZX(data)
Definition: gradient.h:805
AimsData< C > YY(const AimsData< C > &data)
d2(data)/dy2 = YY(data)
Definition: gradient.h:619
AimsData< C > XT(const AimsData< C > &data)
d2(data)/dxdt = XT(data)
Definition: gradient.h:608
AimsData< C > TZZ(const AimsData< C > &data)
d3(data)/dtdz2 = TZZ(data)
Definition: gradient.h:983
AimsData< C > TZX(const AimsData< C > &data)
d3(data)/dtdzdx = TZX(data)
Definition: gradient.h:973
virtual ~ AimsGradient()
Destructor does nothing.
Definition: gradient.h:267
void fillBorder(const T &val)
AimsData< C > YZZ(const AimsData< C > &data)
d3(data)/dydz2 = YZZ(data)
Definition: gradient.h:815
AimsData< C > TZT(const AimsData< C > &data)
d3(data)/dtdzdt = TZT(data)
Definition: gradient.h:988
AimsData< C > ZZX(const AimsData< C > &data)
d3(data)/dz2dx = ZZX(data)
Definition: gradient.h:889
AimsData< C > XXZ(const AimsData< C > &data)
d3(data)/dx2dz = XXZ(data)
Definition: gradient.h:689
AimsData< C > ZYT(const AimsData< C > &data)
d3(data)/dzdydt = ZYT(data)
Definition: gradient.h:883
AimsData< C > Z(const AimsData< C > &data)
d(data)/dz = AimsGradientZ(data)
Definition: gradient.h:529
AimsData< C > YXX(const AimsData< C > &data)
d3(data)/dydx2 = YXX(data)
Definition: gradient.h:763
AimsData< C > XZT(const AimsData< C > &data)
d3(data)/dxdzdt = XZT(data)
Definition: gradient.h:736
AimsData< C > XXT(const AimsData< C > &data)
d3(data)/dx2dt = XXT(data)
Definition: gradient.h:694
AimsSecondOrderGradient
Second order.
Definition: gradient.h:75
AimsData< C > ZXX(const AimsData< C > &data)
d3(data)/dzdx2 = ZXX(data)
Definition: gradient.h:847
AimsData< C > ZTZ(const AimsData< C > &data)
d3(data)/dzdtdz = ZTZ(data)
Definition: gradient.h:920
AimsData< C > ZZZ(const AimsData< C > &data)
d3(data)/dz3 = ZZZ(data)
Definition: gradient.h:899
AimsGradient(int type=AIMS_GRADIENT_CENTRAL)
One argument can be give to the constructor :
Definition: gradient.h:265
AimsData< C > YTY(const AimsData< C > &data)
d3(data)/dydtdy = YTY(data)
Definition: gradient.h:831
AimsData< C > ZYY(const AimsData< C > &data)
d3(data)/dzdy2 = ZYY(data)
Definition: gradient.h:873
const aims::Header * header() const
AimsData< C > ZZY(const AimsData< C > &data)
d3(data)/dz2dy = ZZY(data)
Definition: gradient.h:894
AimsData< C > TXT(const AimsData< C > &data)
d3(data)/dtdxdt = TXT(data)
Definition: gradient.h:946
AimsData< C > TYZ(const AimsData< C > &data)
d3(data)/dtdydz = TYZ(data)
Definition: gradient.h:962
AimsData< C > ZX(const AimsData< C > &data)
d2(data)/dzdx = ZX(data)
Definition: gradient.h:635
AimsData< C > ZYX(const AimsData< C > &data)
d3(data)/dzdydx = ZYX(data)
Definition: gradient.h:868
float sizeY() const
AimsData< C > XXY(const AimsData< C > &data)
d3(data)/dx2dy = XXY(data)
Definition: gradient.h:684
AimsData< C > XTX(const AimsData< C > &data)
d3(data)/dxdtdx = XTX(data)
Definition: gradient.h:742
AimsData< C > ZT(const AimsData< C > &data)
d2(data)/dzdt = ZT(data)
Definition: gradient.h:650
AimsData< C > XZX(const AimsData< C > &data)
d3(data)/dxdzdx = XZX(data)
Definition: gradient.h:721
AimsData< C > ZTY(const AimsData< C > &data)
d3(data)/dzdtdy = ZTY(data)
Definition: gradient.h:915
AimsData< C > TTT(const AimsData< C > &data)
d3(data)/dt3 = TTT(data)
Definition: gradient.h:1009
AimsData< C > TZY(const AimsData< C > &data)
d3(data)/dtdzdy = TZY(data)
Definition: gradient.h:978
int dimT() const
AimsData< C > ZZ(const AimsData< C > &data)
d2(data)/dz2 = ZZ(data)
Definition: gradient.h:645
AimsData< C > TXX(const AimsData< C > &data)
d3(data)/dtdx2 = TXX(data)
Definition: gradient.h:931
AimsData< C > TTY(const AimsData< C > &data)
d3(data)/dt2dy = TTY(data)
Definition: gradient.h:999
AimsData< C > YXZ(const AimsData< C > &data)
d3(data)/dydxdz = YXZ(data)
Definition: gradient.h:773
AimsData< C > XTZ(const AimsData< C > &data)
d3(data)/dxdtdz = XTZ(data)
Definition: gradient.h:752
AimsData< C > YZY(const AimsData< C > &data)
d3(data)/dydzdy = YZY(data)
Definition: gradient.h:810
AimsData< C > YTZ(const AimsData< C > &data)
d3(data)/dydtdz = YTZ(data)
Definition: gradient.h:836
AimsData< C > XTT(const AimsData< C > &data)
d3(data)/dxdt2 = XTT(data)
Definition: gradient.h:757
AimsData< C > XYX(const AimsData< C > &data)
d3(data)/dxdydx = XYX(data)
Definition: gradient.h:700
AimsData< C > TXY(const AimsData< C > &data)
d3(data)/dtdxdy = TXY(data)
Definition: gradient.h:936
AimsData< C > ZYZ(const AimsData< C > &data)
d3(data)/dzdydz = ZYZ(data)
Definition: gradient.h:878
AimsData< C > YYT(const AimsData< C > &data)
d3(data)/dy2dt = YYT(data)
Definition: gradient.h:799
AimsGradientMethod
Gradient methods.
Definition: gradient.h:47
AimsData< C > YZT(const AimsData< C > &data)
d3(data)/dydzdt = YZT(data)
Definition: gradient.h:820
int dimX() const
int borderWidth() const