aimsalgo 6.0.0
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
39#include <cartodata/volume/volume.h>
40
56
57
61
73
110
113{
242};
243
245
246
250template <class C>
252{ protected :
255
256 int _type;
258
259 public :
262
267 virtual ~ AimsGradient() {}
269
272
281
284
317
320
449};
450
451
452
453
454/* gradient 1st order */
455
456template <class C> inline
458 const carto::rc_ptr<carto::Volume<C> > &data)
459{
460 int beginx=0,endx=0,offx1=0,offx2=0;
461 float divx=0;
462 std::vector<int> dims = data->getSize();
463 std::vector<float> vs = data->getVoxelSize();
464
465 carto::VolumeRef<C> grad( dims, data->getBorders() );
466 grad = (C)0;
467 grad.fillBorder(0);
468 grad.copyHeaderFrom( data->header() );
469
470 switch (_type)
471 {
473 beginx = 1;
474 endx = dims[0]-1;
475 offx1 = 1;
476 offx2 = 1;
477 divx = 2 * vs[0];
478 break;
480 beginx = 1;
481 endx = dims[0];
482 offx1 = 1;
483 offx2 = 0;
484 divx = vs[0];
485 break;
487 beginx = 0;
488 endx = dims[0]-1;
489 offx1 = 0;
490 offx2 = 1;
491 divx = vs[0];
492 break;
493 }
494
495 for (int t=0;t<dims[3];t++)
496 for (int z=0;z<dims[2];z++)
497 for (int y=0;y<dims[1];y++)
498 for (int x=beginx;x<endx;x++)
499 grad(x,y,z,t) = (C)( ((float)data->at(x+offx2,y,z,t) -
500 (float)data->at(x-offx1,y,z,t)) / divx);
501 return grad;
502}
503
504
505template <class C> inline
507 const carto::rc_ptr<carto::Volume<C> > &data)
508{
509 int beginy=0,endy=0,offy1=0,offy2=0;
510 float divy=0;
511 std::vector<int> dims = data->getSize();
512 std::vector<float> vs = data->getVoxelSize();
513
514 carto::VolumeRef<C> grad( dims, data->getBorders() );
515 grad = (C)0;
516 grad.fillBorder(0);
517 grad.copyHeaderFrom( data->header() );
518
519 switch (_type)
520 { case AIMS_GRADIENT_CENTRAL : beginy = 1;endy = dims[1]-1;
521 offy1=1;offy2=1;divy=2 * vs[1];break;
522 case AIMS_GRADIENT_DMINUS : beginy = 1;endy = dims[1] ;
523 offy1=1;offy2=0;divy=vs[1];break;
524 case AIMS_GRADIENT_DPLUS : beginy = 0;endy = dims[1]-1;
525 offy1=0;offy2=1;divy=vs[1];break;
526 }
527
528 for (int t=0;t<dims[3];t++)
529 for (int z=0;z<dims[2];z++)
530 for (int y=beginy;y<endy;y++)
531 for (int x=0;x<dims[0];x++)
532 grad(x,y,z,t) = (C)(((float)data->at(x,y+offy2,z,t) -
533 (float)data->at(x,y-offy1,z,t)) / divy);
534 return grad;
535}
536
537
538template <class C> inline
540 const carto::rc_ptr<carto::Volume<C> > &data)
541{
542 int beginz=0,endz=0,offz1=0,offz2=0;
543 float divz=0;
544 std::vector<int> dims = data->getSize();
545 std::vector<float> vs = data->getVoxelSize();
546
547 carto::VolumeRef<C> grad( dims, data->getBorders() );
548 grad = (C)0;
549 grad.fillBorder(0);
550 grad.copyHeaderFrom( data->header() );
551
552 switch (_type)
553 { case AIMS_GRADIENT_CENTRAL : beginz = 1;endz = dims[2]-1;
554 offz1=1;offz2=1;divz=2 * vs[2];break;
555 case AIMS_GRADIENT_DMINUS : beginz = 1;endz = dims[2] ;
556 offz1=1;offz2=0;divz=vs[2];break;
557 case AIMS_GRADIENT_DPLUS : beginz = 0;endz = dims[2]-1;
558 offz1=0;offz2=1;divz=vs[2];break;
559 }
560
561 for (int t=0;t<dims[3];t++)
562 for (int z=beginz;z<endz;z++)
563 for (int y=0;y<dims[1];y++)
564 for (int x=0;x<dims[0];x++)
565 grad(x,y,z,t) = (C)(((float)data->at(x,y,z+offz2,t) -
566 (float)data->at(x,y,z-offz1,t)) / divz);
567 return grad;
568}
569
570
571template <class C> inline
573 const carto::rc_ptr<carto::Volume<C> > &data)
574{
575 int begint=0,endt=0,offt1=0,offt2=0;
576 float divt=0;
577 std::vector<int> dims = data->getSize();
578 std::vector<float> vs = data->getVoxelSize();
579
580 carto::VolumeRef<C> grad( dims, data->getBorders() );
581 grad = (C)0;
582 grad.fillBorder(0);
583 grad.copyHeaderFrom( data->header() );
584
585 switch (_type)
586 { case AIMS_GRADIENT_CENTRAL : begint = 1;endt = dims[3]-1;
587 offt1=1;offt2=1;divt=2 * vs[3];break;
588 case AIMS_GRADIENT_DMINUS : begint = 1;endt = dims[3] ;
589 offt1=1;offt2=0;divt=vs[3];break;
590 case AIMS_GRADIENT_DPLUS : begint = 0;endt = dims[3]-1;
591 offt1=0;offt2=1;divt=vs[3];break;
592 }
593
594 for (int t=begint;t<endt;t++)
595 for (int z=0;z<dims[2];z++)
596 for (int y=0;y<dims[1];y++)
597 for (int x=0;x<dims[0];x++)
598 grad(x,y,z,t) = (C)(((float)data->at(x,y,z,t+offt2) -
599 (float)data->at(x,y,z,t-offt1)) / divt);
600 return grad;
601}
602
603
604/* gradient 2nd order */
605
606template <class C> inline
610
611template <class C> inline
615
616template <class C> inline
620
621template <class C> inline
625
626
627template <class C> inline
631
632template <class C> inline
636
637template <class C> inline
641
642template <class C> inline
646
647
648template <class C> inline
652
653template <class C> inline
657
658template <class C> inline
662
663template <class C> inline
667
668
669template <class C> inline
673
674template <class C> inline
678
679template <class C> inline
683
684template <class C> inline
688
689
690/* gradient 3rd order */
691
692template <class C> inline
696
697template <class C> inline
701
702template <class C> inline
706
707template <class C> inline
711
712
713template <class C> inline
717
718template <class C> inline
722
723template <class C> inline
727
728template <class C> inline
732
733
734template <class C> inline
738
739template <class C> inline
743
744template <class C> inline
748
749template <class C> inline
753
754
755template <class C> inline
759
760template <class C> inline
764
765template <class C> inline
769
770template <class C> inline
774
775
776template <class C> inline
780
781template <class C> inline
785
786template <class C> inline
790
791template <class C> inline
795
796
797template <class C> inline
801
802template <class C> inline
806
807template <class C> inline
811
812template <class C> inline
816
817
818template <class C> inline
822
823template <class C> inline
827
828template <class C> inline
832
833template <class C> inline
837
838
839template <class C> inline
843
844template <class C> inline
848
849template <class C> inline
853
854template <class C> inline
858
859
860template <class C> inline
864
865template <class C> inline
869
870template <class C> inline
874
875template <class C> inline
879
880
881template <class C> inline
885
886template <class C> inline
890
891template <class C> inline
895
896template <class C> inline
900
901
902template <class C> inline
906
907template <class C> inline
911
912template <class C> inline
916
917template <class C> inline
921
922
923template <class C> inline
927
928template <class C> inline
932
933template <class C> inline
937
938template <class C> inline
942
943
944template <class C> inline
948
949template <class C> inline
953
954template <class C> inline
958
959template <class C> inline
963
964
965template <class C> inline
969
970template <class C> inline
974
975template <class C> inline
979
980template <class C> inline
984
985
986template <class C> inline
990
991template <class C> inline
995
996template <class C> inline
1000
1001template <class C> inline
1005
1006
1007template <class C> inline
1011
1012template <class C> inline
1016
1017template <class C> inline
1021
1022template <class C> inline
1026
1027#endif
carto::VolumeRef< C > XYY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdy2 = XYY(data)
Definition gradient.h:719
carto::VolumeRef< C > XXZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dx2dz = XXZ(data)
Definition gradient.h:703
carto::VolumeRef< C > YZX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydzdx = YZX(data)
Definition gradient.h:819
carto::VolumeRef< C > TYY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdy2 = TYY(data)
Definition gradient.h:971
carto::VolumeRef< C > YZ(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dydz = YZ(data)
Definition gradient.h:638
carto::VolumeRef< C > ZTZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdtdz = ZTZ(data)
Definition gradient.h:934
carto::VolumeRef< C > T(const carto::rc_ptr< carto::Volume< C > > &data)
d(data)/dt = AimsGradientT(data)
Definition gradient.h:572
carto::VolumeRef< C > XYX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdydx = XYX(data)
Definition gradient.h:714
carto::VolumeRef< C > TXX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdx2 = TXX(data)
Definition gradient.h:945
carto::VolumeRef< C > YZY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydzdy = YZY(data)
Definition gradient.h:824
carto::VolumeRef< C > ZZX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dz2dx = ZZX(data)
Definition gradient.h:903
carto::VolumeRef< C > ZTY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdtdy = ZTY(data)
Definition gradient.h:929
carto::VolumeRef< C > YYX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dy2dx = YYX(data)
Definition gradient.h:798
carto::VolumeRef< C > YTZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydtdz = YTZ(data)
Definition gradient.h:850
carto::VolumeRef< C > TTT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dt3 = TTT(data)
Definition gradient.h:1023
carto::VolumeRef< C > TTX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dt2dx = TTX(data)
Definition gradient.h:1008
carto::VolumeRef< C > YZZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydz2 = YZZ(data)
Definition gradient.h:829
carto::VolumeRef< C > ZTX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdtdx = ZTX(data)
Definition gradient.h:924
carto::VolumeRef< C > ZYX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdydx = ZYX(data)
Definition gradient.h:882
carto::VolumeRef< C > TY(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dtdy = TY(data)
Definition gradient.h:675
carto::VolumeRef< C > TZT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdzdt = TZT(data)
Definition gradient.h:1002
AimsGradient(int type=AIMS_GRADIENT_CENTRAL)
One argument can be give to the constructor :
Definition gradient.h:265
carto::VolumeRef< C > ZXX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdx2 = ZXX(data)
Definition gradient.h:861
carto::VolumeRef< C > YT(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dydt = YT(data)
Definition gradient.h:643
carto::VolumeRef< C > YTX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydtdx = YTX(data)
Definition gradient.h:840
carto::VolumeRef< C > TYT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdydt = TYT(data)
Definition gradient.h:981
carto::VolumeRef< C > TYZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdydz = TYZ(data)
Definition gradient.h:976
carto::VolumeRef< C > TT(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dt2 = TT(data)
Definition gradient.h:685
carto::VolumeRef< C > TTZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dt2dz = TTZ(data)
Definition gradient.h:1018
carto::VolumeRef< C > XYZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdydz = XYZ(data)
Definition gradient.h:724
carto::VolumeRef< C > ZXZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdxdz = ZXZ(data)
Definition gradient.h:871
carto::VolumeRef< C > XTZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdtdz = XTZ(data)
Definition gradient.h:766
int _type
Type of the gradient.
Definition gradient.h:256
carto::VolumeRef< C > XZY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdzdy = XZY(data)
Definition gradient.h:740
carto::VolumeRef< C > YTT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydt2 = YTT(data)
Definition gradient.h:855
carto::VolumeRef< C > TXY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdxdy = TXY(data)
Definition gradient.h:950
carto::VolumeRef< C > TX(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dtdx = TX(data)
Definition gradient.h:670
carto::VolumeRef< C > XXT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dx2dt = XXT(data)
Definition gradient.h:708
carto::VolumeRef< C > ZXT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdxdt = ZXT(data)
Definition gradient.h:876
carto::VolumeRef< C > ZYZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdydz = ZYZ(data)
Definition gradient.h:892
carto::VolumeRef< C > XZT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdzdt = XZT(data)
Definition gradient.h:750
carto::VolumeRef< C > YXT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydxdt = YXT(data)
Definition gradient.h:792
carto::VolumeRef< C > Z(const carto::rc_ptr< carto::Volume< C > > &data)
d(data)/dz = AimsGradientZ(data)
Definition gradient.h:539
carto::VolumeRef< C > YYY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dy3 = YYY(data)
Definition gradient.h:803
carto::VolumeRef< C > TTY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dt2dy = TTY(data)
Definition gradient.h:1013
carto::VolumeRef< C > YZT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydzdt = YZT(data)
Definition gradient.h:834
carto::VolumeRef< C > X(const carto::rc_ptr< carto::Volume< C > > &data)
d(data)/dx = AimsGradientX(data)
Definition gradient.h:457
carto::VolumeRef< C > ZX(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dzdx = ZX(data)
Definition gradient.h:649
carto::VolumeRef< C > XZX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdzdx = XZX(data)
Definition gradient.h:735
carto::VolumeRef< C > YXX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydx2 = YXX(data)
Definition gradient.h:777
carto::VolumeRef< C > YYT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dy2dt = YYT(data)
Definition gradient.h:813
carto::VolumeRef< C > ZXY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdxdy = ZXY(data)
Definition gradient.h:866
carto::VolumeRef< C > TXZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdxdz = TXZ(data)
Definition gradient.h:955
carto::VolumeRef< C > XY(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dxdy = XY(data)
Definition gradient.h:612
carto::VolumeRef< C > YXZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydxdz = YXZ(data)
Definition gradient.h:787
carto::VolumeRef< C > TZY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdzdy = TZY(data)
Definition gradient.h:992
carto::VolumeRef< C > ZZZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dz3 = ZZZ(data)
Definition gradient.h:913
carto::VolumeRef< C > XTY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdtdy = XTY(data)
Definition gradient.h:761
carto::VolumeRef< C > YYZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dy2dz = YYZ(data)
Definition gradient.h:808
carto::VolumeRef< C > ZT(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dzdt = ZT(data)
Definition gradient.h:664
carto::VolumeRef< C > ZZT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dz2dt = ZZT(data)
Definition gradient.h:918
carto::VolumeRef< C > TZZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdz2 = TZZ(data)
Definition gradient.h:997
carto::VolumeRef< C > Y(const carto::rc_ptr< carto::Volume< C > > &data)
d(data)/dy = AimsGradientY(data)
Definition gradient.h:506
carto::VolumeRef< C > YX(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dydx = YX(data)
Definition gradient.h:628
carto::VolumeRef< C > XXY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dx2dy = XXY(data)
Definition gradient.h:698
carto::VolumeRef< C > YTY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydtdy = YTY(data)
Definition gradient.h:845
carto::VolumeRef< C > YXY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dydxdy = YXY(data)
Definition gradient.h:782
carto::VolumeRef< C > TXT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdxdt = TXT(data)
Definition gradient.h:960
carto::VolumeRef< C > YY(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dy2 = YY(data)
Definition gradient.h:633
carto::VolumeRef< C > XYT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdydt = XYT(data)
Definition gradient.h:729
carto::VolumeRef< C > ZYT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdydt = ZYT(data)
Definition gradient.h:897
carto::VolumeRef< C > ZZY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dz2dy = ZZY(data)
Definition gradient.h:908
carto::VolumeRef< C > TYX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdydx = TYX(data)
Definition gradient.h:966
carto::VolumeRef< C > XX(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dx2 = XX(data)
Definition gradient.h:607
carto::VolumeRef< C > XT(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dxdt = XT(data)
Definition gradient.h:622
carto::VolumeRef< C > ZZ(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dz2 = ZZ(data)
Definition gradient.h:659
carto::VolumeRef< C > ZY(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dzdy = ZY(data)
Definition gradient.h:654
carto::VolumeRef< C > TZX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dtdzdx = TZX(data)
Definition gradient.h:987
carto::VolumeRef< C > TZ(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dtdz = TZ(data)
Definition gradient.h:680
carto::VolumeRef< C > XXX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dx3 = XXX(data)
Definition gradient.h:693
carto::VolumeRef< C > ZYY(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdy2 = ZYY(data)
Definition gradient.h:887
carto::VolumeRef< C > XTX(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdtdx = XTX(data)
Definition gradient.h:756
carto::VolumeRef< C > XZZ(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdz2 = XZZ(data)
Definition gradient.h:745
carto::VolumeRef< C > XTT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dxdt2 = XTT(data)
Definition gradient.h:771
carto::VolumeRef< C > ZTT(const carto::rc_ptr< carto::Volume< C > > &data)
d3(data)/dzdt2 = ZTT(data)
Definition gradient.h:939
carto::VolumeRef< C > XZ(const carto::rc_ptr< carto::Volume< C > > &data)
d2(data)/dxdz = XZ(data)
Definition gradient.h:617
void fillBorder(const T &value)
virtual void copyHeaderFrom(const PropertySet &other)
std::vector< int > getSize() const
AimsGradientMethod
Gradient methods.
Definition gradient.h:48
@ AIMS_GRADIENT_DPLUS
Definition gradient.h:54
@ AIMS_GRADIENT_CENTRAL
Definition gradient.h:50
@ AIMS_GRADIENT_DMINUS
Definition gradient.h:52
AimsFirstOrderGradient
First order.
Definition gradient.h:63
@ AIMS_GRADIENT_T
Definition gradient.h:71
@ AIMS_GRADIENT_X
Definition gradient.h:65
@ AIMS_GRADIENT_Z
Definition gradient.h:69
@ AIMS_GRADIENT_Y
Definition gradient.h:67
AimsThirdOrderGradient
Third order.
Definition gradient.h:113
@ AIMS_GRADIENT_ZZX
Definition gradient.h:195
@ AIMS_GRADIENT_TTX
Definition gradient.h:235
@ AIMS_GRADIENT_TZX
Definition gradient.h:227
@ AIMS_GRADIENT_ZTX
Definition gradient.h:203
@ AIMS_GRADIENT_ZZZ
Definition gradient.h:199
@ AIMS_GRADIENT_ZXX
Definition gradient.h:179
@ AIMS_GRADIENT_XXX
Definition gradient.h:115
@ AIMS_GRADIENT_YTY
Definition gradient.h:173
@ AIMS_GRADIENT_YYX
Definition gradient.h:155
@ AIMS_GRADIENT_TYX
Definition gradient.h:219
@ AIMS_GRADIENT_TYY
Definition gradient.h:221
@ AIMS_GRADIENT_TTT
Definition gradient.h:241
@ AIMS_GRADIENT_YZT
Definition gradient.h:169
@ AIMS_GRADIENT_ZXZ
Definition gradient.h:183
@ AIMS_GRADIENT_XTY
Definition gradient.h:141
@ AIMS_GRADIENT_ZTZ
Definition gradient.h:207
@ AIMS_GRADIENT_XXZ
Definition gradient.h:119
@ AIMS_GRADIENT_XYY
Definition gradient.h:125
@ AIMS_GRADIENT_XTX
Definition gradient.h:139
@ AIMS_GRADIENT_YTX
Definition gradient.h:171
@ AIMS_GRADIENT_XTT
Definition gradient.h:145
@ AIMS_GRADIENT_YZZ
Definition gradient.h:167
@ AIMS_GRADIENT_TZZ
Definition gradient.h:231
@ AIMS_GRADIENT_ZZT
Definition gradient.h:201
@ AIMS_GRADIENT_TXZ
Definition gradient.h:215
@ AIMS_GRADIENT_TZY
Definition gradient.h:229
@ AIMS_GRADIENT_YTT
Definition gradient.h:177
@ AIMS_GRADIENT_YYY
Definition gradient.h:157
@ AIMS_GRADIENT_XZT
Definition gradient.h:137
@ AIMS_GRADIENT_YZY
Definition gradient.h:165
@ AIMS_GRADIENT_TTY
Definition gradient.h:237
@ AIMS_GRADIENT_ZZY
Definition gradient.h:197
@ AIMS_GRADIENT_ZYX
Definition gradient.h:187
@ AIMS_GRADIENT_YXZ
Definition gradient.h:151
@ AIMS_GRADIENT_ZXY
Definition gradient.h:181
@ AIMS_GRADIENT_TXX
Definition gradient.h:211
@ AIMS_GRADIENT_TZT
Definition gradient.h:233
@ AIMS_GRADIENT_XZX
Definition gradient.h:131
@ AIMS_GRADIENT_TYZ
Definition gradient.h:223
@ AIMS_GRADIENT_YTZ
Definition gradient.h:175
@ AIMS_GRADIENT_YXY
Definition gradient.h:149
@ AIMS_GRADIENT_ZTT
Definition gradient.h:209
@ AIMS_GRADIENT_XYT
Definition gradient.h:129
@ AIMS_GRADIENT_XYZ
Definition gradient.h:127
@ AIMS_GRADIENT_YXX
Definition gradient.h:147
@ AIMS_GRADIENT_XTZ
Definition gradient.h:143
@ AIMS_GRADIENT_ZYT
Definition gradient.h:193
@ AIMS_GRADIENT_TTZ
Definition gradient.h:239
@ AIMS_GRADIENT_TXY
Definition gradient.h:213
@ AIMS_GRADIENT_ZYY
Definition gradient.h:189
@ AIMS_GRADIENT_YYZ
Definition gradient.h:159
@ AIMS_GRADIENT_YZX
Definition gradient.h:163
@ AIMS_GRADIENT_TYT
Definition gradient.h:225
@ AIMS_GRADIENT_XZZ
Definition gradient.h:135
@ AIMS_GRADIENT_ZYZ
Definition gradient.h:191
@ AIMS_GRADIENT_YYT
Definition gradient.h:161
@ AIMS_GRADIENT_XZY
Definition gradient.h:133
@ AIMS_GRADIENT_XXY
Definition gradient.h:117
@ AIMS_GRADIENT_ZTY
Definition gradient.h:205
@ AIMS_GRADIENT_YXT
Definition gradient.h:153
@ AIMS_GRADIENT_XYX
Definition gradient.h:123
@ AIMS_GRADIENT_ZXT
Definition gradient.h:185
@ AIMS_GRADIENT_XXT
Definition gradient.h:121
@ AIMS_GRADIENT_TXT
Definition gradient.h:217
AimsSecondOrderGradient
Second order.
Definition gradient.h:76
@ AIMS_GRADIENT_XT
Definition gradient.h:84
@ AIMS_GRADIENT_XZ
Definition gradient.h:82
@ AIMS_GRADIENT_TX
Definition gradient.h:102
@ AIMS_GRADIENT_ZY
Definition gradient.h:96
@ AIMS_GRADIENT_XY
Definition gradient.h:80
@ AIMS_GRADIENT_TZ
Definition gradient.h:106
@ AIMS_GRADIENT_TT
Definition gradient.h:108
@ AIMS_GRADIENT_XX
Definition gradient.h:78
@ AIMS_GRADIENT_ZT
Definition gradient.h:100
@ AIMS_GRADIENT_YX
Definition gradient.h:86
@ AIMS_GRADIENT_YZ
Definition gradient.h:90
@ AIMS_GRADIENT_ZZ
Definition gradient.h:98
@ AIMS_GRADIENT_ZX
Definition gradient.h:94
@ AIMS_GRADIENT_YY
Definition gradient.h:88
@ AIMS_GRADIENT_YT
Definition gradient.h:92
@ AIMS_GRADIENT_TY
Definition gradient.h:104