From 2d4e355cf582a125a001cc5e1f843c8902c3af8c Mon Sep 17 00:00:00 2001 From: Qianqian Fang Date: Thu, 7 Mar 2024 01:28:54 -0500 Subject: [PATCH] [doc] update documentation for v2024.2 --- ChangeLog.txt | 5 +++++ LICENSE.txt | 2 +- README.md | 4 ++-- README.txt | 2 +- mmclab/README.txt | 42 ++++++++++++++++++++++++------------- mmclab/mmclab.m | 20 +++++++++++------- src/mmc.c | 2 +- src/mmc_bench.h | 2 +- src/mmc_cl_host.c | 2 +- src/mmc_cl_host.h | 2 +- src/mmc_cl_utils.c | 2 +- src/mmc_cl_utils.h | 2 +- src/mmc_const.h | 6 +++--- src/mmc_core.cl | 2 +- src/mmc_cu_host.h | 2 +- src/mmc_fastmath.h | 2 +- src/mmc_highorder.cpp | 2 +- src/mmc_highorder.h | 2 +- src/mmc_host.c | 2 +- src/mmc_host.h | 2 +- src/mmc_mesh.c | 2 +- src/mmc_mesh.h | 2 +- src/mmc_rand_common.h | 2 +- src/mmc_rand_drand48.c | 2 +- src/mmc_rand_drand48.h | 2 +- src/mmc_rand_logistic.c | 2 +- src/mmc_rand_logistic.h | 2 +- src/mmc_rand_posix.c | 2 +- src/mmc_rand_posix.h | 2 +- src/mmc_rand_sfmt.c | 2 +- src/mmc_rand_sfmt.h | 2 +- src/mmc_rand_xorshift128p.c | 2 +- src/mmc_rand_xorshift128p.h | 2 +- src/mmc_raytrace.c | 2 +- src/mmc_raytrace.h | 2 +- src/mmc_tictoc.c | 2 +- src/mmc_tictoc.h | 2 +- src/mmc_utils.c | 14 +++++++------ src/mmc_utils.h | 2 +- src/mmclab.cpp | 2 +- src/vector_types.h | 2 +- 41 files changed, 94 insertions(+), 67 deletions(-) diff --git a/ChangeLog.txt b/ChangeLog.txt index 7928ddd9..d6cb5e50 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -1,5 +1,10 @@ Change Log +== MMC 2.2.0 (v2024.2, Nougat), Qianqian Fang == + + 2024-03-07 [ebefe98] [feat] return trajectories data if -M S or cfg.debuglevel contains S + 2024-03-05 [10ea5ea] [bug] search 1st and 2nd nearest neighbors for edge-immc to reduce artifact + == MMC 2.0.0 (v2023, Mochi), Qianqian Fang == 2023-09-17 [6569f48] add comments to nightly build script for deployment diff --git a/LICENSE.txt b/LICENSE.txt index dbbb5f54..b76efe87 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -3,7 +3,7 @@ = Supporting Multi-threading with SSE4, OpenCL and CUDA = =============================================================================== -Copyright (C) 2010-2023 Qianqian Fang +Copyright (C) 2010-2024 Qianqian Fang ------------------------------------------------------------------------------- diff --git a/README.md b/README.md index 6266e871..c65eb723 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@ Mesh-based Monte Carlo (MMC) - SSE4 and OpenCL - Author: Qianqian Fang (q.fang at neu.edu) - License: GNU General Public License version 3 (GPL v3), see License.txt -- Version: 2.0.0 (v2023, Mochi) -- URL: +- Version: 2.2.0 (v2024.2, Nougat) +- URL: ![Mex and Binaries](https://github.com/fangq/mcxcl/actions/workflows/build_all.yml/badge.svg) diff --git a/README.txt b/README.txt index dc188e13..d5b374a4 100644 --- a/README.txt +++ b/README.txt @@ -6,7 +6,7 @@ *Author: Qianqian Fang *License: GNU General Public License version 3 (GPL v3), see License.txt -*Version: 2.0.0 (v2023, Mochi) +*Version: 2.2.0 (v2024.2, Nougat) *URL: http://mcx.space/mmc --------------------------------------------------------------------- diff --git a/mmclab/README.txt b/mmclab/README.txt index c2685430..5c586a71 100644 --- a/mmclab/README.txt +++ b/mmclab/README.txt @@ -2,8 +2,8 @@ *Author: Qianqian Fang *License: GNU General Public License version 3 (GPLv3) -*Version: this package is part of Mesh-based Monte Carlo (MMC) 1.9, v2020 -*URL: http://mcx.space/wiki/?Learn#mmc +*Version: this package is part of Mesh-based Monte Carlo (MMC) 2.2, v2024.2 +*URL: https://mcx.space/wiki/?Learn#mmc @@ -53,24 +53,30 @@ the verbose command line options in MMC.
  #############################################################################%
-          MMCLAB - Mesh-based Monte Carlo (MMC) for MATLAB/GNU Octave         %
-           Copyright (c) 2010-2019 Qianqian Fang           %
-                             http://mcx.space/#mmc                            %
+                      Mesh-based Monte Carlo (MMC) - OpenCL                   %
+           Copyright (c) 2010-2024 Qianqian Fang           %
+               https://mcx.space/#mmc  &  https://neurojson.io/               %
                                                                               %
-  Computational Optics & Translational Imaging (COTI) Lab- http://fanglab.org %
-             Department of Bioengineering, Northeastern University            %
+ Computational Optics & Translational Imaging (COTI) Lab  [http://fanglab.org]%
+    Department of Bioengineering, Northeastern University, Boston, MA, USA    %
+ #############################################################################%
+     The MCX Project is funded by the NIH/NIGMS under grant R01-GM114365      %
+ #############################################################################%
+   Open-source codes and reusable scientific data are essential for research, %
+  MCX proudly developed human-readable JSON-based data formats for easy reuse.%
                                                                               %
-                Research funded by NIH/NIGMS grant R01-GM114365               %
+ Please visit our free scientific data sharing portal at https://neurojson.io/%
+  and consider sharing your public datasets in standardized JSON/JData format %
  #############################################################################%
- $Rev::c38804$2019.4$Date::Qianqian Fang          $ by $Author::Qianqian Fang$%
+ $Rev::4ca899$v2024.2$Date::2023-09-11 17:37:07 -04$ by $Author::Qianqian Fang%
  #############################################################################%
  
   Format:
-     [fluence,detphoton,ncfg,seeds]=mmclab(cfg);
+     [fluence,detphoton,ncfg,seeds,traj]=mmclab(cfg);
            or
      fluence=mmclab(cfg);
      newcfg=mmclab(cfg,'prep');
-     [fluence,detphoton,ncfg,seeds]=mmclab(cfg, options);
+     [fluence,detphoton,ncfg,seeds,traj]=mmclab(cfg, options);
  
   Input:
      cfg: a struct, or struct array. Each element in cfg defines 
@@ -178,7 +184,6 @@ the verbose command line options in MMC.
                        source, see cfg.srctype='pattern' for details
                        Example 
        cfg.replaydet:  only works when cfg.outputtype is 'jacobian', 'wl', 'nscat', or 'wp' and cfg.seed is an array
-                       -1 replay all detectors and save in separate volumes (output has 5 dimensions)
                         0 replay all detectors and sum all Jacobians into one volume
                         a positive number: the index of the detector to replay and obtain Jacobians
        cfg.voidtime:   for wide-field sources, [1]-start timer at launch, 0-when entering
@@ -219,6 +224,9 @@ the verbose command line options in MMC.
                         'wp'- weighted scattering counts to build mus Jacobian (replay mode)
        cfg.debuglevel:  debug flag string, a subset of [MCBWDIOXATRPE], no space
        cfg.debugphoton: print the photon movement debug info only for a specified photon ID
+       cfg.maxjumpdebug: [10000000|int] when trajectory is requested in the output,
+                      use this parameter to set the maximum position stored. By default,
+                      only the first 1e6 positions are stored.
  
        fields marked with * are required; options in [] are the default values
        fields marked with - are calculated if not given (can be faster if precomputed)
@@ -235,8 +243,6 @@ the verbose command line options in MMC.
              or [size(cfg.elem,1), total-time-gates] if cfg.basisorder=0. 
              The content of the array is the normalized fluence-rate (or others 
              depending on cfg.outputtype) at each mesh node and time-gate.
-             In the "replay" mode, if cfg.replaydet is set to -1 and multiple 
-             detectors exist, fluence.data will add a 5th dimension for the detector number.
  
              If cfg.issaveref is set to 1, fluence(i).dref is not empty, and stores
              the surface diffuse reflectance (normalized by default). The surface mesh
@@ -260,6 +266,14 @@ the verbose command line options in MMC.
        seeds: (optional), if give, mmclab returns the seeds, in the form of
              a byte array (uint8) for each detected photon. The column number
              of seed equals that of detphoton.
+       trajectory: (optional), if given, mmclab returns the trajectory data for
+             each simulated photon. The output has 6 rows, the meanings are
+                id:  1:    index of the photon packet
+                pos: 2-4:  x/y/z/ of each trajectory position
+                     5:    current photon packet weight
+                     6:    enclosing element's ID
+             By default, mcxlab only records the first 1e7 positions along all
+             simulated photons; change cfg.maxjumpdebug to define a different limit.
  
   Example:
        cfg.nphoton=1e5;
diff --git a/mmclab/mmclab.m b/mmclab/mmclab.m
index 3699490d..ad50d15e 100644
--- a/mmclab/mmclab.m
+++ b/mmclab/mmclab.m
@@ -1,16 +1,22 @@
 function varargout=mmclab(varargin)
 %
 %#############################################################################%
-%         MMCLAB - Mesh-based Monte Carlo (MMC) for MATLAB/GNU Octave         %
-%          Copyright (c) 2010-2020 Qianqian Fang           %
-%                            http://mcx.space/#mmc                            %
+%                     Mesh-based Monte Carlo (MMC) - OpenCL                   %
+%          Copyright (c) 2010-2024 Qianqian Fang           %
+%              https://mcx.space/#mmc  &  https://neurojson.io/               %
 %                                                                             %
-% Computational Optics & Translational Imaging (COTI) Lab- http://fanglab.org %
-%            Department of Bioengineering, Northeastern University            %
+%Computational Optics & Translational Imaging (COTI) Lab  [http://fanglab.org]%
+%   Department of Bioengineering, Northeastern University, Boston, MA, USA    %
+%#############################################################################%
+%    The MCX Project is funded by the NIH/NIGMS under grant R01-GM114365      %
+%#############################################################################%
+%  Open-source codes and reusable scientific data are essential for research, %
+% MCX proudly developed human-readable JSON-based data formats for easy reuse.%
 %                                                                             %
-%               Research funded by NIH/NIGMS grant R01-GM114365               %
+%Please visit our free scientific data sharing portal at https://neurojson.io/%
+% and consider sharing your public datasets in standardized JSON/JData format %
 %#############################################################################%
-%$Rev::      $v2020 $Date::                       $ by $Author::             $%
+%$Rev::      $v2024.2$Date::                       $ by $Author::Qianqian Fang%
 %#############################################################################%
 %
 % Format:
diff --git a/src/mmc.c b/src/mmc.c
index dda3da67..db52f5be 100644
--- a/src/mmc.c
+++ b/src/mmc.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_bench.h b/src/mmc_bench.h
index fa0343fe..ad0a908d 100644
--- a/src/mmc_bench.h
+++ b/src/mmc_bench.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_cl_host.c b/src/mmc_cl_host.c
index c52e6c22..7ea60c76 100644
--- a/src/mmc_cl_host.c
+++ b/src/mmc_cl_host.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_cl_host.h b/src/mmc_cl_host.h
index 33458bf7..2736392f 100644
--- a/src/mmc_cl_host.h
+++ b/src/mmc_cl_host.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_cl_utils.c b/src/mmc_cl_utils.c
index 35065333..8929fa3e 100644
--- a/src/mmc_cl_utils.c
+++ b/src/mmc_cl_utils.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_cl_utils.h b/src/mmc_cl_utils.h
index e4ca833e..97bf6c8b 100644
--- a/src/mmc_cl_utils.h
+++ b/src/mmc_cl_utils.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_const.h b/src/mmc_const.h
index 3c9e2ff1..c5c3589e 100644
--- a/src/mmc_const.h
+++ b/src/mmc_const.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
@@ -32,9 +32,9 @@
 #ifndef _MCEXTREME_CONSTANT_H
 #define _MCEXTREME_CONSTANT_H
 
-#define MMC_VERSION        "v2023"
+#define MMC_VERSION        "v2024.2"
 #define MMC_VERSION_MAJOR  2
-#define MMC_VERSION_MINOR  0
+#define MMC_VERSION_MINOR  2
 #define MMC_VERSION_PATCH  0
 
 #define DET_MASK           0xFFFF0000
diff --git a/src/mmc_core.cl b/src/mmc_core.cl
index b947edf9..2934aed6 100644
--- a/src/mmc_core.cl
+++ b/src/mmc_core.cl
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_cu_host.h b/src/mmc_cu_host.h
index 6d4f9f22..b207a9a3 100644
--- a/src/mmc_cu_host.h
+++ b/src/mmc_cu_host.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_fastmath.h b/src/mmc_fastmath.h
index f98e14aa..353e7a90 100644
--- a/src/mmc_fastmath.h
+++ b/src/mmc_fastmath.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_highorder.cpp b/src/mmc_highorder.cpp
index 8c98d5f2..bef6aae6 100644
--- a/src/mmc_highorder.cpp
+++ b/src/mmc_highorder.cpp
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_highorder.h b/src/mmc_highorder.h
index aaddf32e..758a5d6e 100644
--- a/src/mmc_highorder.h
+++ b/src/mmc_highorder.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_host.c b/src/mmc_host.c
index 2b988254..86ddbe8f 100644
--- a/src/mmc_host.c
+++ b/src/mmc_host.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_host.h b/src/mmc_host.h
index 8dd1b4ee..9cb47b63 100644
--- a/src/mmc_host.h
+++ b/src/mmc_host.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_mesh.c b/src/mmc_mesh.c
index 76c485ec..d905cc6b 100644
--- a/src/mmc_mesh.c
+++ b/src/mmc_mesh.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_mesh.h b/src/mmc_mesh.h
index 30ee45da..40c3281d 100644
--- a/src/mmc_mesh.h
+++ b/src/mmc_mesh.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_common.h b/src/mmc_rand_common.h
index a8a550e3..13b14f0f 100644
--- a/src/mmc_rand_common.h
+++ b/src/mmc_rand_common.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_drand48.c b/src/mmc_rand_drand48.c
index c5eb7554..984a86f6 100644
--- a/src/mmc_rand_drand48.c
+++ b/src/mmc_rand_drand48.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_drand48.h b/src/mmc_rand_drand48.h
index 3f4eb761..cbd46063 100644
--- a/src/mmc_rand_drand48.h
+++ b/src/mmc_rand_drand48.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_logistic.c b/src/mmc_rand_logistic.c
index 61a49cd6..a982a57d 100644
--- a/src/mmc_rand_logistic.c
+++ b/src/mmc_rand_logistic.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_logistic.h b/src/mmc_rand_logistic.h
index e9d48958..de7708d3 100644
--- a/src/mmc_rand_logistic.h
+++ b/src/mmc_rand_logistic.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_posix.c b/src/mmc_rand_posix.c
index 75d7d777..a7f1869a 100644
--- a/src/mmc_rand_posix.c
+++ b/src/mmc_rand_posix.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_posix.h b/src/mmc_rand_posix.h
index 3d7d60ca..32859937 100644
--- a/src/mmc_rand_posix.h
+++ b/src/mmc_rand_posix.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_sfmt.c b/src/mmc_rand_sfmt.c
index 9f7b163e..d73fa7ea 100644
--- a/src/mmc_rand_sfmt.c
+++ b/src/mmc_rand_sfmt.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_sfmt.h b/src/mmc_rand_sfmt.h
index 30fc30bd..aefb8f34 100644
--- a/src/mmc_rand_sfmt.h
+++ b/src/mmc_rand_sfmt.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_xorshift128p.c b/src/mmc_rand_xorshift128p.c
index 5f44ad7c..75b18e0f 100644
--- a/src/mmc_rand_xorshift128p.c
+++ b/src/mmc_rand_xorshift128p.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_rand_xorshift128p.h b/src/mmc_rand_xorshift128p.h
index 8d3ff083..0e115c39 100644
--- a/src/mmc_rand_xorshift128p.h
+++ b/src/mmc_rand_xorshift128p.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_raytrace.c b/src/mmc_raytrace.c
index 5be487b6..d01baeda 100644
--- a/src/mmc_raytrace.c
+++ b/src/mmc_raytrace.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_raytrace.h b/src/mmc_raytrace.h
index 06ceeb3d..b6edb270 100644
--- a/src/mmc_raytrace.h
+++ b/src/mmc_raytrace.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_tictoc.c b/src/mmc_tictoc.c
index d54c395c..d3e6f73c 100644
--- a/src/mmc_tictoc.c
+++ b/src/mmc_tictoc.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_tictoc.h b/src/mmc_tictoc.h
index cc813244..0f88e4eb 100644
--- a/src/mmc_tictoc.h
+++ b/src/mmc_tictoc.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmc_utils.c b/src/mmc_utils.c
index 4498548b..349dc04c 100644
--- a/src/mmc_utils.c
+++ b/src/mmc_utils.c
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
@@ -3015,8 +3015,8 @@ void mcx_printheader(mcconfig* cfg) {
     MMC_FPRINTF(cfg->flog, S_YELLOW "\
 ###############################################################################\n\
 #                     Mesh-based Monte Carlo (MMC) - OpenCL                   #\n\
-#          Copyright (c) 2010-2023 Qianqian Fang           #\n\
-#" S_BLUE "              https://mcx.space/#mmc  &  https://neurojson.org/              " S_YELLOW "#\n\
+#          Copyright (c) 2010-2024 Qianqian Fang           #\n\
+#" S_BLUE "              https://mcx.space/#mmc  &  https://neurojson.io/               " S_YELLOW "#\n\
 #                                                                             #\n\
 #Computational Optics & Translational Imaging (COTI) Lab  [http://fanglab.org]#\n\
 #   Department of Bioengineering, Northeastern University, Boston, MA, USA    #\n\
@@ -3024,10 +3024,12 @@ void mcx_printheader(mcconfig* cfg) {
 #    The MCX Project is funded by the NIH/NIGMS under grant R01-GM114365      #\n\
 ###############################################################################\n\
 #  Open-source codes and reusable scientific data are essential for research, #\n\
-# MCX proudly developed human-readable JSON-based data formats for easy reuse,#\n\
-#  Please consider using JSON (" S_BLUE "https://neurojson.org/" S_YELLOW ") for your research data #\n\
+# MCX proudly developed human-readable JSON-based data formats for easy reuse.#\n\
+#                                                                             #\n\
+#Please visit our free scientific data sharing portal at " S_BLUE "https://neurojson.io/" S_YELLOW "#\n\
+# and consider sharing your public datasets in standardized JSON/JData format #\n\
 ###############################################################################\n\
-$Rev::      $ " S_GREEN MMC_VERSION S_YELLOW "  $Date::                       $ by $Author::             $\n\
+$Rev::      $" S_GREEN MMC_VERSION S_YELLOW " $Date::                       $ by $Author::             $\n\
 ###############################################################################\n"S_RESET);
 }
 
diff --git a/src/mmc_utils.h b/src/mmc_utils.h
index 722fc40c..379a4d55 100644
--- a/src/mmc_utils.h
+++ b/src/mmc_utils.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/mmclab.cpp b/src/mmclab.cpp
index dc84bb7d..bc042c80 100644
--- a/src/mmclab.cpp
+++ b/src/mmclab.cpp
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang, 
diff --git a/src/vector_types.h b/src/vector_types.h
index 7007af2b..46fd43a3 100644
--- a/src/vector_types.h
+++ b/src/vector_types.h
@@ -2,7 +2,7 @@
 **  \mainpage Mesh-based Monte Carlo (MMC) - a 3D photon simulator
 **
 **  \author Qianqian Fang 
-**  \copyright Qianqian Fang, 2010-2023
+**  \copyright Qianqian Fang, 2010-2024
 **
 **  \section sref Reference:
 **  \li \c (\b Fang2010) Qianqian Fang,