KerMor  0.9
Model order reduction for nonlinear dynamical systems and nonlinear approximation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
KerMor.m
Go to the documentation of this file.
1 
2 
3 /* (Autoinserted by mtoc++)
4  * This source code has been filtered by the mtoc++ executable,
5  * which generates code that can be processed by the doxygen documentation tool.
6  *
7  * On the other hand, it can neither be interpreted by MATLAB, nor can it be compiled with a C++ compiler.
8  * Except for the comments, the function bodies of your M-file functions are untouched.
9  * Consequently, the FILTER_SOURCE_FILES doxygen switch (default in our Doxyfile.template) will produce
10  * attached source files that are highly readable by humans.
11  *
12  * Additionally, links in the doxygen generated documentation to the source code of functions and class members refer to
13  * the correct locations in the source code browser.
14  * However, the line numbers most likely do not correspond to the line numbers in the original MATLAB source files.
15  */
16 
17 class KerMor
18  :public handle {
153  public: /* ( Constant ) */
154 
155  static const .char MainVersion = "0";
171  static const .char SubVersion = "7";
187  static const .char PrefTagPrefix = "KerMor_at_";
200  public: /* ( Dependent ) */
201 
296  integer Verbose = "[]";
355  public:
356 
368  public: /* ( Dependent ) */
369 
370  Hasrbmatlab = false;
399  /* Getter & Setter */
400  public: /* ( Dependent ) */
401 
402 
403 #if 0 //mtoc++: 'set.DataDirectory'
404 function DataDirectory(value) {
405  if ~ischar(value)
406  error(" DataDirectory must be a char array ");
407  elseif ~isempty(value) && ~isdir(value)
408  fprintf(" Creating directory %s\n ",value);
409  mkdir(value);
410  end
411  setpref(this.getPrefTag," DATASTORE ",value);
412  }
413 
414 #endif
415 
416 
417 
418 #if 0 //mtoc++: 'set.Workspace'
419 function Workspace(value) {
420  if ~ischar(value)
421  error(" Workspace must be a char array ");
422  elseif ~isempty(value) && ~isdir(value)
423  fprintf(" Creating directory %s\n ",value);
424  mkdir(value);
425  end
426  setpref(this.getPrefTag," WORKSPACE ",value);
427  }
428 
429 #endif
430 
431 
432 
433 #if 0 //mtoc++: 'set.DesktopLayout'
434 function DesktopLayout(value) {
435  setpref(this.getPrefTag," DESKLAYOUT ",value);
436  }
437 
438 #endif
439 
440 
441 
442 #if 0 //mtoc++: 'set.rbmatlabDirectory'
443 function rbmatlabDirectory(value) {
444  if ~isempty(value)
445  if ~isdir(value)
446  error(" Invalid directory: %s ",value);
447  end
448  if ~exist(fullfile(value," startup_rbmatlab.m ")," file ")
449  error(" Invalid rbmatlab directory (no startup script found): %s ",value);
450  end
451  end
452  setpref(this.getPrefTag," RBMATLABDIR ",value);
453  }
454 
455 #endif
456 
466 #if 0 //mtoc++: 'set.JKerMorSourceDirectory'
467 function JKerMorSourceDirectory(value) {
468  if ~isempty(value)
469  if ~isdir(value)
470  error(" Invalid directory: %s ",value);
471  end
472  chk = fullfile(value,[" kermor " filesep " ReducedModel.java "]);
473  if ~exist(chk," file ")
474  error(" Invalid JKerMor directory (no ReducedModel.java found): %s ",value);
475  end
476  end
477  setpref(this.getPrefTag," JKERMORDIR ",value);
478  }
479 
480 #endif
481 
491 #if 0 //mtoc++: 'get.HomeDirectory'
492 function h = HomeDirectory() {
493  if isempty(this.HomeDirectory)
494  this.HomeDirectory= fileparts(which(" KerMor "));
495  end
496  h = this.HomeDirectory;
497  }
498 
499 #endif
500 
501 
502 
503 #if 0 //mtoc++: 'get.DataDirectory'
504 function h = DataDirectory() {
505  h = getpref(this.getPrefTag," DATASTORE ",);
506  }
507 
508 #endif
509 
510 
511 
512 #if 0 //mtoc++: 'get.Workspace'
513 function h = Workspace() {
514  h = getpref(this.getPrefTag," WORKSPACE ",);
515  /* If no workspace is set, use the data directory */
516  if isempty(h)
517  h = this.DataDirectory;
518  end
519  }
520 
521 #endif
522 
523 
524 
525 #if 0 //mtoc++: 'get.TempDirectory'
526 function h = TempDirectory() {
527  h = fullfile(this.DataDirectory," tmp ");
528  if ~exist(h," file ")
529  mkdir(h);
530  end
531  }
532 
533 #endif
534 
543 #if 0 //mtoc++: 'get.DesktopLayout'
544 function d = DesktopLayout() {
545  d = getpref(this.getPrefTag," DESKLAYOUT ",);
546  }
547 
548 #endif
549 
550 
551 
552 #if 0 //mtoc++: 'get.rbmatlabDirectory'
553 function h = rbmatlabDirectory() {
554  h = getpref(this.getPrefTag," RBMATLABDIR ",);
555  }
556 
557 #endif
558 
559 
560 
561 #if 0 //mtoc++: 'get.JKerMorSourceDirectory'
562 function h = JKerMorSourceDirectory() {
563  h = getpref(this.getPrefTag," JKERMORDIR ",);
564  }
565 
566 #endif
567 
568 
569 
570 #if 0 //mtoc++: 'get.Hasrbmatlab'
571 function flag = Hasrbmatlab() {
572  flag = false;
573  if ~isempty(this.rbmatlabDirectory)
574  flag = ~isempty(which(" rbmatlabhome "));
575  if ~flag
576  warning(" KerMor:App ",...
577  [" rbmatlab directory is set, but script "...
578  " "" rbmatlabhome "" could not be found in current path.\n "...
579  " Unsure if rbmatlab-dependent models will work, "...
580  " check if rbmatlab version has changed! "]);
581  end
582  end
583  }
584 
585 #endif
586 
597 #if 0 //mtoc++: 'get.DefaultFigurePosition'
598 function value = DefaultFigurePosition() {
599  value = getpref(this.getPrefTag," DefFigPos ",...
600  get(0," DefaultFigurePosition "));
601  }
602 
603 #endif
604 
605 
606 
607 #if 0 //mtoc++: 'set.DefaultFigurePosition'
608 function DefaultFigurePosition(value) {
609  if numel(value) ~= 4
610  error(" The figure position must be a four element vector ");
611  end
612  setpref(this.getPrefTag," DefFigPos ",value);
613  set(0," DefaultFigurePosition ",value);
614  }
615 
616 #endif
617 
618 
619 
620 #if 0 //mtoc++: 'get.UseDPCM'
621 function value = UseDPCM() {
622  value = getpref(this.getPrefTag," UseDPCM ", false);
623  }
624 
625 #endif
626 
627 
628 
629 #if 0 //mtoc++: 'set.UseDPCM'
630 function UseDPCM(value) {
631  if ~islogical(value)
632  error(" The UseDPCM flag must be boolean. ");
633  end
634  setpref(this.getPrefTag," UseDPCM ",value);
635  }
636 
637 #endif
638 
639 
640 
641 #if 0 //mtoc++: 'get.BlockSize'
642 function value = BlockSize() {
643  value = getpref(this.getPrefTag," BlockSize ", data.FileMatrix.BLOCK_SIZE);
644  }
645 
646 #endif
647 
648 
649 
650 #if 0 //mtoc++: 'set.BlockSize'
651 function BlockSize(value) {
652  if ~isposrealscalar(value)
653  error(" The BlockSize property must be a positive real scalar. ");
654  end
655  setpref(this.getPrefTag," BlockSize ",value);
656  }
657 
658 #endif
659 
660 
661 
662 #if 0 //mtoc++: 'get.UseDiary'
663 function value = UseDiary() {
664  value = getpref(this.getPrefTag," UseDiary ",false);
665  }
666 
667 #endif
668 
669 
670 
671 #if 0 //mtoc++: 'set.UseDiary'
672 function UseDiary(value) {
673  if ~islogical(value)
674  error(" The UseDiary flag must be boolean. ");
675  end
676  setpref(this.getPrefTag," UseDiary ",value);
677  }
678 
679 #endif
680 
681 
682 
683 #if 0 //mtoc++: 'get.Verbose'
684 function value = Verbose() {
685  value = getpref(this.getPrefTag," Verbose ",1);
686  }
687 
688 #endif
689 
690 
691 
692 #if 0 //mtoc++: 'set.Verbose'
693 function Verbose(value) {
694  if ~isposintscalar(value)
695  error(" The Verbose flag must be a positive integer ");
696  end
697  setpref(this.getPrefTag," Verbose ",value);
698  }
699 
700 #endif
701 
702 
703  private: /* ( Dependent ) */
704 
705 
706  function initialize() {
707 
708  disp(" <<<<<<<<< Welcome to KerMor! >>>>>>>>>> ");
709 
710  /* Check if preferences are set (i.e. KerMor.setup has been run on this machine) */
711  disp(" Checking environment... ")
712  pset = ~isempty(getpref(this.getPrefTag," DATASTORE ",[]));
713  if ~pset
714  if numlabs > 1
715  /* For parallel computing case, throw an error as KerMor
716  * must be setup on each machine running parallel jobs! */
717  error(" You must run KerMor.setup on each machine you want to run parallel jobs with KerMor! ");
718  else
719  fprintf(2," No KerMor preferences on this host found. Searching for settings from other hosts...\n ");
720  phome = getpref;
721  fn = fieldnames(phome);
722  op = strfind(fn,KerMor.PrefTagPrefix);
723  for i=1:numel(op)
724  if op[i] == 1
725  fprintf(" Do you want to copy the following preferences from host '%s'?\n ",fn[i](length(KerMor.PrefTagPrefix)+1:end));
726  disp(phome.(fn[i]));
727  r = lower(input(" (Y)es, (N)o or (C)ancel and start KerMor setup: "," s "));
728  /* Yes: copy prefs */
729  if r == " y "
730  /* Select preferences substruct from host and copy
731  * NOT using Utils.xx here as this is not yet on
732  * the PATH! */
733  localp = phome.(fn[i]);
734  pfn = fieldnames(localp);
735  for k = 1:numel(pfn)
736  setpref(this.getPrefTag,pfn[k],localp.(pfn[k]));
737  end
738  pset = true;
739  break;
740  /* cancel: start setup */
741  elseif r == " c "
742  break;
743  end
744  end
745  end
746  if ~pset
747  if i == numel(op)
748  fprintf(2," No preferences copied from other hosts. Have to run setup.\n ");
749  end
750  fprintf(2," Entering KerMor setup...\n ");
751  KerMor.setup;
752  end
753  end
754  else
755  fprintf(" KerMor preferences/settings found for tag '%s'...\n ",this.getPrefTag);
756  end
757 
758  disp(" Initializing environment... ");
759 
760  warning off MATLAB:dispatcher:nameConflict;
761 
762  /* Stuff only for single instance mode */
763  if exist(" numlabs "," builtin ") == 5 && numlabs == 1
764  /* Preferences & Environment */
765  setpref(" Internet "," SMTP_Server "," localhost ");
766 
767  /* Desktop-only stuff */
768  if usejava(" desktop ")
769  /* Figure position settings */
770  if ~isempty(this.DefaultFigurePosition)
771  set(0," DefaultFigurePosition ",this.DefaultFigurePosition);
772  end
773 
774  if ~isempty(this.DesktopLayout)
775  fprintf(" Applying desktop layout %s..\n ",this.DesktopLayout);
776  desktop = com.mathworks.mde.desk.MLDesktop.getInstance;
777  desktop.restoreLayout(this.DesktopLayout);
778  end
779  end
780 
781  disp(" Calling "" dbstop if error "" .. ");
782  dbstop if error;
783  end
784 
785  phome = this.HomeDirectory;
786  addpath(phome);
787 
788  pcore = fullfile(phome," core ");
789 
790  /* Initialize external folders & software */
791  initextern(phome, pcore);
792 
793  /* Setup home directory & paths (AFTER extern, to have the path
794  * entries search BEFORE externally created ones) */
795  addpath(fullfile(phome," documentation "));
796  addpath(fullfile(pcore," visual "));
797  addpath(fullfile(pcore," tools "));
798  addpath(fullfile(pcore," interfaces "));
799  addpath(pcore);
800  addpath(phome);
801 
802  initParallelization;
803 
804  clear(" phome "," pcore ");
805 
806  if this.UseDiary
807  /* Fix for non-unix log files */
808  if isunix || ~isempty(which(" ppid "))
809  pid = ppid;
810  else
811  pid = 0;
812  end
813  dfile = sprintf(" %s_KerMor%s.%s_pid%d_diary.txt ",datestr(now," yyyy-mm-dd "),...
814  KerMor.MainVersion,KerMor.SubVersion,pid);
815  dfile = fullfile(this.TempDirectory,dfile);
816  fprintf(" Initializing diary in %s..\n ",dfile);
817  diary(dfile);
818  end
819 
820  /* Set more narrow format as default */
821  format compact;
822 
823  warning on MATLAB:dispatcher:nameConflict;
824 
825  disp(" <<<<<<<<< Ready to go. >>>>>>>>>> ");
826 
827  function initextern(phome, pcore)
828  /* Checks for 3rd party software availability
829  *
830  * @todo include checks for pardiso once pardiso solver is
831  * implemented/wrapped */
832 
833  /* rbmatlab */
834  if ~isempty(this.rbmatlabDirectory)
835  disp(" <<<<<<<<< Starting rbmatlab >>>>>>>>>> ");
836  setenv(" RBMATLABTEMP ", this.TempDirectory);
837  setenv(" RBMATLABHOME ", this.rbmatlabDirectory);
838  addpath(this.rbmatlabDirectory);
839  curdir = pwd;
840  evalin(" base "," startup_rbmatlab; ");
841  evalin(" base "," clear all; ");
842  chdir(curdir);
843  disp(" <<<<<<<<< Done Starting rbmatlab >>>>>>>>>> ");
844  end
845 
846  /* Add KerMor-included external software paths */
847  disp(" Initializing external tools... ")
848  addpath(fullfile(pcore," extern "));
849  addpath(fullfile(pcore," extern "," export_fig "));
850  addpath(fullfile(pcore," extern "," compat "));
851  addpath(fullfile(phome," matlabtojarmos "));
852  addpath(fullfile(phome," matlabtools "));
853  addpath(fullfile(phome," dpcm "));
854 
855  /* md5 */
856  d = fullfile(pcore," extern "," calcmd5 ");
857  addpath(d);
858  if ~exist(fullfile(d,[" CalcMD5. " mexext])," file ")
859  warning(" KerMor:init "," No compiled CalcMD5 mex file found. Did you run KerMor.setup completely?\nKerMor might not run properly. ");
860  end
861 
862  /* md5 */
863  d = fullfile(pcore," extern "," typecastx ");
864  addpath(d);
865  if ~exist(fullfile(d,[" typecastx. " mexext])," file ")
866  warning(" KerMor:init "," No compiled typecastx mex file found. Did you run KerMor.setup completely?\nKerMor might not run properly. ");
867  end
868  end
869 
870  function initParallelization
871  /* Initializes variables for parallel computation
872  *
873  * @todo wrap with try-catch and set flag in KerMor.App
874  * class!
875  *
876  * @note The 'feature' command is undocumented, see
877  * http://www.mathworks.com/matlabcentral/newsreader/view_thread/154551
878  * for more information. */
879 
880  /* Sets the maximum number of threads to create by OpenMP
881  * binaries according to the number of cores available on
882  * the machine. */
883  setenv(" OMP_NUM_THREADS ",num2str(feature(" numCores ")));
884  end
885  }
893  function shutdown() {
894 
895  if this.UseDiary
896  disp(" Disabling diary.. ");
897  diary off;
898  end
899 
900  dbclear if error;
901  }
908  public: /* ( Static ) */ /* ( Dependent ) */
909 
910  static function KerMortheinstance = App() {
911  persistent instance;
912  if isempty(instance)
913  instance = KerMor;
914  end
915  theinstance = instance;
916  }
928  static function setup() {
929  disp(" <<<<<<<<<< Welcome to the KerMor setup script. >>>>>>>>>> ");
930 
931  a = KerMor.App;
932  addpath(a.HomeDirectory);
933  addpath(genpath(fullfile(a.HomeDirectory," documentation ")));
934 
935  /* % KerMor directories
936  * Setup the data storage directory */
937  ds = a.DataDirectory;
938  word = " keep ";
939  if isempty(ds)
940  ds = fullfile(a.HomeDirectory," data ");
941  word = " set ";
942  end
943  str = sprintf(" Do you want to %s %s as your KerMor data file directory? Choosing 'No' opens a directory selection dialog.\n(Y)es/(N)o?: ",word,strrep(ds," \ "," \\ "));
944  if isequal(lower(input(str," s "))," n ")
945  d = uigetdir(ds," Please specify the KerMor data file directory ");
946  if d == 0
947  error(" No KerMor data file directory specified. Aborting setup. ");
948  end
949  ds = d;
950  end
951  a.DataDirectory= ds;
952 
953  /* % Setup KerMor development */
954  if isempty(getpref(" KERMOR_DEVEL "," author ",))
955  str = sprintf(" Do you want to develop KerMor on this machine?\n(Y)es/(N)o: ");
956  ds = lower(input(str," s "));
957  if isequal(ds," y ")
958  addpath(fullfile(a.HomeDirectory," core "," tools "));
959  Devel.setup;
960 
961  /* % Call setup for documentation creation */
962  addpath(fullfile(a.HomeDirectory," core "," extern "));
963  MatlabDocMaker.setup;
964  end
965  end
966 
967  /* % 3rd party programs */
968  KerMor.setupextern;
969 
970  disp(" <<<<<<<<<< Setup complete. You can now start KerMor by running 'KerMor.start;'. >>>>>>>>>> ");
971  }
988  static function KerMorapp = start() {
989  app = KerMor.App;
990  app.initialize;
991  }
1009  static function stop() {
1010  KerMor.App.shutdown;
1011  }
1023  static function host = getHost() {
1024  try
1025  host = char(getHostName(java.net.InetAddress.getLocalHost));
1026  catch ME
1027 /* warning('KerMor:hostdetection','Your Host could not be identified. Using "unknown"'); */
1028  host = " unknown ";
1029  end
1030  host = regexprep(strtrim(host)," [^\d\w] ",);
1031  }
1039  static function b = getGitBranch(dir) {
1040  if nargin < 1
1041  dir = KerMor.App.HomeDirectory;
1042  end
1043  olddir = pwd;
1044  cd(dir);
1045  /* [s, m] = system(sprintf('export TERM=%s; git log -n 1 --pretty=format:"%%H: %%s%%+ai by %%an<%%ae>"',getenv('TERM'))); */
1046  [s, msg] = system(" git log -n 1 --pretty=format:'%H: %s%+ai by %an<%ae>' > .gitbranch ");
1047  if s == 0
1048  b = fileread(" .gitbranch ");
1049  delete .gitbranch;
1050  else
1051  fprintf(2," KerMor.getGitBranch: %s\n ",strrep(msg,char(10),));
1052  b = [];
1053  end
1054  cd(olddir);
1055  }
1064  static function chard = DocumentationLocation() {
1065  d = MatlabDocMaker.getOutputDirectory;
1066  if isempty(d) || ~exist(fullfile(d," index.html ")," file ")
1067  d = " http://www.morepas.org/software/kermor/index.html ";
1068  end
1069  }
1083  static function createLogo() {
1084  h = figure;
1085  [X,Y] = meshgrid(-10:.5:10);
1086  Z = exp(-(X.^2+Y.^2-2*X" *Y)/20);% + .5*exp(-(X2.^2+Y2.^2-2*X2 "*Y2)/5);
1087  surfl(X,Y,Z," Parent ",h);
1088  lighting gouraud;
1089  colormap autumn;
1090  grid on;
1091  }
1098  static function tag = getPrefTag() {
1099  tag = [KerMor.PrefTagPrefix KerMor.getHost];
1100  }
1114  static function d = getDir() {
1115  t = KerMor.getPrefTag;
1116  path = getpref(t," LASTPATH ",KerMor.App.HomeDirectory);
1117  if exist(path," dir ") ~= 7
1118  path = fileparts(path);
1119  if exist(path," dir ") ~= 7
1120  path = pwd;
1121  end
1122  end
1123  d = uigetdir(path," Select directory ");
1124  if ~isequal(d, 0) && exist(d," dir ") == 7
1125  setpref(t," LASTPATH ",d);
1126  else
1127  d = false;
1128  end
1129  }
1138  private: /* ( Static ) */ /* ( Dependent ) */
1139 
1140 
1141  static function setupextern() {
1142  a = KerMor.App;
1143 
1144  /* % Optional: rbmatlab */
1145  rbmat = a.rbmatlabDirectory;
1146  if ~isempty(rbmat)
1147  str = sprintf(" Do you want to keep the local rbmatlab version at %s with KerMor?\n(Y)es/(N)o: ",strrep(rbmat," \ "," \\ "));
1148  resp = " n ";
1149  else
1150  str = sprintf(" Do you want to register a local rbmatlab version with KerMor?\n(Y)es/(N)o: ");
1151  resp = " y ";
1152  end
1153  ds = lower(input(str," s "));
1154  if isequal(ds,resp)
1155  rbmat = uigetdir(pwd," Please select the rbmatlab source root folder. ");
1156  if rbmat == 0
1157  warning(" KerMor:setup ",[" No rbmatlab directory specified. Continuing witout using rbmatlab.\n "...
1158  " You can still register a local version of rbmatlab by setting the KerMor.App.rbmatlabDirectory manually. "]);
1159  else
1160  a.rbmatlabDirectory= rbmat;
1161  end
1162  end
1163 
1164  /* % Optional: JKerMor */
1165  jk = a.JKerMorSourceDirectory;
1166  if ~isempty(jk)
1167  str = sprintf(" Do you want to keep the local JKerMor version at %s with KerMor?\n(Y)es/(N)o: ",strrep(jk," \ "," \\ "));
1168  resp = " n ";
1169  else
1170  str = sprintf(" Do you want to register a local JKerMor version with KerMor?\n(Y)es/(N)o: ");
1171  resp = " y ";
1172  end
1173  ds = lower(input(str," s "));
1174  if isequal(ds,resp)
1175  jk = uigetdir(pwd," Please select the JKerMor source root folder. ");
1176  if jk == 0
1177  warning(" KerMor:setup ",[" No JKerMor directory specified. Continuing witout using JKerMor.\n "...
1178  " You can still register a local version of JKerMor by setting the KerMor.App.JKerMorSourceDirectory manually. "]);
1179  else
1180  a.JKerMorSourceDirectory= jk;
1181  end
1182  end
1183 
1184  /* % Compile MEX files */
1185  warning off MATLAB:dispatcher:nameConflict
1186  olddir = pwd;
1187  /* CalcMD5 */
1188  disp(" Compliling CalcMD5.. ");
1189  cd(fullfile(a.HomeDirectory," core "," extern "," calcmd5 "));
1190  mex CFLAGS="\$CFLAGS -std=c99" CalcMD5.c
1191 
1192  /* typecast/x */
1193  disp(" Compliling typecast/x.. ");
1194  cd(fullfile(a.HomeDirectory," core "," extern "," typecastx "));
1195  mex typecast.c
1196  mex typecastx.c
1197 
1198  if isunix
1199  disp(" Compliling ppid.. ");
1200  cd(fullfile(a.HomeDirectory," core "," extern "));
1201  mex ppid.c
1202  else
1203  warning(" KerMor:setup "," No ppid function available (win32 platform) ");
1204  end
1205 
1206  warning on MATLAB:dispatcher:nameConflict
1207  cd(olddir);
1208  }
1209 
1210 
1211  static function app = loadobj(unused1) {
1212  app = KerMor.App;
1213  }
1223  private: /* ( Dependent ) */
1224 
1225  KerMor() {
1226  }
1233  function obj = saveobj() {
1234  obj = [];
1235  }
1298 };
1299 
static function host = getHost()
Returns the hostname of the current machine.
Definition: KerMor.m:1023
static function tag = getPrefTag()
Returns the tag used to store the KerMor preferences and settings.
Definition: KerMor.m:1098
rowvec DefaultFigurePosition
The default figure position to use.
Definition: KerMor.m:309
function varargout = typecast(varargin)
Definition: typecast.m:17
static function setup()
Setup variables for Kermor Development when Kermor is setup for the first time or any other time manu...
Definition: Devel.m:153
function MD5 = CalcMD5(Data, InClass, OutClass)
128 bit MD5 checksum: file, string, byte stream [MEX] This function calculates a 128 bit checksum for...
Definition: CalcMD5.m:17
static function char d = DocumentationLocation()
Returns the location of the kermor documentation.
Definition: KerMor.m:1064
char DataDirectory
The directory to use for simulation data storage.
Definition: KerMor.m:202
A double value.
static function stop()
Ends the KerMor application.
Definition: KerMor.m:1009
char JKerMorSourceDirectory
The source directory for JKerMor, if available.
Definition: KerMor.m:283
char TempDirectory
The directory to use for temporary simulation data.
Definition: KerMor.m:384
function [ im , alpha ] = export_fig(varargin)
Make sure the figure is rendered correctly now so that properties like axes limits are up-to-date...
Definition: export_fig.m:17
An integer value.
integer Verbose
Verbose output level.
Definition: KerMor.m:296
Matlab's base handle class (documentation generation substitute)
static function KerMor app = start()
Starts the KerMor application.
Definition: KerMor.m:988
A boolean value.
static const .char SubVersion
The current KerMor sub version number.
Definition: KerMor.m:171
function varargout = typecastx(varargin)
Definition: typecastx.m:17
static function setup()
Performs installation of KerMor on a system.
Definition: KerMor.m:928
fieldnames
Returns a cell array of string containing the names of public properties. See the MATLAB fieldnames f...
double BlockSize
The default block size (in MB) for FileMatrix instances.
Definition: KerMor.m:232
Hasrbmatlab
Flag if rbmatlab wrapping functionalities are enabled.
Definition: KerMor.m:370
static function b = getGitBranch(dir)
Returns the current git commit in a descriptive string.
Definition: KerMor.m:1039
disp
Handle object disp method which is called by the display method. See the MATLAB disp function...
#define X(i, j)
char DesktopLayout
The preferred desktop layout to work with.
Definition: KerMor.m:252
Speed test * all(1:3)
logical UseDiary
Flag that determines if KerMor also enables the diary function upon startup.
Definition: KerMor.m:325
Developer utilities.
Definition: Devel.m:17
logical UseDPCM
Switch to determine if the Default Property Changed System shall be used or not.
Definition: KerMor.m:219
HomeDirectory
The KerMor home directory.
Definition: KerMor.m:357
#define Y(i, j)
function res = isposintscalar(value)
isposintscalar: Backwards-compatibility function for matlab versions greater than 2012a ...
Global configuration class for all KerMor run-time settings.
Definition: KerMor.m:17
A matlab row vector.
static function KerMor theinstance = App()
The singleton KerMor instance.
Definition: KerMor.m:910
static function createLogo()
Creates the KerMor logo.
Definition: KerMor.m:1083
A MatLab character array.
function res = isposrealscalar(value)
isposintscalar: Backwards-compatibility function for matlab versions greater than 2012a ...
char rbmatlabDirectory
The source directory for a copy of rbmatlab.
Definition: KerMor.m:270
char Workspace
The base directory where KerMor stores and looks for data from models etc.
Definition: KerMor.m:341
static const .char MainVersion
The current KerMor main version number.
Definition: KerMor.m:155
static function d = getDir()
Returns a folder selected by a uigetdir command. Remembers the last selected folder (if successful & ...
Definition: KerMor.m:1114
static const .char PrefTagPrefix
The prefix for the host-dependent preference tags.
Definition: KerMor.m:187