forked from mccode-dev/McCode
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGES_McStas
More file actions
4068 lines (3577 loc) · 257 KB
/
CHANGES_McStas
File metadata and controls
4068 lines (3577 loc) · 257 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*******************************************************************************
*
* McStas, neutron ray-tracing package
* Copyright 1997-, All rights reserved
* Risoe National Laboratory, Roskilde, Denmark
* Institut Laue Langevin, Grenoble, France
*
* McStas and McXtrace share code repository at
* https://github.com/mccode-dev/McCode
*
* Both codes are released under GPL v3
*
* Documentation: CHANGES_McStas
*
* %Identification
* Written by: KN, KL, PEO, EF, PW, EK, JB
* Origin: DTU, ILL, Uni Copenhagen, PSI
* Modified by: KN, October 26, 1998 : initial release 1.0
* Modified by: KN, March 31, 1999 : release 1.1
* Modified by: KN, January 31, 2000 : release 1.2
* Modified by: KN, May 18, 2000 : release 1.3
* Modified by: KN, July 28, 2000 : release 1.4
* Modified by: KN, PEO, March 16, 2001: release 1.4.1
* Modified by: PEO, EF, October, 10th, 2001: release 1.5
* Modified by: PW, EF, May 19th 2003: version 1.7
* Modified by: PW, EF, March 4th 2004: version 1.8
* Modified by: PW, EF, November 16th 2005: version 1.9
* Modified by: PW, EF, March 29th 2006: version 1.9.1
* Modified by: PW, EF, December 4th 2006: version 1.10
* Modified by: PW, EF, July 3rd 2007: version 1.11
* Modified by: PW, EF, EK May 8th 2008: version 1.12
* Modified by: PW, EF, EK April 2nd 2009: version 1.12a
* Modified by: PW, EF, EK June/July 2010: version 1.12b
* Modified by: PW May-June 2011: version 1.12c (re-release)
* Modified by: PW November 2012: version 2.0RC1 (pre-release)
* Modified by: PW December 2012: version 2.0RC2 (pre-release)
* Modified by: PW December 2012: version 2.0
* Modified by: PW February-July 2014: version 2.1 (and the 2.1RC1 pre-release)
* Modified by: PW and JG May 2015: versions 2.2 and 2.2a
* Modified by: PW March 2016: version 2.3
* Modified by: PW May 2017: version 2.4
* Modified by: PW June 2017: version 2.4.1
* Modified by: PW December 2018: version 2.5
* Modified by: PW January 2020: version 2.6
* Modified by: PW February 2020: 3.0beta tech preview
* Modified by: PW May 2020: version 2.6.1
* Modified by: PW November 2020: version 2.7
* Modified by: PW December 2020: version 3.0
* Modified by: PW September-October 2021: version 2.7.1
* Modified by: PW September-November 2021: version 3.1
* Modified by: PW December 2022: versions 3.2 and 2.7.2
* Modified by: PW March 2023: version 3.3
* Modified by: PW September 2023: version 3.4
* Modified by: PW September 2024: version 3.5.1
* Modified by: PW November 2024: version 3.5.12
* Modified by: PW December 2024: version 3.5.16
* Modified by: PW February 2025: version 3.5.24
* Modified by: PW February 2025: version 3.5.24
* Modified by: PW April 2025: version 3.5.27
* Modified by: PW June 2025: version 3.5.32
* Modified by: PW December 2025: version 3.6.1
* Modified by: PW January 2026: version 3.6.5
*
* This file is part of McStas 3.6.5, released December 7th 2026.
* It gives a 'changes' list from the beginning of the project
*
*******************************************************************************/
Changes in McStas/McXtrace 3.6.5, January 7th, 2026
## What's Changed - Main Changes:
### Bugfixes, new features, all common to McStas and McXtrace:
* macOS bundles in 3.6.1 did not actually install that version but something earlier. Fixed by pinning in yml file, @willend in https://github.com/mccode-dev/McCode/pull/2285
* PDF manuals had wrong version numbers, @willend in https://github.com/mccode-dev/McCode/pull/2285
* Allow mcrun / mcdisplay to run / visualize without access to .c/.instr by @willend in https://github.com/mccode-dev/McCode/pull/2281
* mcgui/mxgui editable font colors, handle long filenames without extreme window resizing by @willend in https://github.com/mccode-dev/McCode/pull/2275
* Fix cross-platform sort-order issue in PowderN by @willend in https://github.com/mccode-dev/McCode/pull/2272
* Platform-independent reflection list sort in Single_crystal by @willend in https://github.com/mccode-dev/McCode/pull/2273
* mcrun/mxrun: feature addition - scan by seed by @willend in https://github.com/mccode-dev/McCode/pull/2276
* Add mcplot toggle to "plot 1D-curves from 0-value" in linear mode by @willend in https://github.com/mccode-dev/McCode/pull/2278
* Add commentstring to vim editor by @Lomholy in https://github.com/mccode-dev/McCode/pull/2284
### Other stuff
* %Example adjustments, McXtrace by @willend in https://github.com/mccode-dev/McCode/pull/2269
* Test_SANS/Test_SAXS, supplement stats by x10 SPLIT by @willend in https://github.com/mccode-dev/McCode/pull/2270
* Use ${{ matrix.mpi }} to ensure different output dirs by @willend in https://github.com/mccode-dev/McCode/pull/2271
* Fix indentation bug - issue #2279 by @willend in https://github.com/mccode-dev/McCode/pull/2280
* Temporarily disable this instr from McXtrace tests by @willend in https://github.com/mccode-dev/McCode/pull/2283
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.6.1...v3.6.5
Changes in McStas/McXtrace 3.6.1, December 12th, 2025
## What's Changed - Main Highlights:
### Overall release focus:
* Code quality improvements: Suppression of warnings from c-compilers and our static code analysis tool `cppcheck`
* Continuous integration improvement: Any change in instrument/component code is tested via GitHub CI features
### New tool features / capabilities:
* `mcrun/mxrun` simulation launch tool: (@willend)
* Scans can be parallelised at the "step number" level, use `--scan_split`. Contribution from @Lomholy.
* If installed, `cppcheck` can be used to perform static code analysis on the generated code, use `-C/--c-lint?`
* Improved string-handling in input parameters, e.g. in use with `NCrystal` config strings. Contribution from @tkittel.
* `mcplot/mxplot` simulation plot tools: (@willend)
* Better support for 'intermediate saves' done via `kill -USR2` or `Progress_bar`, and plots should work on an unfinished simulation.
* Plotting a completed simulation with 'intermediate saves' will give you **latest** plot version in the 2D case and **multiple, overplotted** curves in the 1D case
* The `mcplot-matlab/mxplot-matlab` tool is back. You need to manually install either Matlab or Octave to make use of this
* `mcdisplay/mxdisplay` instrument visualisation tools: (@willend)
* On `conda`-based installations, the `mcdisplay-cad/mxdisplay-cad` tool includes the `cadquery` dependency. On completion of building the model, the OS is asked to handle the resulting CAD model.
* The `mcdisplay-matlab/mxdisplay-matlab` tool is back. You need to manually install either Matlab or Octave to make use of this
* For better integration with McStasScript, the `mcdisplay-webgl-classic/mxdisplay-webgl-classic` is used in such scenarios
* The 'newer/fancy' `mcdisplay-webgl/mxdisplay-webgl` based on `THREE.js`, `react` and other javascript requires a slightly time-consuming installation process on 1st launch. The user now gets an info box about this.
* The McStas-specific `mcdisplay-mantid` IDF generator tool received a bug fix for OFF geometry detectors.
* `mcdoc/mxdoc` documentation tool: (@willend)
* Higher quality / more complete comp/instr doc pages
* `mctest/mxtest` test tool: (@willend)
* Easier to use locally for component/instrument developers
### Components and instruments:
#### McXtrace:
* The `Fluorescence` components have a new flag to enhance statistics/signal from low concentration materials. Work by @farhi.
#### McStas:
* The `Union` subsystem now handles 'surface physics' with the introduction of a system of refraction/reflection processes on geometry surfaces. Work by @mads-bertelsen.
* The `Union` subsystem now has a functional 3D-mesh system (`Union_mesh`) that supports CAD style geometries. (Ascii/binary STL files and OFF files are supported. - For now only those with triangular meshing.) Work by @Lomholy.
* As part of the overall code-quality improvement process, various aspects of the `Union` subsystem have been tested / improved / revised. Contributions by @tkittel and @willend in close collaboration with @mads-bertelsen.
* New ISIS-related instrument files, components and data:
* `ISIS_LET` by Ross Stewart and Rob Bewley, serves as test-instrument for `Commodus_I3` (ISIS source model - corresponds to `ViewModISIS` with a different parameter interface)
* Updated / larger set of input files for the ISIS moderator components
* `Multilayer_sample` from Rob Dalgliesh was updated with `nrepeats` which allows to repeat an SLD material stack. `ISIS_CRISP` was updated to include this feature.
* `TOF_PSDmonitor_toQ` is a new component with built-in data reduction from Rob Dalgliesh. Uses ToF to calculate Q. `Test_TOF_PSDmonitor_toQ` is a basic instrument to showcase the component.
* Several of the basic McStas sample components received a systematic validation against analytical methods, thanks to @Lomholy with help from KU/NBI students.
* As part of the overall code-quality improvement process, the whole component / instrument base got a BIG overhaul as such (@willend)
### Platform support:
* The Windows/`conda` platform which uses the `MSVC` compiler is now **fully** functional for all McStas code and a good part of the McXtrace code. As part of this process a new header-file `mccode-complex-lib.h` should be used by all code requiring complex numbers. (Implements functions for e.g. `+-*/` operations across platforms - MSVC does not self implement these operations...) @willend
## What's Changed - Details:
### Common changes to McStas and McXtrace
* Code quality improvements
* Remove compiler warnings by @willend in https://github.com/mccode-dev/McCode/pull/2088
* Implement 'cppcheck' linting support on Unix, can be utilised via mcrun or mctest by @willend in https://github.com/mccode-dev/McCode/pull/2090
* Big overhaul of many component docstings, retire obsoleted components and instruments, component fixes by @willend in https://github.com/mccode-dev/McCode/pull/2117, https://github.com/mccode-dev/McCode/pull/2118, https://github.com/mccode-dev/McCode/pull/2116, https://github.com/mccode-dev/McCode/pull/2120, https://github.com/mccode-dev/McCode/pull/2119, https://github.com/mccode-dev/McCode/pull/2115, https://github.com/mccode-dev/McCode/pull/2122, https://github.com/mccode-dev/McCode/pull/2125, https://github.com/mccode-dev/McCode/pull/2144, https://github.com/mccode-dev/McCode/pull/2153, https://github.com/mccode-dev/McCode/pull/2154, https://github.com/mccode-dev/McCode/pull/2156
* Linter-oritented fixes in various components by @willend in https://github.com/mccode-dev/McCode/pull/2136, https://github.com/mccode-dev/McCode/pull/2248
* Clean up various components / libs where linter output was a bit 'noisy' by @willend in https://github.com/mccode-dev/McCode/pull/2218
* Suppres warning from MSVC by using %zi in place of %li by @willend in https://github.com/mccode-dev/McCode/pull/2220
* User gui / command line tools:
* mcrun:
* Run scan steps in parallel - one scan step pr. one cpu core by @Lomholy in https://github.com/mccode-dev/McCode/pull/2081 (similar to now-deprecated, historical feature of mcrun.pl)
* Implement env vars to override mpirun setting by @willend in https://github.com/mccode-dev/McCode/pull/2087 (`MCSTAS_MPIRUN_OVERRIDE` / `MCXTRACE_MPIRUN_OVERRIDE` )
* Implement 'cppcheck' linting support on Unix, use `mcrun -C` or mcrun `--c-lint`
* Improved error-handling in mccode.py by @willend in https://github.com/mccode-dev/McCode/pull/2139
* Fixes for parameter quoting issues by @tkittel in https://github.com/mccode-dev/McCode/pull/2151
* mcgui:
* Fixes for parameter quoting issues by @tkittel in https://github.com/mccode-dev/McCode/pull/2151
* mcplot:
* Use multiple # Data entries in output files if -USR2 is used for intermediate saves by @willend in https://github.com/mccode-dev/McCode/pull/2181
* mcplot plot only last # Data block in files with multiple entries by @willend in https://github.com/mccode-dev/McCode/pull/2182
* Bring back mcplot-matlab/octave by @willend in https://github.com/mccode-dev/McCode/pull/2256
* Correct visualisation artefacts in Matlab/multiline mcdisplay by @willend in https://github.com/mccode-dev/McCode/pull/2257
* mcdisplay:
* Let mcdisplay-webgl and -classic honour -d directory by @willend in https://github.com/mccode-dev/McCode/pull/2093
* mcdisplay-webgl 1st run notice (wait until node.js install is done) @willend in https://github.com/mccode-dev/McCode/pull/2140
* Bring back mcdisplay-matlab/octave by @willend in https://github.com/mccode-dev/McCode/pull/2256
* Correct visualisation artefacts in Matlab/multiline mcdisplay by @willend in https://github.com/mccode-dev/McCode/pull/2257
* Minor tool improvements: mcdisplay-cad by @willend in https://github.com/mccode-dev/McCode/pull/2258
* mcdoc:
* mcdoc is now more tolerant to e.g. missing asterisks in header by @willend in https://github.com/mccode-dev/McCode/pull/2121
* mcdoc fills in "short description" if not found by parsing by @willend in https://github.com/mccode-dev/McCode/pull/2123
* Improve clarity of mcdoc Generate buttion and clipboard by @willend in https://github.com/mccode-dev/McCode/pull/2141
* Allow mcdoc to work with --dir . by @willend in https://github.com/mccode-dev/McCode/pull/2147
* Bugfix to filtered search https://github.com/mccode-dev/McCode/pull/2148
* Fix mcdoc for single-file search (e.g. BNL_H8.instr) by @willend in https://github.com/mccode-dev/McCode/pull/2166
* Mcdoc patch, tolerate missing ^* in header description / parameters by @willend in https://github.com/mccode-dev/McCode/pull/2179
* mctest:
* Implement 'cppcheck' linting support on Unix, use `mctest --lint`
* Update mctest with log of attained test value by @willend in https://github.com/mccode-dev/McCode/pull/2161
* Add --local=DIR input to mctest, will test instruments from that folder instead of 'system' by @willend in https://github.com/mccode-dev/McCode/pull/2221
* Add mctest feature to filter tested instruments by use of given COMP by @willend in https://github.com/mccode-dev/McCode/pull/2236
* Code generator/Grammar/runtime libs:
* Let `-pygen` generated McStasScript code propose using `mcdisplay-webgl-classic` in Jupyter by @willend in https://github.com/mccode-dev/McCode/pull/2091
* Common work on McStas / McXtrace components
* Include all %{%} section in Arm comp(s) as we propose these as "template" comps by @willend in https://github.com/mccode-dev/McCode/pull/2165
* Let random numbers picked in INITIALIZE become controlled by --seed by @willend in https://github.com/mccode-dev/McCode/pull/2227
### McXtrace specific:
* mcxtrace:Fluorescence: flag enhance low concentrations by @farhi in https://github.com/mccode-dev/McCode/pull/2237
### McStas specific:
* Sample components, validation-work / alignment with analytical expressions by @Lomholy in:
* Phonon_simple by @Lomholy in https://github.com/mccode-dev/McCode/pull/2082 and https://github.com/mccode-dev/McCode/pull/2094, @willend in https://github.com/mccode-dev/McCode/pull/2195, @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2215
* SANS_Spheres to align with analytical validations. by @Lomholy in https://github.com/mccode-dev/McCode/pull/2083
* PowderN, add in order parameter to make it possibly to use no multiple scattering by @Lomholy in https://github.com/mccode-dev/McCode/pull/2098
* Single_crystal, added MPI_MASTER to selected printf statements by @aaronfinke in https://github.com/mccode-dev/McCode/pull/2169
* KU-SANS-samples, tweak expected values in Test_SANS by @willend in https://github.com/mccode-dev/McCode/pull/2209
* NCrystal
* Fix NCrystal_sample 3D visualisation. by @tkittel in https://github.com/mccode-dev/McCode/pull/2150
* Update NCrystal_example.instr to account for, and test, cmdline arg parsing by @tkittel in https://github.com/mccode-dev/McCode/pull/2159
* Tools/mcdisplay-mantid:
* Fix to OFF parsing by @willend in https://github.com/mccode-dev/McCode/pull/2099
* Optics components
* Bugfixes to Monchromator_bent by @Lomholy in https://github.com/mccode-dev/McCode/pull/2103
* Make beamstop components SCATTER for nicer visualisation by @tkittel in https://github.com/mccode-dev/McCode/pull/2163
* Monitor components
* Bugfix to NPI_tof_dhkl_detector after discussion with Jan Saroun by @willend in https://github.com/mccode-dev/McCode/pull/2137
* Union components
* Union surface and fix of focus system by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2149, https://github.com/mccode-dev/McCode/pull/2203
Related bug in Union focusing bug reported by Gilbert Christensen and Dillon Huang KU/NBI.
* Add new scattering_process_struct_init function for union processes by @tkittel in https://github.com/mccode-dev/McCode/pull/2177
* Followup fix to #2177 with correct order of memset args by @tkittel in https://github.com/mccode-dev/McCode/pull/2196
* Off file mesh msvc linter patches by @willend in https://github.com/mccode-dev/McCode/pull/2229
* Off file mesh component by @Lomholy in https://github.com/mccode-dev/McCode/pull/2219, https://github.com/mccode-dev/McCode/pull/2249
* Support for binary STL also on Windows by @Lomholy in https://github.com/mccode-dev/McCode/pull/2260
* Union cleanup before release by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2243
* Mesh surface compatibility by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2251
* Fix union lib surface stack by @willend in https://github.com/mccode-dev/McCode/pull/2253
* Removing debug prints from Sphere and 3D logger in Union. by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2252
* New comps and instruments
* Comp updates etc from ISIS by @willend in https://github.com/mccode-dev/McCode/pull/2190
* Developer tools / User contribution tools
* Script for flexible+convenient creation of .yml files by @tkittel in https://github.com/mccode-dev/McCode/pull/2105
* New test/devel tool to build McCode in a conda env by @willend in https://github.com/mccode-dev/McCode/pull/2106, https://github.com/mccode-dev/McCode/pull/2160, @tkittel in https://github.com/mccode-dev/McCode/pull/2155,
* New PR template by @willend in https://github.com/mccode-dev/McCode/pull/2129, https://github.com/mccode-dev/McCode/pull/2130, https://github.com/mccode-dev/McCode/pull/2131, https://github.com/mccode-dev/McCode/pull/2132, https://github.com/mccode-dev/McCode/pull/2133, https://github.com/mccode-dev/McCode/pull/2134, https://github.com/mccode-dev/McCode/pull/2138, @tkittel in https://github.com/mccode-dev/McCode/pull/2176
### Behind the scenes:
* Deployment and CI
* The 'autobuild' workflows automatically build non-conda packages for McStas and McXtrace on any new release tag by @willend in https://github.com/mccode-dev/McCode/pull/2079
* Automated testing of modified instrs/comps by @willend in https://github.com/mccode-dev/McCode/pull/2100, https://github.com/mccode-dev/McCode/pull/2101, https://github.com/mccode-dev/McCode/pull/2102
* Nightly tests based on conda by @willend in https://github.com/mccode-dev/McCode/pull/2106
* CI: Run "full test" in case 20 or more comps/instrs have been changed. by @willend in https://github.com/mccode-dev/McCode/pull/2126
* Transition to conda-based basictests for Windows and macOS by @willend in https://github.com/mccode-dev/McCode/pull/2191
* Handle case with single modified comp (and no matching instr) better by @willend in https://github.com/mccode-dev/McCode/pull/2197
* Minor ci change: Avoid running duplicate version of same instr by @willend in https://github.com/mccode-dev/McCode/pull/2223
* Deploy --comp=COMP filter to test instruments including changed components by @willend in https://github.com/mccode-dev/McCode/pull/2238
* Platform support
* Windows + Conda, update install-docs (#2245, thanks @LelandWH) by @willend in https://github.com/mccode-dev/McCode/pull/2246
* Complex number support on Windows with MSVC (#2192 complex numbers) by @willend in https://github.com/mccode-dev/McCode/pull/2205, https://github.com/mccode-dev/McCode/pull/2207, SANSPDB/SAXSPDB only by @willend in https://github.com/mccode-dev/McCode/pull/2208, https://github.com/mccode-dev/McCode/pull/2210 and Update headers in complex-lib by @willend in https://github.com/mccode-dev/McCode/pull/2216
* Fix for ppc64 Linux (conda-forge platform for IBM Power systems) by @willend in https://github.com/mccode-dev/McCode/pull/2085
* Win32 "define-massage" to ensure proper execution with recent MinGW releases by @willend in https://github.com/mccode-dev/McCode/pull/2135
* Remove duplicate rpaths on macOS by @willend in https://github.com/mccode-dev/McCode/pull/2140
* Add grep in "monolithic" windows builds by @willend in https://github.com/mccode-dev/McCode/pull/2152
* Qt message box for error message by @willend in https://github.com/mccode-dev/McCode/pull/2164
* -DUSE_NEXUS defines were missing for Windows / NeXus by @willend in https://github.com/mccode-dev/McCode/pull/2167
* Consolidate micromamba bulky installers by @willend in https://github.com/mccode-dev/McCode/pull/2183
* Fixes for mctest windows nexus: Should now function with .h5 output by @willend in https://github.com/mccode-dev/McCode/pull/2206
* General maintenance
* Minor fixes, contributions from Daniel Lomholt by @willend in https://github.com/mccode-dev/McCode/pull/2108
* Fix header typo by @willend in https://github.com/mccode-dev/McCode/pull/2109
* GPU-related edits for V Transmission_V_polarisator.comp and Test_StatisticalChopper.instr by @willend in https://github.com/mccode-dev/McCode/pull/2110
* If running under conda, add env prefix when saving/loading user mccode_config by @willend in https://github.com/mccode-dev/McCode/pull/2142
* Temporarily, avoid deploying xraylib via brew on macOS 15 by @willend in https://github.com/mccode-dev/McCode/pull/2145, https://github.com/mccode-dev/McCode/pull/2146
* Fix SDKROOT assignment for macOS configuration by @willend in https://github.com/mccode-dev/McCode/pull/2157
* Fix to autobuild scripts, remove v from tag... by @willend in https://github.com/mccode-dev/McCode/pull/2170
* Drop xrl-based test on macOS (we should use conda instead) by @willend in https://github.com/mccode-dev/McCode/pull/2180
* Remove mcplot-html dep python3-pyqt5.qtsvg to get python3-pyqt6.qtsvg by @willend in https://github.com/mccode-dev/McCode/pull/2184
* Suppress superfluous debug string in mctest by @willend in https://github.com/mccode-dev/McCode/pull/2185
* Temporarily disable test McXtrace randvec_target_rect by @willend in https://github.com/mccode-dev/McCode/pull/2186
* Beef up statistics 20 fold on Test_RNG instruments by @willend in https://github.com/mccode-dev/McCode/pull/2187
* Drop macOS 13 which will soon be deprecated by @willend in https://github.com/mccode-dev/McCode/pull/2189
* Partial revert on macOS bundle injector by @willend in https://github.com/mccode-dev/McCode/pull/2193
* Adjustment of %Example values that were off for the nightly test scenarios by @willend in https://github.com/mccode-dev/McCode/pull/2194
* Use rglob in cleanfiles tool, rmtree in case of out.dsym by @willend in https://github.com/mccode-dev/McCode/pull/2211
* Clean simdirs by @willend in https://github.com/mccode-dev/McCode/pull/2212
* Update workflows to use same simdir cleanup strategy everywhere by @willend in https://github.com/mccode-dev/McCode/pull/2213
* Various work on CI output and platforms by @willend in https://github.com/mccode-dev/McCode/pull/2217
* GPU box update by @willend in https://github.com/mccode-dev/McCode/pull/2233
* Recent linter patches require corrections for GPU/OpenACC... by @willend in https://github.com/mccode-dev/McCode/pull/2235
* Deprecate unused features of 'mctest' by @willend in https://github.com/mccode-dev/McCode/pull/2239
* Add timestamp to 'testroot' folder to avoid double-layer file structure by @willend in https://github.com/mccode-dev/McCode/pull/2241
* Restore ability to "run version via config file" in mctest by @willend in https://github.com/mccode-dev/McCode/pull/2244
* Preparations 3.6 by @willend in https://github.com/mccode-dev/McCode/pull/2254
## New Contributors
* @aaronfinke made their first contribution in https://github.com/mccode-dev/McCode/pull/2169
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.32...v3.6.1
Changes in McStas/McXtrace 3.5.32, June 17th, 2025
## What's Changed
### Common changes to McStas and McXtrace
* Deployment, platforms and CI
* Important fix to ensure use of -c conda-forge -c nodefaults only by @willend in https://github.com/mccode-dev/McCode/pull/1976
* MCPL is available for Windows on conda... by @willend in https://github.com/mccode-dev/McCode/pull/1978
* Let "autobuild" CI scripts create arm64 debs for mccode.org by @willend in https://github.com/mccode-dev/McCode/pull/1981
* Updated installation docs for Windows / conda by @willend in https://github.com/mccode-dev/McCode/pull/1984, https://github.com/mccode-dev/McCode/pull/1985, https://github.com/mccode-dev/McCode/pull/1986
* Partial workaround for openmpi v5 crashes on macOS by @willend in https://github.com/mccode-dev/McCode/pull/1996
* Install mcpl via pip in nightlies by @willend in https://github.com/mccode-dev/McCode/pull/1997
* Update mcstas-testsuite.yml by @willend in https://github.com/mccode-dev/McCode/pull/1998
* Suffix details by @willend in https://github.com/mccode-dev/McCode/pull/1999
* Tools:
* mcgui/mxgui: show current instrument name in dialogues by @farhi in https://github.com/mccode-dev/McCode/pull/1989
* VSCode McStas/McXtrace grammar extension
* Update vs code extension by @Lomholy in https://github.com/mccode-dev/McCode/pull/1975
* Small updates to editor, as well as updated installation information by @Lomholy in https://github.com/mccode-dev/McCode/pull/1977
* LaTeX math (formulae etc) for mcdoc %Description headers by @willend in https://github.com/mccode-dev/McCode/pull/2054
* Code generator/Grammar: McStas/McXtrace, c and .py code generators defined from common set of files in mccode/src
* Unify grammar take2 by @willend in https://github.com/mccode-dev/McCode/pull/2008
* Unify instr y c py: unify our code generators for C and Python by @farhi in https://github.com/mccode-dev/McCode/pull/2009
* Grammar multiple comp copy extend by @farhi in https://github.com/mccode-dev/McCode/pull/2012 (-> `INHERIT`)
* NEW `INHERIT` keyword in the component grammar: Allows to mix and match component sections from multiple components to achieve new functionality. For an example, see
* FluoPowder in McXtrace
* https://github.com/mccode-dev/McCode/blob/main/doc/GRAMMAR/ADR-records/ADR_20250612_INHERIT_COMP.md
* Edits by @farhi and @willend in https://github.com/mccode-dev/McCode/pull/2062
* Add ADR (Architectural Design Record) doc folder for proposed, accepted, rejected, deprecated, superseded changes of McCode GRAMMAR by @willend in https://github.com/mccode-dev/McCode/pull/2064
* Put in place folder for grammar documentation by @willend in https://github.com/mccode-dev/McCode/pull/2070
* The McStas/McXtrace code generators have a new commandline switch --version-num to print the version number only.
* New CLI default for mcstas / mcxtrace: --trace is on
* This allows any compiled instrument to run with --trace=0 by @willend in https://github.com/mccode-dev/McCode/pull/2010 and https://github.com/mccode-dev/McCode/pull/2023
* Libs and runtime
* Add Open_File in header (used from e.g. PowderN) by @willend in https://github.com/mccode-dev/McCode/pull/2014
* Wrap cabs in OpenACC settings by @willend in https://github.com/mccode-dev/McCode/pull/2016
* Swap default trace behaviour to 'enabled' by @willend in https://github.com/mccode-dev/McCode/pull/2023
* cif2hkl: update to solve F^2 for Xrays using latest CrysFML by @farhi in https://github.com/mccode-dev/McCode/pull/2021
* Openacc minor rectifications by @willend in https://github.com/mccode-dev/McCode/pull/2027
* Components
* Sync MCPL components McStas <-> McXtrace for MCPL 2.2.0 support by @willend in https://github.com/mccode-dev/McCode/pull/2019
* Update MCPL components for MCPL 2.2.0 features (including stat:sum). by @tkittel in https://github.com/mccode-dev/McCode/pull/2046
### McStas specific:
* Source_custom
* Fixed minor typo in docs by @pablogila in https://github.com/mccode-dev/McCode/pull/1980
* Fixed pulse normalisation for all values of n by @pablogila in https://github.com/mccode-dev/McCode/pull/2024
* Simplified redundant code for the peak integral calculation by @pablogila in https://github.com/mccode-dev/McCode/pull/2025
* Single_crystal: comments by @tweber-ill in https://github.com/mccode-dev/McCode/pull/1991
* Resolution sample/monitor
* Reso: Updates by @tweber-ill in https://github.com/mccode-dev/McCode/pull/1992
* Add infrastructure to save calculated resolution/covariance matrices … by @willend in https://github.com/mccode-dev/McCode/pull/1993
* Sync Res_monitor <-> TOFRes_monitor by @willend in https://github.com/mccode-dev/McCode/pull/1995
* Add mcresplot to debian metapackage by @willend in https://github.com/mccode-dev/McCode/pull/2022
* Monitor_nD pixel id and buffer fix by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/2002
* Add mcresplot to debian metapackage by @willend in https://github.com/mccode-dev/McCode/pull/2022
* Add exit attenuation to Incoherent.comp for finite order scattering by @Lomholy in https://github.com/mccode-dev/McCode/pull/2042
* Updates to Monochromator_bent from @Lomholy by @willend in https://github.com/mccode-dev/McCode/pull/2059 and https://github.com/mccode-dev/McCode/pull/2058
### McXtrace specific:
* McXtrace fluorescence:
* McXtrace: fix header doc in fluo sample (powder and SX) by @farhi in https://github.com/mccode-dev/McCode/pull/1974
* McXtrace fluo fix pow 0 by @farhi in https://github.com/mccode-dev/McCode/pull/1979
* McXtrace fluo fix 2 by @farhi in https://github.com/mccode-dev/McCode/pull/1988
* McXtrace fluo fix : fix in powder select - use gaussian line shape by @farhi in https://github.com/mccode-dev/McCode/pull/1994
* McXtrace: samples: fluo: add M-lines via XrayLib Kissel CSb calls by @farhi in https://github.com/mccode-dev/McCode/pull/2004
* McXtrace: samples: fluo: fix again the Fluo share by @farhi in https://github.com/mccode-dev/McCode/pull/2005
* McXtrace add fluo mcdisplay by @farhi in https://github.com/mccode-dev/McCode/pull/2015
* McXtrace fluo add detector 0 by @farhi in https://github.com/mccode-dev/McCode/pull/2029
* Fix compilation of McXtrace Test_PowderN instr by @willend in https://github.com/mccode-dev/McCode/pull/2000
* McXtrace various example instrument updates by @farhi in
* https://github.com/mccode-dev/McCode/pull/2033, https://github.com/mccode-dev/McCode/pull/2034, https://github.com/mccode-dev/McCode/pull/2045, https://github.com/mccode-dev/McCode/pull/2048, https://github.com/mccode-dev/McCode/pull/2051, https://github.com/mccode-dev/McCode/pull/2056, https://github.com/mccode-dev/McCode/pull/2057
* cif2hkl: update to solve F^2 for Xrays using latest CrysFML by @farhi in https://github.com/mccode-dev/McCode/pull/2021
* McXtrace: add SWING BL at SOLEIL by @farhi in https://github.com/mccode-dev/McCode/pull/2036
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.27...v3.5.32
Changes in McStas/McXtrace 3.5.27, April 29th, 2025
## What's Changed
### Common new features and patches for McStas and McXtrace (tools, random numbers etc.)
* Update rootmccode to work with new version of ROOT by @ebknudsen in https://github.com/mccode-dev/McCode/pull/1862
* Add wrapper for mc/mxdisplay-cad on Windows by @willend in https://github.com/mccode-dev/McCode/pull/1888
* Input flag -y / --yes applies all instrument parameter default values by @willend in https://github.com/mccode-dev/McCode/pull/1914
* PowderN and SX fixes: cif2hkl now searches correctly files using Open_File/real path, and sets 'barns=1' by @farhi in https://github.com/mccode-dev/McCode/pull/1952
* Correct implementation to use unit64_t (achieves a correct 64bit RNG also on Windows...) by @willend in https://github.com/mccode-dev/McCode/pull/1955 and https://github.com/mccode-dev/McCode/pull/1966
* Add simple test of KISS RNG across platforms and compilers by @willend in https://github.com/mccode-dev/McCode/pull/1956
* Suppress const char in the cif2hkl fcts by @willend in https://github.com/mccode-dev/McCode/pull/1957
* Use mcpl 2.0 proper on Windows. by @willend in https://github.com/mccode-dev/McCode/pull/1962
### New McStas specific features and patches
* Full adaptation of "spin-component nullification" after "spin up/down measurement" by @willend in https://github.com/mccode-dev/McCode/pull/1886 (see also discussion on [mcstas-users](https://mailman2.mcstas.org/pipermail/mcstas-users/2025q2/001566.html)
* Add component name in "segno" related Exit/Error statement by @willend in https://github.com/mccode-dev/McCode/pull/1895
* Allow further geometries for He3 cell component by @willend in https://github.com/mccode-dev/McCode/pull/1915
* Contributed component Source_custom by @pablogila in https://github.com/mccode-dev/McCode/pull/1911 and https://github.com/mccode-dev/McCode/pull/1946
* Update MCPL_input.comp by @g5t in https://github.com/mccode-dev/McCode/pull/1924
* PowderN: remove a static variable declare from SHARE section by @willend in https://github.com/mccode-dev/McCode/pull/1945
* Comp updates from work on ESS SKADI by @willend in https://github.com/mccode-dev/McCode/pull/1948
* Add COPY SHARE to Diaphragm Slit-alias-comp + add in McXtrace by @willend in https://github.com/mccode-dev/McCode/pull/1950
### New McXtrace specific features and patches
* McXtrace: data: refactor reflec_xraydb.py: refactor by @farhi in https://github.com/mccode-dev/McCode/pull/1897
* McXtrace: work in data/reflec_xraydb script by @farhi in https://github.com/mccode-dev/McCode/pull/1916
* mcxtrace:powderN: Update PowderN.comp: reduce nb of printed warnings by @farhi in https://github.com/mccode-dev/McCode/pull/1919
* McXtrace: Fluorescence handling ala PowderN by @willend in https://github.com/mccode-dev/McCode/pull/1942
* mcxtrace: instrument.y sync from mcstas by @willend in https://github.com/mccode-dev/McCode/pull/1943
* Add Diaphragm Slit-alias-comp in McXtrace by @willend in https://github.com/mccode-dev/McCode/pull/1950
* McXtrace: samples: add Fluo+PowderN component by @farhi in https://github.com/mccode-dev/McCode/pull/1951
* @farhi mcgui tooltip edits from https://github.com/mccode-dev/McCode/pull/1952 by @willend in https://github.com/mccode-dev/McCode/pull/1953
* Mcxtrace fluo sx 1 by @farhi in https://github.com/mccode-dev/McCode/pull/1972
### Platform support and packaging, continuous integration
* A few minor commits for Install (sudo -E) and libgsl dependency. by @farhi in https://github.com/mccode-dev/McCode/pull/1867
* Expand nighty test suite to macOS and Windows by @willend in https://github.com/mccode-dev/McCode/pull/1870
* Fix paths in mcxtrace testsuite script by @willend in https://github.com/mccode-dev/McCode/pull/1871
* Try to run the basic test using mpich on macOS by @willend in https://github.com/mccode-dev/McCode/pull/1873
* Enable mpi for windows in test CI by @willend in https://github.com/mccode-dev/McCode/pull/1875
* Enable MPI, NCrystal and MCPL in windows-test-CI by @willend in https://github.com/mccode-dev/McCode/pull/1876
* Add libnexus-dev on Ubuntu nightly test by @willend in https://github.com/mccode-dev/McCode/pull/1878
* Correct path for mcxtrace nightly testsuite by @willend in https://github.com/mccode-dev/McCode/pull/1879
* Cppcheck hints by @willend in https://github.com/mccode-dev/McCode/pull/1881
* Return to mpich on basictest by @willend in https://github.com/mccode-dev/McCode/pull/1882
* Fix issue 1883 by setting mpirun --mca params by @willend in https://github.com/mccode-dev/McCode/pull/1884
* Return None in mctest if no mccode.sim was written by @willend in https://github.com/mccode-dev/McCode/pull/1885
* MacInstall: add comment on forcing open permission with command by @farhi in https://github.com/mccode-dev/McCode/pull/1890
* First stab at adding basic windows MSVC test by @tkittel in https://github.com/mccode-dev/McCode/pull/1898
* Doc correction for MCPL install-location in Windows legacy by @willend in https://github.com/mccode-dev/McCode/pull/1900
* Restores MPIFLAGS configuration on non-windows platforms. by @willend in https://github.com/mccode-dev/McCode/pull/1904
* Disable macos/openmpi in favour of macos/mpich for now by @willend in https://github.com/mccode-dev/McCode/pull/1906
* Add Windows / arm64 in CI (only msvc and sans MPI for now) by @willend in https://github.com/mccode-dev/McCode/pull/1954
* Suppess various warnings from msvc on Windows: use %li -> %zi in printfs by @willend in https://github.com/mccode-dev/McCode/pull/1958
* Suppress msvc warnings about implicit mkdir() and getpid() by @willend in https://github.com/mccode-dev/McCode/pull/1959
* mcrun and msvc: drop -lm and -o instr.exe by @willend in https://github.com/mccode-dev/McCode/pull/1960
* More warning suppression msvc by @willend in https://github.com/mccode-dev/McCode/pull/1961
* Minor fixes post 3.5.26 by @willend in https://github.com/mccode-dev/McCode/pull/1969
## New Contributors
* @pablogila made their first contribution in https://github.com/mccode-dev/McCode/pull/1911
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.24...v3.5.27
Changes in McStas/McXtrace 3.5.24, February 19th, 2025
## What's Changed
### Important note
* McStas and McXtrace will soon change organisation-name on GitHub - from McStasMcXtrace -> mccode-dev
### User interfaces and tools
* [Feature] `mcgui/mxgui` Let configuration dialogue spawn your `EDITOR` to edit your local `mccode_config.json`
by @willend in https://github.com/mccode-dev/McCode/pull/1838 (available also by `--edit-user-config` from `mcrun/mxrun`)
* [Feature] `mcrun/mxrun`: New switch --cogen to allow on-demand switch to non-standard code generator.
See also interoperability with `mccode-antlr` below
by @willend in https://github.com/mccode-dev/McCode/pull/1851
* [Feature] `mcrun/mxrun` Solution for picking up code generator from PATH if not found where expected
by @willend in https://github.com/mccode-dev/McCode/pull/1840
* [Feature] pygen minor revision: Build importable make() function and call from generic notebook
by @willend in https://github.com/mccode-dev/McCode/pull/1827
* [Fix] Support Scintilla editor on Debian with Qt6
by @willend in https://github.com/mccode-dev/McCode/pull/1813
* [Fix] Drop hard-coded check for PyQt5
by @willend in https://github.com/mccode-dev/McCode/pull/1814
* [Fix] No more hidden Perl dependencies! (perl -> python 1-liner readlinkf())
by @willend in https://github.com/mccode-dev/McCode/pull/1824
* [Fix] too-restrictive `mcdisplay/mxdisplay` instrument line parsing
by @g5t in https://github.com/mccode-dev/McCode/pull/1834
* [Fix] Patches for `mcdisplay/mxdisplay` in Windows
from @LelandWH https://github.com/mccode-dev/McCode/issues/1853
### Components and instruments
* [Fix] McStas `Vertical_bender`: Add max iteration criterion for while loop (default 1000).
by @willend in https://github.com/mccode-dev/McCode/pull/1815
* [Fix] McStas `NCrystal_sample`: Remove possible out-of-bounds memory access
by @g5t in https://github.com/mccode-dev/McCode/pull/1821
* [Fix] McStas `Elliptic_guide_gravity` and `Pol_mirror`: Minor comp revisions, suppresses compilation warnings from clang
by @willend in https://github.com/mccode-dev/McCode/pull/1826
* [Fix] McStas `SNS_ARCS.instr` edits
by @willend in https://github.com/mccode-dev/McCode/pull/1838
* [Fix] McStas `ISIS_IMAT.instr` DEPENDENCY " @NEXUSFLAGS@ " added
by @willend in https://github.com/mccode-dev/McCode/pull/1839
* [Fix] McStas `Union_master` Adjustment of default parameter
by @willend in https://github.com/mccode-dev/McCode/pull/1840
* [Fix] McStas `Union`-related fixes and imports from DMSC school
by @willend in https://github.com/mccode-dev/McCode/pull/1841
* [Fix] McStas `Elliptical_guide_gravity` did not work in GROUPS as it always SCATTERS
by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/1843
* [Fix] `Monitor_nD` on GPU: Adjustments for coherence between CPU and GPU particle lists
by @willend in https://github.com/mccode-dev/McCode/pull/1816
### Core simulation toolkit
* [Feature] NeXus: sort comp instances by index and include comp parameter information
by @willend in https://github.com/mccode-dev/McCode/pull/1828
* [Fix] Increased stability in NeXus x wide MPI
by @willend in https://github.com/mccode-dev/McCode/pull/1811
* [Fix] Portability, Windows + `cl.exe`: Remove variable length array allocations for issue #1817
by @g5t in https://github.com/mccode-dev/McCode/pull/1819 and
https://github.com/mccode-dev/McCode/issues/1818 by @willend in https://github.com/mccode-dev/McCode/pull/1822
### Interfaces and interoperability with other codes
#### [NCrystal](https://github.com/mctools/ncrystal/wiki)
* Thanks to @tkittel for ping-pong on this :)
* [Feature] McStas 3.5.24 and later now depends on NCrystal 4.0.0 and later. NCrystal is now available also on Windows!
by @willend in https://github.com/mccode-dev/McCode/pull/1848 and https://github.com/mccode-dev/McCode/pull/1855
#### [`mccode-antlr`](https://github.com/mccode-dev/mccode-antlr)
* Thanks to @g5t for ping-pong on this :)
* [Feature] `mccode-antlr` is an alternative code-generator for McStas and McXtrace - a new development by @g5t and based on `ANTLR` instead of `lex/yacc`. The new tool is mainly written in python and thus has a lower barrier for changes in language syntax and code generation. The tool implementations `mcstas-antlr` and `mcxtrace-antlr` are thus a candidate implementations to potentially replace the classic `mcstas` and `mcxtrace` code generators in the future. Current status is that
* McStas: `mcstas-antlr` is fully feature complete wrt. `mcstas` for CPU simulations and close to complete for GPU simulations
* McXtrace: Not all instruments will compile using `mcxtrace-antlr` but basic functionality is in place
* To try:
1. Install `mccode-antlr` from `conda-forge` or via `pip`
2. Adapt your configuration to use e.g. `mcstas-antlr` by
* Setting the new `--cogen=mcstas-antlr` option in `mcrun`
* Enable or edit the `MCCOGEN` field of `mccode_config.json` using the new `Save/Edit configuration` in `mcgui`
* (The antlr tools default to download comps etc. to an internal cache: Add e.g. `-I${MCSTAS}` to prefer ingredients fromyour local library)
3. Use the `mcrun-antlr/mxrun-antlr` tools provided directly by `mccode-antlr`
### Platform support
* Debian/Ubuntu
* [Fix] Make hidden numpy dependency explicit also on Debian by @willend in https://github.com/mccode-dev/McCode/pull/1825
* [Fix] McXtrace meta-pkgs for Debian add libgsl-dev as dependency by @farhi in https://github.com/mccode-dev/McCode/pull/185
* Windows
* [Feature] NCrystal is now available with McStas on Windows
* [Info] Windows via cross-compiled `.exe`installer from `mccode.org`:
Please place the MCPL-related `.bat` files from the `extras` folder in e.g. `c:\mcstas-3.5.24\bin` to enable MCPL
(May require giving your user 'full access' permissions to the bin folder)
* [Info] Windows via conda-forge: MCPL is not yet available but expected during the spring
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.16...v3.5.24
Changes in McStas/McXtrace 3.5.16, November 16th, 2024
## What's Changed
* Tools, McStas and McXtrace:
* m[c,x]gui Reorder m[c,x]gui config dialogue for better visibility on "small screens"
by @willend in https://github.com/mccode-dev/McCode/pull/1775
* m[c,x]plot-pyqtgraph Fix to support for all combinations of Qt5, Qt6, PySide6 #1768
by @willend in https://github.com/mccode-dev/McCode/pull/1798 and https://github.com/mccode-dev/McCode/pull/1797
* m[c,x]test avoid recompile-attempts for already failed instruments by
@willend in https://github.com/mccode-dev/McCode/pull/1792
* McStas, McXtrace packaging:
* Fix debian package structure/versioning (#1783)
by @willend in https://github.com/mccode-dev/McCode/pull/1787
* Ensure the MCCODE_MAJOR/MINOR/PATCH vars always have a meaning
by @willend in https://github.com/mccode-dev/McCode/pull/1789
* **Important note wrt. Debian packages:** If you install both of mcstas and mcxtrace on the same Debian/Ubuntu system, you will get a collision for the file `/usr/bin/cif2hkl`. As a workaround you may allow joint installation via overriding `cif2hkl`:
`sudo apt-get -f install -o Dpkg::Options::="--force-overwrite"`
* McStas and McXtrace components and instruments
* PowderN: fix warning message repeated for ever by
@farhi in https://github.com/mccode-dev/McCode/pull/1777
* McXtrace fixes to 3 instrument models (expected values) and one component (compile error) -> "all green" status
by @willend in https://github.com/mccode-dev/McCode/pull/1793
* Fix issue 1794 monitor_nd to ensure **atomic** list-mode on GPU
by @willend in https://github.com/mccode-dev/McCode/pull/1796
* McStas, increased support for mcstas-antlr code generator:
* Let mcstas-antlr produce output for 1-2 SNS instruments by
@willend in https://github.com/mccode-dev/McCode/pull/1776
* Use DECLARE/INIT vars to set up Mono/Ana in templateTAS
@willend in https://github.com/mccode-dev/McCode/pull/1778
* Print warning when overwriting COPY EXTEND %{%} block from instance by
@willend in https://github.com/mccode-dev/McCode/pull/1786
* Minor fix for I`LL_H22_VIVALDI.instr `
by @willend in https://github.com/mccode-dev/McCode/pull/1788
* ANTLR-support: Replace nasty type var[] in fact headers by
@willend in https://github.com/mccode-dev/McCode/pull/1790
* Various minor comp instr fixes
by @willend in https://github.com/mccode-dev/McCode/pull/1795
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.12...v3.5.16
**Specific issues solved:**:
* https://github.com/mccode-dev/McCode/issues/1794
* https://github.com/mccode-dev/McCode/issues/1785
* https://github.com/mccode-dev/McCode/issues/1783
* https://github.com/mccode-dev/McCode/issues/1768
Changes in McStas/McXtrace 3.5.12, November 22nd, 2024
## What's Changed
* Platform support and installation procedures
* McStas + McXtrace: Allow to build installable packages for linux aarch64 Debian / arm64 by @willend in https://github.com/mccode-dev/McCode/pull/1702
* McStas + McXtrace: Install mcstasscript from conda in the meta-packages. by @willend in https://github.com/mccode-dev/McCode/pull/1724
* Please note that the packages are currently **NOT** available via the packages.mccode.org repo - and that you will have to manually uninstall McStas/McXtrace 3.5.1 before attempting to install 3.5.12
* Code generator and runtime-code
* McStas + McXtrace: Fix for SPLIT + GROUP issue: In instruments with a SPLIT N followed by a GROUP, the last N-1 particles would become lost. by @willend in https://github.com/mccode-dev/McCode/pull/1760
* McStas + McXtrace: Implement combined OpenACC multicore + gpu in same binary. Enable by adding
`"OACCFLAGS": "-fast -Minfo=accel -acc=gpu,multicore -gpu=managed -DOPENACC -DMULTICORE",` to your `mccode_config.json` by @willend in https://github.com/mccode-dev/McCode/pull/1761
* McStas + McXtrace: Add -D_DARWIN_C_SOURCE on macOS, required for correctly using `#include <stdio.h>` by @willend in https://github.com/mccode-dev/McCode/pull/1703
* Component bugfixes and improvements
* McStas + McXtrace: Make use of mcpl_dump() in MCPL_output verbose mode by @willend in https://github.com/mccode-dev/McCode/pull/1704
* McStas: MCPL_input, correction of #1733 by @willend in https://github.com/mccode-dev/McCode/pull/1734
* McStas: [Fix] compilation error, if not behavior in Pol_guide_vmirror.comp by @g5t in https://github.com/mccode-dev/McCode/pull/1708
* McStas: Fix contributed component type mismatches (Monochromator_bent and Statistical_Chopper) @g5t in https://github.com/mccode-dev/McCode/pull/1714
* McStas: Union restructure share includes by @willend in https://github.com/mccode-dev/McCode/pull/1716
* McStas: PowderN: fixing tth_sign argument by @farhi in https://github.com/mccode-dev/McCode/pull/1727 and Fix for https://github.com/mccode-dev/McCode/issues/1741 by @willend in https://github.com/mccode-dev/McCode/pull/1745
* McXtrace: Add Collimator_linear port McStas -> McXtrace by @willend in https://github.com/mccode-dev/McCode/pull/1737
* McStas + McXtrace: Removal of all DECLARATION and OUTPUT parameters by @willend in https://github.com/mccode-dev/McCode/pull/1754
* McStas + McXtrace Fix SX issue from minghuisvn by @willend in https://github.com/mccode-dev/McCode/pull/1755
* Sync McStas <-> McXtrace powdern focusing algo for https://github.com/mccode-dev/McCode/issues/1741 by @willend in https://github.com/mccode-dev/McCode/pull/1747 + consequence-edits in https://github.com/mccode-dev/McCode/pull/1748
* McStas + McXtrace: Source_div_quasi fix for #1735 by @ebknudsen in https://github.com/mccode-dev/McCode/pull/1759
* McStas + McXtrace Single_crystal:
* McStas: Fix #1732: Single_crystal powder mode was broken by #1521 by @farhi in https://github.com/mccode-dev/McCode/pull/1738
* Fixes for https://github.com/mccode-dev/McCode/issues/1728 by @willend in https://github.com/mccode-dev/McCode/pull/1731
* Fix of Single_crystal reuse optimization by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/1726
* To allow compilation for GPU hardware, drop all tau_lists in OPENACC case by @willend in https://github.com/mccode-dev/McCode/pull/1751
* Introduction of order=0.5 mode in Single_crystal by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/1762
* Fix of order system in Single_crystal by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/1764
* Added order_extra feature for Single_crystal by @mads-bertelsen in https://github.com/mccode-dev/McCode/pull/1767
* Instrument updates
* McStas: Test_DiskChoppers2 [Fix] missing pointer dereferences by @g5t in https://github.com/mccode-dev/McCode/pull/1710
* McStas: Add a an updated (%)Example line for Test_StatisticalChopper by @willend in https://github.com/mccode-dev/McCode/pull/1715
* McStas: Fix these instruments to use "local" inputfile by @willend in https://github.com/mccode-dev/McCode/pull/1729
* McXtrace: NECSA X ray machines by @farhi in https://github.com/mccode-dev/McCode/pull/1742
* McStas: Expand on Test_Powders from Mads by @willend in https://github.com/mccode-dev/McCode/pull/1766
* Python tool layer
* McStas + McXtrace: Fix to comp-forms in mcdoc pages by @willend in https://github.com/mccode-dev/McCode/pull/1723 (fixes #1722)
* McStas + McXtrace: mcrun/mxrun optimization: allows to specify criteria expression by @farhi in https://github.com/mccode-dev/McCode/pull/1743
* McStas + McXtrace: mcrun/mxrun optimisation: better choice for missing dX/dY by @farhi in https://github.com/mccode-dev/McCode/pull/1744
* McStas + McXtrace: mccode-antlr: Add mccode_config / m[c,x]run entry for MCCOGEN by @willend in https://github.com/mccode-dev/McCode/pull/1749
* McStas + McXtrace: config updates for the added "MCCOGEN" setting by @willend in https://github.com/mccode-dev/McCode/pull/1750
* McStas + McXtrace: Add -n in supplement of --ncount, allow match including .instr by @willend in https://github.com/mccode-dev/McCode/pull/1753
* McStas: Strip off arguments not understood by mcdisplay-mantid by @willend in https://github.com/mccode-dev/McCode/pull/1757
* McStas + McXtrace: Intermediate fix for https://github.com/mccode-dev/McCode/issues/1768 by @willend in https://github.com/mccode-dev/McCode/pull/1769
* McStas + McXtrace: Fix for issue 1763 and related issue propagating --no-output-files by @willend in https://github.com/mccode-dev/McCode/pull/1765
* Documentation etc.
* Add binder link in the "Docker" / container README by @willend in https://github.com/mccode-dev/McCode/pull/1700
* Document install steps around macOS 15 tightened security by @willend in https://github.com/mccode-dev/McCode/pull/1706
* Installation rewording for conda-envs by @willend in https://github.com/mccode-dev/McCode/pull/1756
**Full Changelog**: https://github.com/mccode-dev/McCode/compare/v3.5.1...v3.5.12
**Specific issues solved:**: https://github.com/mccode-dev/McCode/issues?q=is%3Aissue+label%3A%22ready+for+release%22+label%3Amcstas-3.5.1+label%3Amcxtrace-3.5.1+
We hope you will enjoy this new release!!!
Changes in McStas 3.5.1, September 16th, 2024
McStas 3.5.1 is the sixth official release in the 3.x series, with a modernised
code-generator and support for GPU acceleration on NVIDIA cards.
Thanks:
- Thanks to all members of the joint McStas-McXtrace team and input from our
users via emails and GitHub issues alike! Further a special thanks to
Theodor Peter Guttesen (former DTU diploma student) who has helped modernise
our 3D visualisation!
Important changes going forward:
- From release 3.5.1 McStas and McXtrace are released simultaneously and with
the same versioning (meaning that McXtrace takes a jump from 3.2 up to 3.5)
- With release 3.5.1 we are officially dropping support for the "legacy"
McStas 2.7.2 release and the "legacy" McXtrace 1.7.1 release.
- To minimize work required for platform support and builds, we are now focusing
on fewer platforms:
* Debian packages at packages.mccode.org are provided for x86_64 and arm64 Linux
(Thanks to the work of Emmanuel Farhi and his team at SOLEIL, official Debian
packages are already available in Debian Testing and Unstable
(see https://tracker.debian.org/pkg/mccode) and should become
widely available with next Debian Stable, after which we might drop our "own
channel").
* conda-forge is to become our distribution channel for "everything else", meaning
that:
1. Our macOS "bundles" are effectively now self-extracting conda-installers and
REQUIRES an active internet connection during installation
2. From a later release in the 3.5 series the same will be the case for Windows
- We are dropping builds for ALL rpm-oriented platform. Please use conda-forge instead.
- We want to release more "early and often" going forward, see below under conda-forge.
Conda-forge:
- We are now officially on conda-forge, with feedstocks available at:
* https://github.com/conda-forge/mcstas-suite-feedstock
* https://github.com/conda-forge/mcxtrace-suite-feedstock
- Via conda-forge we support the platforms linux-64, linux-aarch64, osx-arm64, osx-64 and win-64
- The conda-forge win-64 packages have slight shortcomings for this first release, meaning that:
* MCPL and NCrystal are not shipped with McStas
* MCPL is not shipped with McXtrace
- We still provide cross-compiled installers for Windows (mingw builds) for now
- You will find that when installed via conda-forge, file locations are slightly different:
most of the locations may be probed via:
mcrun --showcfg=ITEM Print selected cfg item and exit (paths are resolved
and absolute). Allowed values are "bindir", "libdir",
"resourcedir", and "tooldir".
(Wrt. locations of examples and components, the "resourcdir" is the same as $MCSTAS)
- Going forward, we will add incremental releases in the 3.5-series as work happens on the
main McStas/McXtrace branch - and this work will automatically go on our official
conda-forge and Debian channels. Other distribution channels ("bulky installers etc.)
may come with longer intervals.
Fixes of issues from last 3.x release:
- A number of issues from 3.4 were addressed, see the relevant GitHub issues for details:
- https://github.com/mccode-dev/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.4
Installation:
- Our install docs are available on the McCode GitHub page at
https://github.com/mccode-dev/McCode/tree/master/INSTALL-McStas
- The meta-package for Debian/Ubuntu is named mcstas-suite-python
- OpenACC GPU (and CPU multicore) acceleration is at the time of release still ONLY
supported on Linux systems, as this is the only platform targeted by the NVIDIA
HPC package. Versions 20.x -> 24.x should all work. On Windows 64bit systems,
support is expected to arrive "later", but you may run on your GPU via the so-called
"Windows Subsystem for Linux" (WSL). macOS is unfortunately not supported
by NVIDIA HPC acceleration.
- McStas 3.5.1 packages come with OpenMPI and NeXus as install-time dependencies for all supported
platforms.
McStas 3.5.1 enables most components and instruments on GPU. A few components compute only on CPU:
- Components using shared libraries from external software:
* GNU Scientific library used in:
contrib/SANSPDBFast
contrib/SANSNanodiscs
contrib/SANSNanodiscsWithTags
contrib/SANSNanodiscsFast
contrib/SANSEllipticCylinders
contrib/SANSPDB
contrib/SANSCylinders
contrib/Multilayer_Sample
* NCrystal used in
contrib/NCrystal_sample
* Components that are not fully thread-safe / ported to GPU
(I.e. these may come to GPU later)
contrib/Single_crystal_inelastic
contrib/SupermirrorFlat
contrib/Monochromator_bent
samples/Single_magnetic_crystal
union/Union_master
* Components that are intentionally for CPU-only use
(No dealing with buffersizes etc.)
misc/MCPL_output_noacc
monitors/Monitor_nD_noacc
Tool enhancements:
- The mcdisplay-webgl tool has received a MAJOR overhaul:
* Support for visualisation of proper "solids" instead of "multilines". Key components
have been updated with this new style, but more will come in the following releases.
* New react/js user-interface with options for choosing colour and transparency
of the individual components.
* Save and load of instrument visualisation and particle rays in JSON format
* The new features require a server-process, facilitated by the 'vite' javascript/node.js
oriented server. The server is by default shut down after 5 minutes - but mcdisplay-webgl
has an input parameter to control this behavior.
* On first launch the 'npm' package manager installs and builds packages to the McStas
user directory, so expect this first launch to take a little time.
* The tool further has a '2D' mode in the style of mcdisplay-pyqtgrahph, simply use your
mouse wheel on the browser menu to scroll the 3D view 'up' and the 2D views will appear!
- The mcgui user interface also has recieved a numner of usability changes:
* The main interface includes a new 'Jupylab' button that will convert a loaded
instrument file to McStasScript (python) format and launch Jupyterlab.
* The mcgui font-size can be configured via the Preferences dialogue and saved to
the user-level mccode_config.json file
* Monitor_nD "buffersize" of a given simulation (mostly used for the list/event mode)
may be configured via the Preferences dialogue and saved to the user-level config
* When copying an instrument from the Examples / Templates, the instrument-folder is
copied, i.e. including both instrument and specific datafiles etc.
* The "autoplot" mode that spawns plotting post simulation completion now also functions
with NeXus output
* "Inverted" canvas can be chosen when autoplotting with mcplot(-pyqtgraph)
- Improved NeXus support in both mcgui and mcrun:
* The JSON configuration file mccode_config.json now includes a HDFVIEW setting,
defaulting to 'nexpy' on the conda-forge based systems and HDFCompass on Debian
as nexpy is not yet available here. (A useful alternative is 'silx view'.)
- The primary mcplot(-pyqtgraph) tool also received a number of updates:
* The tool behaves correctly both in case of PyQt5 and PyQt6 based systems
* Visibility of legends is highly improved both on (standard) black canvas and
inverted white canvas (select from the mcgui prefs / run dialogue)
* When selecting --format=NeXus and requesting '--autoplot' from mcgui/mcrun, both the
mcplot(-pyqtgraph) and mcplot-matplotlib plotters request the HDFVIEW tool to
open the resulting mccode.h5 file.
- The 'mctest' tool is now available as a user-tool. The tool
* Allows to test for compilation of all instruments
* test-executes those including with %Example lines.
* To test your McStas installation, simply execute 'mctest' in your McStas environment
* The tool creates an output folder with the tested instruments in subfolders and the
test simulation results in subfolders under these. Compile-time, execution-time and
test numerical output is stored in JSON files.
* The most important commandline switches are these:
--ncount N selects the wanted statistic for the tests
--mpi=number or --mpi=auto enables mpi mode for the tests
--openacc enables OpenACC accelerations on Nvidia GPU on Linux
--instr=PATTERN only test instruments matching PATTERN
--testdir=DIR puts the test results under the DIR folder
--suffix=SUFFIX adds SUFFIX as an identifier in the output foldername
--nexus enables NeXus output for all tested instruments
* Here is an example of a run:
# mctest --instr=BNL_H8_simple --testdir=mcstas-test
loading system configuration
Output of test will be placed in: mcstas-test
ncount is: 1e6
Testing: 3.5.1
Finding instruments in: /Users/peterwillendrup/miniforge3/share/mcstas/resources/examples
Copying instruments to: mcstas-test/mcstas-3.5.1_BNL_H8_simple_Darwin
Compiling instruments [seconds]...
BNL_H8_simple : 2.03
Running tests...
BNL_H8_simple : 0.96
- The 'mcviewtest' tool is now available as a user-tool. The tool may be used to render
an html page with results from one or more 'mctest' runs. If your results of a test run
was placed in e.g. mcstas-test/mcstas-3.5.1_BNL_H8_simple_Darwin:
* cd to mcstas-test
* run the command: mcviewtest
* You may then open the resulting html file for visualisation in your browser and see
an output simmilar to that of our nightly test, see e.g.
https://new-nightly.mcstas.org/2024-09-11_output.html (A single test run gives
a single column of output - the example test demonstrated above would give only a
single cell since only one test was executed for a single instrument.)
* GRAY = instrument compiled OK, GREEN = instrument test agrees with %Example line,
RED = numerical result disagrees, WHITE with red text = instrument did not compile.
* The included numbers pr. cell includes C: compile time R: runtime and I=numerical value
Components and Instruments:
- The examples/ folder is no longer a flat directory, but has instead beceme a tree-structure,
subdivided into instrument categories:
* Facility / University / source type instruments:
BNL DTU ESS FZ_Juelich HZB ILL ISIS LLB Necsa PSI Risoe SNS TRIGA TUDelft
* Templates, tools and various tests:
Templates Tools, Tests_RNG Tests_monitors Tests_other Tests_samples Tests_MCPL_etc
Tests_grammar Tests_optics Tests_polarization Tests_sources
* Output from EU-projects etc.
HighNESS SINE2020 e-learning
* Links with other software
Mantid NCrystal
* Union-specific tests
Tests_union Union_demos Union_sample_environments Union_validation
- Each instrument has its own folder within the hierarcy, where usage-specific input files
etc. may also exist. In the future we may decide to distribute some McStasScript instruments
within this folder structure.
- MCPL_input had a parameter change: E_smear has become v_smear since what was implemented
was in fact a smearing on velocity.
- New component MCPL_input_once from Gregory S Tucker, ESS. Reads an MCPL file a single time,
and in MPI-mode with k processes, each processor reads just ~ 1/k of the file.
- An updated version of the strain-scanning instrument ILL_SALSA.instr was contributed by
Daniel Lomholt Christensen, Uni Copenhagen and ILL. The instrument uses a new model of
a bent-Si monochromator (Monochromator_bent) which was benchmarked and validated against
the RESTRAX/SIMRES model with help from Jan Šaroun, NPI Řež. The Test_Monochromator_bent
is a unit test for the monochromator.
- From Swiss Neutronics AG we have received an Transmission_V_polarisator.comp with two
corresponding test-instruments (Test_V_cavity_SNAG_single_side and Test_V_cavity_SNAG_double_side)
for single-side and double-side coated V-polarisers. The component was originally developed
by Andreas Ostermann (TUM) and has been updated by Michael Schneider from SNAG. The
models correspond to the simulations carried out for the publication
https://doi.org/10.1016/j.physb.2009.06.031
- Please note that the Pol_guide_vmirror currently has a systematic discrepancy wrt. the SNAG model,
full investigation of the problem is pending but will be fixed for a later 3.5.x update release.
!! If your simulation problem allows, please make use of the experimentally benchmarked
Transmission_V_polarisator instead !!
- From Hal Lee (ESS) we have received a new SupermirrorFlat component including all relevant
physics in the form of reflection, refraction and absorption in coating, substrate and absorber.
The component requires multiple new SHARE libs: supermirror-lib.c/h, plane.c/h, polyhedron.c/h
and comes with the example instrument Supermirror_thin_substrate.instr
- Incoming components and instruments:
* Ba. thesis student Thom van der Woude from TU Delft has written an excellent thesis on his
SEMSANS-related project "Design and analysis of a SEMSANS instrument for a cold source".
The code is available at https://github.com/tbvanderwoude/semsans for anyone interested and
includes simulation scripts, McStas code and Jupyter notebooks for analysis. We foresee
that this work will make it to one of the next minor updates McStas 3.5.x.
Core simulation framework / code-generator:
- The McStas and McXtrace code-generators are fully synchronised from v3.5.1 onwards.
Libraries and other runtime code:
- The NeXus output is richer from McStas 3.5.1, specifically:
* All component global postions and orientations are placed as dataset within
/entry1/instrument/components/<COMP>
* Monitors store their detector outputs in
/entry1/instrument/components/<COMP>/output/<filename>
* Monitor_nD instances further store their spatial bin-information in
/entry1/instrument/components/<COMP>/output/BINS
* To still support the "McStas-Mantid" NeXus variant, please use --format=NeXus --IDF
which will include virtual links to the above datasets within the expected
/entry1/data structure
- NCrystal library version 3.9.7 from T. Kittelmann (ESS) and X.X. Cai (CSNS), distributed
with McStas on Unix platforms only. (Cross-compiles for Windows, but still needs work
for "production" availability.)
- MCPL library from T. Kittelmann (ESS) included at v. 1.6.2
- On debian and fedora we are providing new packages for NCrystal and MCPL via the
McCode repository, independent of the McStas release. (Both codes have further arrived
in the Debian ecosystem, thanks to Synchrotron SOLEIL, Emmanuel Farhi and Roland Mas.)
Migration to 3.5.1:
- As mentioned above, we no longer support McStas 2.x.
- The Wiki has a dedicated section on McStas 2.x -> McStas 3.x conversion that includes:
* A nomenclature list containing short descriptions of new concepts and important keywords
in McStas 3.x and OpenACC / CUDA code in general.
* A document outlining the most importand differences between 2.x and 3.x.
* A guide for 2.x -> 3.x instrument conversion.
* A guide for 2.x -> 3.x component conversion.
- If you are still in trouble, please write us a GitHub issue or an email to mcstas-users@mcstas.org
Platforms:
- We provide packages for the following platforms / systems:
* conda-forge Platforms linux-64, linux-aarch64 osx-arm64, osx-64 and win-64
* Debian-based distros on Intel and Arm
* conda-forge based 'application bundles' for
64bit macOS 12-14 both Intel and Silicon (should also be ready for macOS 15 Sequoia)
* A cross-compiled 'bulky installer' for 64bit Windows 10/11 on Intel
- For RPM based distros please use our conda-forge solution!
- For e.g. FreeBSD you may roll your own using CMake.
We hope you will enjoy this new release!!!
Changes in McStas 3.4, September 19th, 2023
McStas 3.4 is the fifth official release in the 3.x series, with a modernised
code-generator and support for GPU acceleration on NVIDIA cards.
Thanks:
- Thanks to all members of the joint McStas-McXtrace team and input from our
users via emails and GitHub issues alike!
Fixes of issues from last 3.x release:
- A number of issues from 3.3 were addressed, see the relevant GitHub issues for details:
- https://github.com/mccode-dev/McCode/issues?q=is%3Aissue+is%3Aclosed+label%3Amcstas-3.3
Installation:
- As usual, our install docs are available on the McCode GitHub page at
https://github.com/mccode-dev/McCode/tree/master/INSTALL-McStas
- The meta-packages for Debian/Ubuntu and RedHat/Centos/Fedora are named e.g.
mcstas-suite-python-ng for 'next generation' for coexistance with the 2.x
series packages. (Please note that there will be no future 2.x releases!)
- OpenACC GPU (and CPU multicore) acceleration is at the time of release still ONLY
supported on Linux systems, as this is the only platform targeted by the NVIDIA
HPC package. Versions 20.x, 21.x, 22.x and 23.x should all work. On Windows 64bit systems,
support is expected to arrive "later", but you may run on your GPU via the so-called
"Windows Subsystem for Linux" (WSL). macOS is unfortunately not supported
by NVIDIA HPC acceleration.
- McStas 3.4 comes with embedded NeXus support on macOS and on Debian/Ubuntu NeXus is pulled
as a package dependency. On Windows, please install NeXus from the extras/ folder alongside
your McStas bundle.
- The build process for both macOS and Windows has been further overhauled and is based on an
embedded conda environment. MPI support is now included with the installation on Windows.
- We have further been modernising the (CMake-based) build system and will be contributing
conda recipes for distribution via conda in the near future.
Thanks to Thomas Kittelmann (ESS) for lots of help and footwork in the CMake/conda effort!
McStas 3.4 enables most components and instruments on GPU. A very limited instruments using
the "scatter logger" mechanism are still only available on 2.x and key components (e.g. Union
and NCrystal) compute only on CPU.
Tools:
- We are no longer supporting / distributing the Perl-based tool set as all functionality
has finally been ported to the Python tool set (which has been default since v. 2.4)
- mcrun now supports an set of "optimisation" switches to allow evaluating an instrument as
"object function". Thanks to Emmanuel Farhi for working on this.
--optimize Optimize instrument variable parameters to maximize
monitors
--optimize-maxiter=optimize_maxiter
Maximum number of optimization iterations to perform
--optimize-tol=optimize_tol
Tolerance for optimization termination. When optimize-
tol is specified, the selected optimization algorithm
sets some relevant solver-specific tolerance(s) equal
to optimize-tol
--optimize-method=optimize_method
Optimization solver in ['powell', 'nelder-mead', 'cg',
'bfgs', 'newton-cg', 'l-bfgs-b', 'tnc', 'cobyla',
'slsqp', 'trust-constr', 'dogleg', 'trust-ncg',
'trust-exact', 'trust-krylov'] (default: powell) You
can use your custom method method(fun, x0, args,
**kwargs, **options). Please refer to scipy
documentation for proper use of it: https://docs.scipy
.org/doc/scipy/reference/generated/scipy.optimize.mini
mize.html?highlight=minimize
--optimize-minimize
Choose to minimize the monitors instead of maximize
--optimize-monitor=optimize_monitor
Name of a single monitor to optimize (default is to
use all)
- McStas now ships with a "python-aware" code generator for generating "McStasScript" code, example:
mcstas-pygen Instrument.instr --> Instrument_generated.py
Using 'jupytext' this file may easily be converted to a notebook:
jupytext --to ipynb Instrument_generated.py --> Instrument_generated.ipynb
See https://github.com/PaNOSC-ViNYL/McStasScript
for more information on McStasScript.
- McStasScript is included with McStas 3.4 on macOS and Windows and readily configured for use with
McStas 3.4 and its embedded Python version. For sake of user convenience, Jupyterlab is also included
on these platforms, use 'jupyter lab' from within the McStas 'environment' to work with a McStasScript
notebook.
Components and Instruments:
- In relation to the HighNESS project, the Wolter-optic components Conics_* have been given an
overhaul by Mads Bertelsen. New related instrument WOFSANS is included with McStas 3.4.
- Thanks to the work of José Robledo (FZJ), we now have a better interface to the Small-Angle Scattering
models from SASview, aka. SASmodels. Due to the big number of included models that each correspond
to a McStas component (94 in total!), these are now found in the "sasmodels" folder of your McStas
installation. Two example instruments are also included: Test_SasView_bcc_paracrystal_aniso.instr and
Test_SasView_guinier.instr.
- The strain-scanning instrument ILL_SALSA.instr was contributed by Daniel Lomholt Christensen,
Uni Copenhagen and ILL.