diff --git a/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.ele b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.ele
new file mode 100644
index 0000000000000000000000000000000000000000..06649ceaea192490ec3c7bcb6e4b2a84b8d220c5
--- /dev/null
+++ b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.ele
@@ -0,0 +1,726 @@
+724  4  0
+    1      48   170    84   171
+    2      78   202   171   213
+    3      16    48    45   171
+    4     128   159   108   191
+    5     167   168    77   200
+    6      72   166    25   199
+    7       8   197    44   198
+    8     162   166    72   199
+    9      50    84    83   196
+   10      67   126    17   172
+   11      48   125    45   171
+   12     103   150    63   210
+   13     102   177    59   194
+   14     119   172    75   213
+   15      10   157    69   208
+   16     126   167   119   172
+   17      30   157   107   190
+   18      52   182   180   209
+   19      88   192   105   205
+   20     152   194   104   203
+   21     107   187   150   190
+   22      23   141    86   192
+   23      97    99   140   184
+   24      55   189   133   207
+   25      97   138    31   151
+   26      35   142    60   194
+   27      27   118    74   164
+   28     101   127    21   152
+   29     126   171   167   200
+   30      90   109    55   133
+   31      21   178   152   203
+   32     134   173    93   174
+   33      27    83    50    84
+   34      85   127    29   211
+   35     164   176   111   202
+   36      65   153   105   156
+   37     149   186    59   203
+   38      88    87   129   130
+   39      23   141    97   151
+   40     177   178   136   203
+   41      76   164    43   198
+   42      84   176   126   202
+   43      89   116    90   133
+   44      40   112    71   113
+   45      40    70    71   112
+   46     125   126    45   171
+   47     133   161    66   176
+   48      65   105    14   156
+   49      66   189   187   207
+   50      67    68    38   110
+   51      60   144    62    61
+   52     124   165    33   204
+   53      52   128   108   191
+   54      26    90    89   116
+   55     114   164    76   198
+   56     150   190   104   192
+   57      59   186   102   194
+   58      69   157   103   190
+   59     120   170   196   122
+   60     116   164   117   197
+   61       5   112    41   113
+   62      37   110   107   157
+   63     132   181    32   189
+   64     121   122    18   196
+   65      84   123    27   202
+   66      73   195   163   199
+   67     182   204   137   209
+   68     140    97    23    99
+   69      96   136   135   178
+   70      28    80    57    81
+   71      23    99    97   141
+   72     153   156    63   193
+   73     100   152    21   178
+   74     148   151   146   190
+   75     115    43    15   213
+   76     138   186   139   188
+   77      48   125    84   170
+   78     105   153    65   155
+   79     108   204   182   209
+   80     104   193   192   205
+   81      18    83    40   121
+   82      32   111    89   133
+   83      59    95    94   149
+   84     135   136    34   178
+   85      95   137   132   189
+   86      57    80    52   108
+   87     104   151   149   186
+   88     186   194    59   203
+   89     152   191   150   193
+   90     115   197     8   198
+   91     170   125   201    48
+   92     140   183     7   184
+   93       9   108    52   128
+   94      70     5    71   112
+   95      44   116    26   117
+   96      84   126   125   171
+   97      66   159   126   161
+   98      52   191   108   209
+   99      41   112    72   113
+  100     108   191   159   209
+  101     125   170   201   160
+  102      77   168   167   169
+  103     103   157    30   190
+  104      52     9    57   108
+  105     127   152   101   193
+  106      38    68    37   110
+  107     133   189    66   207
+  108       8    76   115   198
+  109      65   153   143   154
+  110      31   151   138   206
+  111      62   144     6    61
+  112     192   193   105   205
+  113     153   154   101   211
+  114      72   163   111   199
+  115      13   101   100   212
+  116     104   187   150   191
+  117      13   154   101   212
+  118      23    97    86   151
+  119     102    61   144   194
+  120     153   193    63   211
+  121      20   159   126   160
+  122      14    88   130   156
+  123      30   107    37   159
+  124      65   154     2   155
+  125      42   111    89   162
+  126      85   150    30   191
+  127     194   205   142   212
+  128      97   141    99   151
+  129     120    82    50   170
+  130      22    60    61   102
+  131      66   161   126   176
+  132      30   128    85   191
+  133      59   139   102   186
+  134      54    89    26    90
+  135      70   112    40   114
+  136      66   159   107   187
+  137      32   132    91   181
+  138      49   124    80   160
+  139      56    91    12    92
+  140     126   159    37   161
+  141      78   168    46   169
+  142     144   177   102   194
+  143     113   121    40   196
+  144      86   148   129   192
+  145       7   184   183   185
+  146      17   109    90   133
+  147     141   192    88   205
+  148     167   168    45   169
+  149      97   184   139   185
+  150       2   154    64   155
+  151     111   195   181   199
+  152      78   123    47   171
+  153      84   176   111   195
+  154      49   160    80   201
+  155      43   197   115   198
+  156      38    67    24    68
+  157      93   174   173   189
+  158     150   152   104   191
+  159      24   167    77   200
+  160     122   170    49   201
+  161      71   112     5   113
+  162     163   195   111   199
+  163      17   172   126   176
+  164     124   160    49   195
+  165      37   106    30   159
+  166      40   113    71   121
+  167     136   178    96   203
+  168     127   191   152   193
+  169      67   167   126   172
+  170     139   185   102   186
+  171      66   187   107   207
+  172     104   187   149   206
+  173      40    74    19   114
+  174      84   170   123   171
+  175     107   110    37   161
+  176      42   164   114   198
+  177      63   193   150   211
+  178      39   161   107   207
+  179      50   123    84   170
+  180      49   170   160   201
+  181      46   168     4   169
+  182      84   170    49   196
+  183      49   195    84   196
+  184     183   184    99   185
+  185     111   114    42   164
+  186      31   158   146   190
+  187     109   161    39   207
+  188      54    90    55   175
+  189      44   197   117   198
+  190     111   163    84   195
+  191     117   164    42   198
+  192      73   121   113   163
+  193      86    97    31   151
+  194      90   133    55   175
+  195     125   160    84   170
+  196      80   160    81   201
+  197     160   176   126   195
+  198     144   100    34   177
+  199     139   149    59   188
+  200     103   146    69   190
+  201      74   114    40   163
+  202     107   150    30   190
+  203      74   118    43   164
+  204       4   168    77   169
+  205      27    84    50   123
+  206     189   206   187   207
+  207     151   192   141   205
+  208     163   195    73   196
+  209      71    18    40   121
+  210     149   151   138   186
+  211      43   118    15   213
+  212      35   145   141   205
+  213     146   148    86   151
+  214     100   194   152   203
+  215      36   138    97   139
+  216     147   192   190   210
+  217     107   158    39   207
+  218      95   132    94   149
+  219      60   102    22   145
+  220     183   140    99   184
+  221      89   111    32   162
+  222      28    81    48   201
+  223      34   177   100   178
+  224     146   147    53   148
+  225     111   162    72   199
+  226      60   142    13   194
+  227     181   195    66   204
+  228     108   160    33   204
+  229      31   138    93   206
+  230     119   167   126   171
+  231     107   161    66   207
+  232     180   191    52   209
+  233     126   202   176   213
+  234      45   126    68   200
+  235      53   146   103   147
+  236      38    37    10   110
+  237      15   118    78   213
+  238     101   152   100   212
+  239     138   151   149   206
+  240      26   116    89   117
+  241      10   110    37   157
+  242     171   202   126   213
+  243     129   147    87   148
+  244     100   101    21   152
+  245      97    98    36   139
+  246      52    80    33   108
+  247      48   170    79   201
+  248      98   184     7   185
+  249     153   154    65   155
+  250      55   173   133   189
+  251     149   151   104   206
+  252     143     2    65   154
+  253      78   171   119   213
+  254      58   108     9   128
+  255       9    52    51   128
+  256      60    62   144   194
+  257      94   138    93   188
+  258     132   149    95   189
+  259       9    58    57   108
+  260     104   190   151   192
+  261     105   192   156   193
+  262      69   103    53   146
+  263      70    40    19   114
+  264      95   149   137   189
+  265     192   193   150   210
+  266      58    81    57   108
+  267     102   145    60   194
+  268      57    81    80   108
+  269      52   127    51   191
+  270      12    92    91   179
+  271      60    61   102   194
+  272     150   192   104   193
+  273      30   150   103   190
+  274     130    88    87   156
+  275      13   142   100   194
+  276      53   147   129   148
+  277     125   126    84   160
+  278      55   109    39   207
+  279     129   131    88   130
+  280      30   159   128   191
+  281      86   141    23   151
+  282     153   155   105   193
+  283      40   114   112   163
+  284      27   196    84   202
+  285      85   128    51   191
+  286     160   195    33   204
+  287      94   134    93   174
+  288     109   133    17   161
+  289     109   110    39   161
+  290      84   160    49   170
+  291      89    90    54   175
+  292      96   137    92   179
+  293      31   146    86   151
+  294     117   197   164   198
+  295      15    78    46   119
+  296      91    92    56   166
+  297     112   113    40   163
+  298      45   168   167   200
+  299      68   126    67   200
+  300     136   177    34   178
+  301      49   122   121   196
+  302      92   137    91   179
+  303      63   103    85   150
+  304      92   165    56   166
+  305     167   171    45   200
+  306      81   160   125   201
+  307      29    85    51   127
+  308      46   119    78   169
+  309     172   176    75   213
+  310     131   130   129     3
+  311      88   129    87   192
+  312     119   171   126   213
+  313      39   158    55   207
+  314     105   193   155   212
+  315      15   119    75   213
+  316      33   182   108   204
+  317     104   187   152   203
+  318      16   123    48   171
+  319     107   159    66   161
+  320     123   170    48   171
+  321      84   125    48   171
+  322     124   195   165   204
+  323     146   151    31   190
+  324      74    83    27   163
+  325      37   159   107   161
+  326      47     4    46   168
+  327     136   149    59   203
+  328      20    68    45   126
+  329      82   123    50   170
+  330      20   106    68   126
+  331      37   110    68   161
+  332      80    81    28   201
+  333      24    68    67   200
+  334      46    78    47   168
+  335      67   126    68   161
+  336      93   138   134   188
+  337      68   106    37   126
+  338      20   126   125   160
+  339     163   196    27   202
+  340      72   114   111   163
+  341      33   108    80   160
+  342      55   173    54   175
+  343      45   125    20   126
+  344      50   170    84   196
+  345     133   173    55   175
+  346      80   124    33   160
+  347      63   193   156   210
+  348      68   126    37   161
+  349     104   152   150   193
+  350     133   164   116   176
+  351     145   194   186   205
+  352     126   160    66   176
+  353     107   206   158   207
+  354      12    96    92   179
+  355     118   164    27   202
+  356     164   197    43   198
+  357      89   133    90   175
+  358      67   109    17   161
+  359     105   193    35   205
+  360      55   133   109   207
+  361      33   160   124   195
+  362     173   174    11   175
+  363     137   187   149   203
+  364      79   170   122   201
+  365      39   158   107   190
+  366     150   191    85   211
+  367      40   121    83   196
+  368      32   133   132   189
+  369      56   165    25   166
+  370      42   114   111   162
+  371     141   145    99   205
+  372      27   163    83   196
+  373      92   137    96   182
+  374     149   187   104   203
+  375     126   167    67   200
+  376     137   180    96   182
+  377     102   186   145   194
+  378      62    60    13   194
+  379      15    75   115   213
+  380      85   103    30   150
+  381      49   160    84   195
+  382     137   181    66   204
+  383      59   149   139   186
+  384      98   139    97   184
+  385      51   127    85   191
+  386     149   187   137   189
+  387      91   166    32   181
+  388     139   184    98   185
+  389      31   190   151   206
+  390     100   178   177   194
+  391     150   187   107   191
+  392     149   186   138   188
+  393      51   128    52   191
+  394     108   182    52   209
+  395      59   136    95   149
+  396      93   138    94   149
+  397      94   149   132   189
+  398     132   133    32   175
+  399     135   136    96   179
+  400      92   182    33   204
+  401     137   187    66   189
+  402     137   181   132   189
+  403      88   141    23   192
+  404     187   206   107   207
+  405     107   110    39   208
+  406      37   126   106   159
+  407      94   149   138   188
+  408      11   173   134   174
+  409     159   191   187   209
+  410      13   100    62   194
+  411     105   155   142   212
+  412      35   205   193   212
+  413     152   187   104   191
+  414      60   145    35   194
+  415      14   105    88   156
+  416      33   165    92   204
+  417     133   181    66   189
+  418     107   190   157   208
+  419      39   190   107   208
+  420      20   125    81   160
+  421      80   108    81   160
+  422     100   177   144   194
+  423     138   139    36   188
+  424      49   170   122   196
+  425     132   174    94   189
+  426     139   186   149   188
+  427     134   138    36   188
+  428     144    62   100   194
+  429      91   137    92   181
+  430      92   166    91   181
+  431     107   187   159   191
+  432     141   151    86   192
+  433     165   199   181   204
+  434     150   159    30   191
+  435     129   148    87   192
+  436     100   142    13   212
+  437      52   180    21   191
+  438     107   159   150   191
+  439     142   205    35   212
+  440      37   107    30   157
+  441      21   127    52   191
+  442      92   181   137   204
+  443     129    88   131   192
+  444     103   147   146   190
+  445     137   182    92   204
+  446      87   156    88   192
+  447      91   137    95   179
+  448     135    96    12   179
+  449     164   202   118   213
+  450     110   157    10   208
+  451     101   193   152   212
+  452     152   205   194   212
+  453      21   152   127   191
+  454     193   205   152   212
+  455      59   149    94   188
+  456      30   106    58   159
+  457      67   110   109   161
+  458      68   110    67   161
+  459      66   204   108   209
+  460      32   181   133   189
+  461      17   126    67   161
+  462     106   126    20   159
+  463     111   114    72   162
+  464      40    83    74   163
+  465      48    79    28   201
+  466      30   150   107   159
+  467     108   128    58   159
+  468      58   128    30   159
+  469      39   110   107   161
+  470      83   121    18   196
+  471     134    94    93   188
+  472      86   129   131   192
+  473     126   159    66   160
+  474      66   159   108   160
+  475     166   181   165   199
+  476     186   194   104   205
+  477      81   108    58   160
+  478     108   159    58   160
+  479      81   106    20   160
+  480     106   159    20   160
+  481      99   186   151   205
+  482      52   108    33   182
+  483     178   194   100   203
+  484      78   169   119   171
+  485      58   106    81   160
+  486      58   159   106   160
+  487     112   114    72   163
+  488     111   164   133   176
+  489      54   173    11   175
+  490     177   194   178   203
+  491      25   166   165   199
+  492      19    74    43   164
+  493      19   114    74   164
+  494     111   163   114   164
+  495     114   163    74   164
+  496     152   178   100   203
+  497     111   181   162   199
+  498      76    19    43   164
+  499      76   114    19   164
+  500      89   117   116   164
+  501     116   133    89   164
+  502      42   117    89   164
+  503      89   111    42   164
+  504      89   133   111   164
+  505      48    82    79   170
+  506      82    48    16   170
+  507      48   123    16   170
+  508      16   123    82   170
+  509      43   115    76   198
+  510      75   164   116   197
+  511     126   171    84   202
+  512      84   196   163   202
+  513      84   171   123   202
+  514      78   118    27   202
+  515     120     1    82   170
+  516     120   122     1   170
+  517      82     1    79   170
+  518       1   122    79   170
+  519      47   168    78   171
+  520      45   168    47   171
+  521      16    45    47   171
+  522      47   123    16   171
+  523      59   194   177   203
+  524     152   191    21   203
+  525      32   133    89   175
+  526     104   186   149   203
+  527     119   169   167   171
+  528     167   169    45   171
+  529      45   169   168   171
+  530     168   169    78   171
+  531     104   194   186   203
+  532      59   177   136   203
+  533     137   149    95   203
+  534      95   149   136   203
+  535      17   161   133   176
+  536     126   161    17   176
+  537     116   164    75   176
+  538      75   172   116   176
+  539      90   133   116   176
+  540     116   172    90   176
+  541      17   133    90   176
+  542      90   172    17   176
+  543     150   193    63   210
+  544     195   199   165   204
+  545      66   181   137   189
+  546      81   125    48   201
+  547     165   166    92   181
+  548      32   162   111   181
+  549      32   166   162   181
+  550      45   171   126   200
+  551     111   133    32   181
+  552     147   148   146   190
+  553     105   156   153   193
+  554      66   161   133   207
+  555      91   132    95   181
+  556     132   137    95   181
+  557      95   137    91   181
+  558      99   151   141   205
+  559     111   176   133   181
+  560     133   176    66   181
+  561      66   176   111   181
+  562      40   163   113   196
+  563     145   186    99   205
+  564      88   105    35   205
+  565     113   163   121   196
+  566      84   195   163   196
+  567     121   163    73   196
+  568     187   191   152   203
+  569      83   163    40   196
+  570      83    84    27   196
+  571     138   149    93   206
+  572     107   190   158   206
+  573      97   151    99   186
+  574     144    61    60   194
+  575     187   190   107   206
+  576     157   190    69   208
+  577      22   145   102   186
+  578     102   185    22   186
+  579     104   192   151   205
+  580     126   176    84   195
+  581      67   167    24   200
+  582     116   117    44   197
+  583      97   139   138   186
+  584     138   151    97   186
+  585     162   181   166   199
+  586      66   181   111   195
+  587      99   145    22   186
+  588      97   185   139   186
+  589      66   176   160   195
+  590     183    99    22   186
+  591     183   185    99   186
+  592      22   185   183   186
+  593      99   184    97   186
+  594      99   185   184   186
+  595     184   185    97   186
+  596     111   176    66   195
+  597      84   160   126   195
+  598      35   141    88   205
+  599      87   148   147   192
+  600     137   204    66   209
+  601      86   151   148   192
+  602     181   199   195   204
+  603     174   175   173   189
+  604     173   175   133   189
+  605     132   175   174   189
+  606     133   175   132   189
+  607     133   161   109   207
+  608     159   187    66   209
+  609      93   149    94   189
+  610      94   174    93   189
+  611     146   190   158   208
+  612     158   190    39   208
+  613      66   187   137   209
+  614     180   182   137   209
+  615     108   159    66   209
+  616     190   192   150   210
+  617      85   191   127   211
+  618     127   193   101   211
+  619     101   193   153   211
+  620     103   190   150   210
+  621      69   190   146   208
+  622      88   156   105   192
+  623      63   150    85   211
+  624      23   131    88   192
+  625      86   131    23   192
+  626     151   190   148   192
+  627     148   190   147   192
+  628     101   154   143   211
+  629      29   127   101   211
+  630      29   101   143   211
+  631     143   154   153   211
+  632      78   119    15   213
+  633     118   202    78   213
+  634      33   195   124   204
+  635      93   158    31   206
+  636     158   190    31   206
+  637     107   157   110   208
+  638      66   160   108   204
+  639     165   181    92   204
+  640      66   195   160   204
+  641     156   193   192   210
+  642     149   189    93   206
+  643     187   189   149   206
+  644     170   120   196    50
+  645      73   124   121   196
+  646      73   195   124   196
+  647     121   124    49   196
+  648     124   195    49   196
+  649      50    83    18   196
+  650      50    18   120   196
+  651      18   122   120   196
+  652     151   186   104   205
+  653      73   165   124   199
+  654     165   195   124   199
+  655     124   195    73   199
+  656      73   163   113   199
+  657      25   165    73   199
+  658      73   113    41   199
+  659      41   113    72   199
+  660     113    72   163   112
+  661      72   113   163   199
+  662      41    72    25   199
+  663      25    73    41   199
+  664     111   176    84   202
+  665      27   123    78   202
+  666     123   171    78   202
+  667      84   163   111   202
+  668     163   164   111   202
+  669      74   163    27   202
+  670      74   164   163   202
+  671      27   164    74   202
+  672      95   179   137   203
+  673     136   179    95   203
+  674     137   179    96   203
+  675      96   179   136   203
+  676      96   178    21   203
+  677     147   190   103   210
+  678     156   192    87   210
+  679      87   192   147   210
+  680      96   180   137   203
+  681      21   180    96   203
+  682      35   194   145   205
+  683      43   164   118   213
+  684     142   194    35   205
+  685     152   193   104   205
+  686     104   194   152   205
+  687     126   176   172   213
+  688     126   172   119   213
+  689     151   190   104   206
+  690     150   187   104   206
+  691     150   190   187   206
+  692     104   190   150   206
+  693      93   206   189   207
+  694     158   206    93   207
+  695     158   173    55   207
+  696     173   189    55   207
+  697      93   173   158   207
+  698      93   189   173   207
+  699     187   203   137   209
+  700     137   203   180   209
+  701     191   203   187   209
+  702      21   191   180   209
+  703      21   203   191   209
+  704     180   203    21   209
+  705     150   193   191   211
+  706     191   193   127   211
+  707      13   142    64   212
+  708      64   154    13   212
+  709     152   194   100   212
+  710     100   194   142   212
+  711     105   142    35   212
+  712      35   193   105   212
+  713      64   155   154   212
+  714     142   155    64   212
+  715     154   155   153   212
+  716     155   193   153   212
+  717     101   154   153   212
+  718     153   193   101   212
+  719      75   176   164   213
+  720     176   202   164   213
+  721      43   197   164   213
+  722     164   197    75   213
+  723      75   197   115   213
+  724     115   197    43   213
+# Generated by tetgen -qfa0.005 beam.poly 
diff --git a/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.face b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.face
new file mode 100644
index 0000000000000000000000000000000000000000..df487d717837b81fce0b0e43c5081c3e67faa0b4
--- /dev/null
+++ b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.face
@@ -0,0 +1,1619 @@
+1617  1
+    1     48   170    84  0
+    2     48   171   170  0
+    3    170   171    84  0
+    4     84   171    48  0
+    5     78   202   171  0
+    6     78   213   202  0
+    7    202   213   171  0
+    8    171   213    78  0
+    9     16    48    45  1
+   10     16   171    48  0
+   11     48   171    45  0
+   12     45   171    16  0
+   13    128   159   108  0
+   14    128   191   159  0
+   15    159   191   108  0
+   16    108   191   128  0
+   17    167   168    77  0
+   18    167   200   168  0
+   19    168   200    77  1
+   20     77   200   167  0
+   21     72   166    25  1
+   22     72   199   166  0
+   23    166   199    25  0
+   24     25   199    72  0
+   25      8   197    44  4
+   26      8   198   197  0
+   27    197   198    44  0
+   28     44   198     8  1
+   29    162   166    72  1
+   30    162   199   166  0
+   31     72   199   162  0
+   32     50    84    83  0
+   33     50   196    84  0
+   34     84   196    83  0
+   35     83   196    50  0
+   36     67   126    17  0
+   37     67   172   126  0
+   38    126   172    17  0
+   39     17   172    67  4
+   40     48   125    45  1
+   41     48   171   125  0
+   42    125   171    45  0
+   43    103   150    63  0
+   44    103   210   150  0
+   45    150   210    63  0
+   46     63   210   103  1
+   47    102   177    59  1
+   48    102   194   177  0
+   49    177   194    59  0
+   50     59   194   102  0
+   51    119   172    75  4
+   52    119   213   172  0
+   53    172   213    75  0
+   54     75   213   119  0
+   55     10   157    69  1
+   56     10   208   157  0
+   57    157   208    69  0
+   58     69   208    10  4
+   59    126   167   119  0
+   60    126   172   167  0
+   61    167   172   119  4
+   62    119   172   126  0
+   63     30   157   107  0
+   64     30   190   157  0
+   65    157   190   107  0
+   66    107   190    30  0
+   67     52   182   180  2
+   68     52   209   182  0
+   69    182   209   180  0
+   70    180   209    52  0
+   71     88   192   105  0
+   72     88   205   192  0
+   73    192   205   105  0
+   74    105   205    88  0
+   75    152   194   104  0
+   76    152   203   194  0
+   77    194   203   104  0
+   78    104   203   152  0
+   79    107   187   150  0
+   80    107   190   187  0
+   81    187   190   150  0
+   82    150   190   107  0
+   83     23   141    86  0
+   84     23   192   141  0
+   85    141   192    86  0
+   86     86   192    23  0
+   87     97    99   140  0
+   88     97   184    99  0
+   89     99   184   140  0
+   90    140   184    97  4
+   91     55   189   133  0
+   92     55   207   189  0
+   93    189   207   133  0
+   94    133   207    55  0
+   95     97   138    31  4
+   96     97   151   138  0
+   97    138   151    31  0
+   98     31   151    97  0
+   99     35   142    60  3
+  100     35   194   142  0
+  101    142   194    60  0
+  102     60   194    35  0
+  103     27   118    74  5
+  104     27   164   118  0
+  105    118   164    74  0
+  106     74   164    27  0
+  107    101   127    21  2
+  108    101   152   127  0
+  109    127   152    21  0
+  110     21   152   101  0
+  111    126   171   167  0
+  112    126   200   171  0
+  113    171   200   167  0
+  114    167   200   126  0
+  115     90   109    55  4
+  116     90   133   109  0
+  117    109   133    55  0
+  118     55   133    90  0
+  119     21   178   152  0
+  120     21   203   178  0
+  121    178   203   152  0
+  122    152   203    21  0
+  123    134   173    93  4
+  124    134   174   173  0
+  125    173   174    93  0
+  126     93   174   134  0
+  127     27    83    50  5
+  128     27    84    83  0
+  129     50    84    27  0
+  130     85   127    29  0
+  131     85   211   127  0
+  132    127   211    29  0
+  133     29   211    85  1
+  134    164   176   111  0
+  135    164   202   176  0
+  136    176   202   111  0
+  137    111   202   164  0
+  138     65   153   105  0
+  139     65   156   153  1
+  140    153   156   105  0
+  141    105   156    65  0
+  142    149   186    59  0
+  143    149   203   186  0
+  144    186   203    59  0
+  145     59   203   149  0
+  146     88    87   129  0
+  147     88   130    87  0
+  148     87   130   129  1
+  149    129   130    88  0
+  150     23   141    97  0
+  151     23   151   141  0
+  152    141   151    97  0
+  153     97   151    23  0
+  154    177   178   136  0
+  155    177   203   178  0
+  156    178   203   136  0
+  157    136   203   177  0
+  158     76   164    43  0
+  159     76   198   164  0
+  160    164   198    43  0
+  161     43   198    76  0
+  162     84   176   126  0
+  163     84   202   176  0
+  164    176   202   126  0
+  165    126   202    84  0
+  166     89   116    90  0
+  167     89   133   116  0
+  168    116   133    90  0
+  169     90   133    89  0
+  170     40   112    71  0
+  171     40   113   112  0
+  172    112   113    71  0
+  173     71   113    40  0
+  174     40    70    71  5
+  175     40   112    70  0
+  176     70   112    71  0
+  177    125   126    45  0
+  178    125   171   126  0
+  179    126   171    45  0
+  180    133   161    66  0
+  181    133   176   161  0
+  182    161   176    66  0
+  183     66   176   133  0
+  184     65   105    14  3
+  185    105   156    14  0
+  186     14   156    65  1
+  187     66   189   187  0
+  188     66   207   189  0
+  189    189   207   187  0
+  190    187   207    66  0
+  191     67    68    38  0
+  192     67   110    68  0
+  193     68   110    38  0
+  194     38   110    67  4
+  195     60   144    62  0
+  196     60    61   144  0
+  197    144    61    62  0
+  198     62    61    60  3
+  199    124   165    33  2
+  200    124   204   165  0
+  201    165   204    33  0
+  202     33   204   124  0
+  203     52   128   108  0
+  204     52   191   128  0
+  205    108   191    52  0
+  206     26    90    89  0
+  207     26   116    90  4
+  208     89   116    26  0
+  209    114   164    76  0
+  210    114   198   164  0
+  211     76   198   114  1
+  212    150   190   104  0
+  213    150   192   190  0
+  214    190   192   104  0
+  215    104   192   150  0
+  216     59   186   102  0
+  217     59   194   186  0
+  218    186   194   102  0
+  219     69   157   103  1
+  220     69   190   157  0
+  221    157   190   103  0
+  222    103   190    69  0
+  223    120   170   196  0
+  224    120   122   170  0
+  225    170   122   196  0
+  226    196   122   120  0
+  227    116   164   117  0
+  228    116   197   164  0
+  229    164   197   117  0
+  230    117   197   116  0
+  231      5   112    41  1
+  232      5   113   112  0
+  233    112   113    41  0
+  234     41   113     5  2
+  235     37   110   107  0
+  236     37   157   110  0
+  237    110   157   107  0
+  238    107   157    37  0
+  239    132   181    32  0
+  240    132   189   181  0
+  241    181   189    32  0
+  242     32   189   132  0
+  243    121   122    18  2
+  244    121   196   122  0
+  245    122   196    18  0
+  246     18   196   121  0
+  247     84   123    27  0
+  248     84   202   123  0
+  249    123   202    27  0
+  250     27   202    84  0
+  251     73   195   163  0
+  252     73   199   195  0
+  253    195   199   163  0
+  254    163   199    73  0
+  255    182   204   137  0
+  256    182   209   204  0
+  257    204   209   137  0
+  258    137   209   182  0
+  259    140    97    23  4
+  260     97    99    23  0
+  261     23    99   140  3
+  262     96   136   135  0
+  263     96   178   136  0
+  264    136   178   135  0
+  265    135   178    96  2
+  266     28    80    57  2
+  267     28    81    80  0
+  268     80    81    57  0
+  269     57    81    28  1
+  270     23   141    99  3
+  271     99   141    97  0
+  272    153   156    63  1
+  273    153   193   156  0
+  274    156   193    63  0
+  275     63   193   153  0
+  276    100   152    21  0
+  277    100   178   152  0
+  278     21   178   100  2
+  279    148   151   146  0
+  280    148   190   151  0
+  281    151   190   146  0
+  282    146   190   148  0
+  283    115    43    15  5
+  284    115   213    43  0
+  285     43   213    15  0
+  286     15   213   115  0
+  287    138   186   139  0
+  288    138   188   186  0
+  289    186   188   139  0
+  290    139   188   138  0
+  291     48   125    84  0
+  292     48   170   125  0
+  293    125   170    84  0
+  294    105   155   153  0
+  295    153   155    65  0
+  296     65   155   105  3
+  297    108   204   182  0
+  298    108   209   204  0
+  299    182   209   108  0
+  300    104   193   192  0
+  301    104   205   193  0
+  302    193   205   192  0
+  303    192   205   104  0
+  304     18    83    40  5
+  305     18   121    83  0
+  306     83   121    40  0
+  307     40   121    18  0
+  308     32   111    89  0
+  309     32   133   111  0
+  310    111   133    89  0
+  311     89   133    32  0
+  312     59    95    94  1
+  313     59   149    95  0
+  314     95   149    94  0
+  315     94   149    59  0
+  316    135   136    34  1
+  317    136   178    34  0
+  318     34   178   135  2
+  319     95   137   132  0
+  320     95   189   137  0
+  321    137   189   132  0
+  322    132   189    95  0
+  323     57    80    52  2
+  324     57   108    80  0
+  325     80   108    52  0
+  326     52   108    57  0
+  327    104   151   149  0
+  328    104   186   151  0
+  329    151   186   149  0
+  330    149   186   104  0
+  331    186   203   194  0
+  332    194   203    59  0
+  333    152   191   150  0
+  334    152   193   191  0
+  335    191   193   150  0
+  336    150   193   152  0
+  337    115   197     8  4
+  338    115   198   197  0
+  339      8   198   115  0
+  340    170   125   201  0
+  341    125    48   201  0
+  342    201    48   170  0
+  343    140   183     7  3
+  344    140   184   183  0
+  345    183   184     7  0
+  346      7   184   140  4
+  347      9   108    52  0
+  348      9   128   108  0
+  349     52   128     9  0
+  350     70     5    71  5
+  351     70   112     5  1
+  352      5   112    71  0
+  353     44   116    26  4
+  354     44   117   116  0
+  355    116   117    26  0
+  356     26   117    44  1
+  357     84   126   125  0
+  358     84   171   126  0
+  359    125   171    84  0
+  360     66   159   126  0
+  361     66   161   159  0
+  362    159   161   126  0
+  363    126   161    66  0
+  364     52   209   191  0
+  365    191   209   108  0
+  366    108   209    52  0
+  367     41   112    72  1
+  368    112   113    72  0
+  369     72   113    41  0
+  370    191   209   159  0
+  371    159   209   108  0
+  372    125   160   170  0
+  373    170   160   201  0
+  374    201   160   125  0
+  375     77   169   168  0
+  376    168   169   167  0
+  377    167   169    77  4
+  378    103   157    30  1
+  379     30   190   103  0
+  380     52     9    57  2
+  381      9   108    57  0
+  382    127   193   152  0
+  383    152   193   101  0
+  384    101   193   127  0
+  385     38    68    37  1
+  386     68   110    37  0
+  387     37   110    38  0
+  388    133   189    66  0
+  389     66   207   133  0
+  390      8    76   115  5
+  391      8   198    76  1
+  392     76   198   115  0
+  393     65   153   143  1
+  394     65   154   153  0
+  395    153   154   143  0
+  396    143   154    65  0
+  397     31   206   151  0
+  398    151   206   138  0
+  399    138   206    31  0
+  400     62   144     6  2
+  401    144    61     6  1
+  402      6    61    62  3
+  403    192   193   105  0
+  404    193   205   105  0
+  405    153   154   101  0
+  406    153   211   154  0
+  407    154   211   101  0
+  408    101   211   153  0
+  409     72   163   111  0
+  410     72   199   163  0
+  411    163   199   111  0
+  412    111   199    72  0
+  413     13   101   100  2
+  414     13   212   101  0
+  415    101   212   100  0
+  416    100   212    13  0
+  417    104   187   150  0
+  418    104   191   187  0
+  419    187   191   150  0
+  420    150   191   104  0
+  421     13   154   101  2
+  422     13   212   154  0
+  423    154   212   101  0
+  424     23    97    86  4
+  425     97   151    86  0
+  426     86   151    23  0
+  427    102    61   144  1
+  428    102   194    61  0
+  429     61   194   144  0
+  430    144   194   102  0
+  431    153   211   193  0
+  432    193   211    63  0
+  433     63   211   153  1
+  434     20   159   126  0
+  435     20   160   159  0
+  436    159   160   126  0
+  437    126   160    20  0
+  438     14    88   130  3
+  439     14   156    88  0
+  440     88   156   130  0
+  441    130   156    14  1
+  442     30   107    37  0
+  443     30   159   107  0
+  444    107   159    37  0
+  445     37   159    30  0
+  446     65   154     2  0
+  447     65   155   154  0
+  448    154   155     2  0
+  449      2   155    65  3
+  450     42   111    89  0
+  451     42   162   111  0
+  452    111   162    89  0
+  453     89   162    42  1
+  454     85   150    30  0
+  455     85   191   150  0
+  456    150   191    30  0
+  457     30   191    85  0
+  458    194   205   142  0
+  459    194   212   205  0
+  460    205   212   142  0
+  461    142   212   194  0
+  462    141   151    99  0
+  463     99   151    97  0
+  464    120    82    50  5
+  465    120   170    82  0
+  466     82   170    50  0
+  467     50   170   120  0
+  468     22    60    61  3
+  469     22   102    60  0
+  470     60   102    61  0
+  471     61   102    22  1
+  472    161   176   126  0
+  473    126   176    66  0
+  474     30   128    85  1
+  475     30   191   128  0
+  476    128   191    85  0
+  477     59   139   102  1
+  478     59   186   139  0
+  479    139   186   102  0
+  480     54    89    26  1
+  481     54    90    89  0
+  482     26    90    54  4
+  483     70   114   112  1
+  484    112   114    40  0
+  485     40   114    70  0
+  486     66   159   107  0
+  487     66   187   159  0
+  488    159   187   107  0
+  489    107   187    66  0
+  490     32   132    91  1
+  491    132   181    91  0
+  492     91   181    32  0
+  493     49   124    80  2
+  494     49   160   124  0
+  495    124   160    80  0
+  496     80   160    49  0
+  497     56    91    12  1
+  498     56    92    91  0
+  499     91    92    12  0
+  500     12    92    56  2
+  501    126   159    37  0
+  502    159   161    37  0
+  503     37   161   126  0
+  504     78   168    46  0
+  505     78   169   168  0
+  506    168   169    46  0
+  507     46   169    78  0
+  508    144   177   102  1
+  509    144   194   177  0
+  510    113   121    40  0
+  511    113   196   121  0
+  512    121   196    40  0
+  513     40   196   113  0
+  514     86   148   129  4
+  515     86   192   148  0
+  516    148   192   129  0
+  517    129   192    86  0
+  518      7   185   184  0
+  519    184   185   183  0
+  520    183   185     7  1
+  521     17   109    90  4
+  522     17   133   109  0
+  523     90   133    17  0
+  524    141   192    88  0
+  525    141   205   192  0
+  526     88   205   141  0
+  527    167   168    45  0
+  528    168   169    45  0
+  529     45   169   167  0
+  530     97   184   139  0
+  531     97   185   184  0
+  532    184   185   139  0
+  533    139   185    97  0
+  534      2   154    64  2
+  535    154   155    64  0
+  536     64   155     2  3
+  537    111   195   181  0
+  538    111   199   195  0
+  539    195   199   181  0
+  540    181   199   111  0
+  541     78   123    47  5
+  542     78   171   123  0
+  543    123   171    47  0
+  544     47   171    78  0
+  545     84   176   111  0
+  546     84   195   176  0
+  547    176   195   111  0
+  548    111   195    84  0
+  549     49   201   160  0
+  550    160   201    80  0
+  551     80   201    49  2
+  552     43   197   115  0
+  553     43   198   197  0
+  554    115   198    43  0
+  555     38    67    24  4
+  556     67    68    24  0
+  557     24    68    38  1
+  558     93   189   174  0
+  559    174   189   173  0
+  560    173   189    93  0
+  561    150   152   104  0
+  562    152   191   104  0
+  563     24   167    77  4
+  564     24   200   167  0
+  565     77   200    24  1
+  566    122   170    49  0
+  567    122   201   170  0
+  568    170   201    49  0
+  569     49   201   122  2
+  570      5   113    71  2
+  571    163   195   111  0
+  572     17   176   172  0
+  573    172   176   126  0
+  574    126   176    17  0
+  575    124   195   160  0
+  576    160   195    49  0
+  577     49   195   124  0
+  578     37   106    30  1
+  579     37   159   106  0
+  580    106   159    30  0
+  581    113   121    71  2
+  582     71   121    40  0
+  583    178   203    96  0
+  584     96   203   136  0
+  585    127   191   152  0
+  586    127   193   191  0
+  587     67   167   126  0
+  588     67   172   167  4
+  589    139   185   102  1
+  590    139   186   185  0
+  591    185   186   102  0
+  592    187   207   107  0
+  593    107   207    66  0
+  594    104   187   149  0
+  595    104   206   187  0
+  596    187   206   149  0
+  597    149   206   104  0
+  598     40    74    19  5
+  599     40   114    74  0
+  600     74   114    19  0
+  601     19   114    40  0
+  602     84   170   123  0
+  603    170   171   123  0
+  604    123   171    84  0
+  605    107   161   110  0
+  606    110   161    37  0
+  607     37   161   107  0
+  608     42   164   114  0
+  609     42   198   164  0
+  610    114   198    42  1
+  611     63   193   150  0
+  612    193   211   150  0
+  613    150   211    63  0
+  614     39   161   107  0
+  615     39   207   161  0
+  616    161   207   107  0
+  617    107   207    39  0
+  618     50   123    84  0
+  619     50   170   123  0
+  620     84   170    50  0
+  621     49   170   160  0
+  622     46   168     4  0
+  623    168   169     4  0
+  624      4   169    46  4
+  625     84   170    49  0
+  626     84   196   170  0
+  627    170   196    49  0
+  628     49   196    84  0
+  629     49   195    84  0
+  630     49   196   195  0
+  631    195   196    84  0
+  632    183   184    99  0
+  633    184   185    99  0
+  634     99   185   183  0
+  635    111   114    42  0
+  636    111   164   114  0
+  637     42   164   111  0
+  638     31   158   146  4
+  639     31   190   158  0
+  640    158   190   146  0
+  641    146   190    31  0
+  642    109   161    39  0
+  643    109   207   161  0
+  644     39   207   109  0
+  645     54    90    55  4
+  646     54   175    90  0
+  647     90   175    55  0
+  648     55   175    54  0
+  649     44   197   117  0
+  650    197   198   117  0
+  651    117   198    44  1
+  652    111   163    84  0
+  653    163   195    84  0
+  654    117   164    42  0
+  655    117   198   164  0
+  656     42   198   117  1
+  657     73   121   113  2
+  658     73   163   121  0
+  659    121   163   113  0
+  660    113   163    73  0
+  661     86    97    31  4
+  662     31   151    86  0
+  663     90   175   133  0
+  664    133   175    55  0
+  665    125   160    84  0
+  666    160   170    84  0
+  667     80   160    81  0
+  668    160   201    81  0
+  669     81   201    80  0
+  670    160   176   126  0
+  671    160   195   176  0
+  672    176   195   126  0
+  673    126   195   160  0
+  674    144   100    34  2
+  675    144   177   100  0
+  676    100   177    34  0
+  677     34   177   144  1
+  678    139   149    59  0
+  679    139   188   149  0
+  680    149   188    59  0
+  681     59   188   139  1
+  682    103   146    69  0
+  683    103   190   146  0
+  684    146   190    69  0
+  685     74   163   114  0
+  686    114   163    40  0
+  687     40   163    74  0
+  688    107   150    30  0
+  689    150   190    30  0
+  690     74   118    43  5
+  691    118   164    43  0
+  692     43   164    74  0
+  693      4   168    77  1
+  694     77   169     4  4
+  695     50   123    27  5
+  696    189   206   187  0
+  697    189   207   206  0
+  698    206   207   187  0
+  699    151   192   141  0
+  700    151   205   192  0
+  701    141   205   151  0
+  702    163   196   195  0
+  703    195   196    73  0
+  704     73   196   163  0
+  705     71    18    40  5
+  706     71   121    18  2
+  707    149   151   138  0
+  708    151   186   138  0
+  709    138   186   149  0
+  710     43   118    15  5
+  711     43   213   118  0
+  712    118   213    15  0
+  713     35   145   141  3
+  714     35   205   145  0
+  715    145   205   141  0
+  716    141   205    35  0
+  717    146   148    86  4
+  718    148   151    86  0
+  719     86   151   146  0
+  720    100   194   152  0
+  721    100   203   194  0
+  722    152   203   100  0
+  723     36   138    97  4
+  724     36   139   138  0
+  725    138   139    97  0
+  726     97   139    36  0
+  727    147   192   190  0
+  728    147   210   192  0
+  729    192   210   190  0
+  730    190   210   147  0
+  731    107   158    39  0
+  732    107   207   158  0
+  733    158   207    39  0
+  734     95   132    94  1
+  735     95   149   132  0
+  736    132   149    94  0
+  737     60   145   102  0
+  738    102   145    22  0
+  739     22   145    60  3
+  740    183   140    99  3
+  741    111   162    32  0
+  742     32   162    89  1
+  743     28    81    48  1
+  744     28   201    81  0
+  745     81   201    48  0
+  746     48   201    28  0
+  747     34   178   177  0
+  748    177   178   100  0
+  749    100   178    34  2
+  750    146   147    53  0
+  751    146   148   147  0
+  752    147   148    53  0
+  753     53   148   146  4
+  754    111   162    72  0
+  755    111   199   162  0
+  756     60   142    13  3
+  757    142   194    13  0
+  758     13   194    60  0
+  759    181   195    66  0
+  760    181   204   195  0
+  761    195   204    66  0
+  762     66   204   181  0
+  763    108   160    33  0
+  764    108   204   160  0
+  765    160   204    33  0
+  766     33   204   108  0
+  767     31   138    93  4
+  768    138   206    93  0
+  769     93   206    31  0
+  770    119   171   167  0
+  771    126   171   119  0
+  772    107   161    66  0
+  773    161   207    66  0
+  774    180   191    52  0
+  775    180   209   191  0
+  776    126   213   202  0
+  777    202   213   176  0
+  778    176   213   126  0
+  779     45   126    68  0
+  780     45   200   126  0
+  781    126   200    68  0
+  782     68   200    45  1
+  783     53   146   103  0
+  784    146   147   103  0
+  785    103   147    53  1
+  786     38    37    10  1
+  787     37   110    10  0
+  788     10   110    38  4
+  789     15   118    78  5
+  790    118   213    78  0
+  791     78   213    15  0
+  792    101   152   100  0
+  793    101   212   152  0
+  794    152   212   100  0
+  795    151   206   149  0
+  796    149   206   138  0
+  797    116   117    89  0
+  798     89   117    26  1
+  799     10   157   110  0
+  800     37   157    10  1
+  801    171   202   126  0
+  802    126   213   171  0
+  803    129   147    87  1
+  804    129   148   147  0
+  805    147   148    87  0
+  806     87   148   129  0
+  807    100   101    21  2
+  808     97    98    36  4
+  809     97   139    98  0
+  810     98   139    36  1
+  811     52    80    33  2
+  812     80   108    33  0
+  813     33   108    52  0
+  814     48   170    79  0
+  815    170   201    79  0
+  816     79   201    48  0
+  817     98   184     7  4
+  818     98   185   184  0
+  819      7   185    98  1
+  820    153   155   154  0
+  821     55   173   133  0
+  822     55   189   173  0
+  823    173   189   133  0
+  824    151   206   104  0
+  825    143     2    65  1
+  826    143   154     2  2
+  827     78   171   119  0
+  828    171   213   119  0
+  829    119   213    78  0
+  830     58   108     9  0
+  831     58   128   108  0
+  832      9   128    58  1
+  833      9    52    51  2
+  834     52   128    51  0
+  835     51   128     9  1
+  836     60   194    62  0
+  837     62   194   144  0
+  838    144   194    60  0
+  839     94   138    93  0
+  840     94   188   138  0
+  841    138   188    93  0
+  842     93   188    94  0
+  843    132   189   149  0
+  844    149   189    95  0
+  845      9    58    57  1
+  846     58   108    57  0
+  847    104   190   151  0
+  848    190   192   151  0
+  849    151   192   104  0
+  850    105   192   156  0
+  851    192   193   156  0
+  852    156   193   105  0
+  853     69   103    53  1
+  854     53   146    69  4
+  855     70    40    19  5
+  856     19   114    70  1
+  857     95   149   137  0
+  858    149   189   137  0
+  859    192   193   150  0
+  860    192   210   193  0
+  861    193   210   150  0
+  862    150   210   192  0
+  863     58    81    57  1
+  864     58   108    81  0
+  865     81   108    57  0
+  866    102   194   145  0
+  867    145   194    60  0
+  868     60   194   102  0
+  869     81   108    80  0
+  870     52   127    51  2
+  871     52   191   127  0
+  872    127   191    51  0
+  873     51   191    52  0
+  874     12   179    92  0
+  875     92   179    91  0
+  876     91   179    12  1
+  877     60   194    61  0
+  878    104   193   150  0
+  879     30   150   103  0
+  880    150   190   103  0
+  881     88   156    87  0
+  882     87   156   130  1
+  883     13   142   100  0
+  884    142   194   100  0
+  885    100   194    13  0
+  886     53   147   129  1
+  887    129   148    53  4
+  888    125   160   126  0
+  889    126   160    84  0
+  890     55   109    39  4
+  891     55   207   109  0
+  892     39   207    55  0
+  893    129   131    88  0
+  894    129   130   131  0
+  895    131   130    88  3
+  896     30   159   128  0
+  897     30   191   159  0
+  898     86   151   141  0
+  899    153   193   155  0
+  900    155   193   105  0
+  901    105   193   153  0
+  902    114   163   112  0
+  903    112   163    40  0
+  904     27   196    84  0
+  905     27   202   196  0
+  906    196   202    84  0
+  907     85   128    51  1
+  908    128   191    51  0
+  909     51   191    85  0
+  910    160   195    33  0
+  911    160   204   195  0
+  912    195   204    33  0
+  913     94   134    93  0
+  914     94   174   134  1
+  915     93   174    94  0
+  916    109   161   133  0
+  917    133   161    17  0
+  918     17   161   109  0
+  919    109   110    39  4
+  920    109   161   110  0
+  921    110   161    39  0
+  922     84   160    49  0
+  923     89   175    90  0
+  924     54   175    89  1
+  925     96   137    92  0
+  926     96   179   137  0
+  927    137   179    92  0
+  928     92   179    96  0
+  929     31   146    86  4
+  930     31   151   146  0
+  931    197   198   164  0
+  932     15    78    46  5
+  933     15   119    78  0
+  934     78   119    46  0
+  935     46   119    15  4
+  936     91   166    92  0
+  937     92   166    56  0
+  938     56   166    91  1
+  939    112   163   113  0
+  940    113   163    40  0
+  941     45   200   168  1
+  942    167   200    45  0
+  943     68   126    67  0
+  944    126   200    67  0
+  945     67   200    68  0
+  946    136   177    34  1
+  947     49   122   121  2
+  948     49   196   122  0
+  949    121   196    49  0
+  950     92   137    91  0
+  951    137   179    91  0
+  952     63   103    85  1
+  953    103   150    85  0
+  954     85   150    63  0
+  955     92   165    56  2
+  956     92   166   165  0
+  957    165   166    56  0
+  958    167   171    45  0
+  959    171   200    45  0
+  960     81   160   125  0
+  961    125   201    81  0
+  962     29    85    51  1
+  963     85   127    51  0
+  964     51   127    29  2
+  965     46   169   119  4
+  966    119   169    78  0
+  967    172   176    75  0
+  968    172   213   176  0
+  969    176   213    75  0
+  970    131     3   130  3
+  971    130     3   129  1
+  972    129     3   131  4
+  973     88   192   129  0
+  974    129   192    87  0
+  975     87   192    88  0
+  976    126   213   119  0
+  977     39   158    55  4
+  978    158   207    55  0
+  979    105   212   193  0
+  980    193   212   155  0
+  981    155   212   105  0
+  982     15   119    75  4
+  983     15   213   119  0
+  984     75   213    15  0
+  985     33   182   108  0
+  986     33   204   182  0
+  987    104   187   152  0
+  988    104   203   187  0
+  989    187   203   152  0
+  990     16   123    48  0
+  991     16   171   123  0
+  992    123   171    48  0
+  993    107   161   159  0
+  994    123   170    48  0
+  995    124   195   165  0
+  996    124   204   195  0
+  997    195   204   165  0
+  998    151   190    31  0
+  999     74    83    27  5
+ 1000     74   163    83  0
+ 1001     83   163    27  0
+ 1002     27   163    74  0
+ 1003     47     4    46  5
+ 1004     47   168     4  1
+ 1005     46   168    47  0
+ 1006    136   149    59  0
+ 1007    136   203   149  0
+ 1008     59   203   136  0
+ 1009     20    68    45  1
+ 1010     20   126    68  0
+ 1011     45   126    20  0
+ 1012     82   123    50  5
+ 1013     82   170   123  0
+ 1014     20   106    68  1
+ 1015     20   126   106  0
+ 1016    106   126    68  0
+ 1017    110   161    68  0
+ 1018     68   161    37  0
+ 1019     28   201    80  2
+ 1020     24   200    68  1
+ 1021     67   200    24  0
+ 1022     46    78    47  5
+ 1023     78   168    47  0
+ 1024     67   161   126  0
+ 1025    126   161    68  0
+ 1026     68   161    67  0
+ 1027     93   138   134  4
+ 1028    138   188   134  0
+ 1029    134   188    93  0
+ 1030     68   106    37  1
+ 1031    106   126    37  0
+ 1032     37   126    68  0
+ 1033     20   126   125  0
+ 1034    125   160    20  0
+ 1035    163   196    27  0
+ 1036    163   202   196  0
+ 1037     27   202   163  0
+ 1038     72   114   111  0
+ 1039     72   163   114  0
+ 1040    114   163   111  0
+ 1041    108   160    80  0
+ 1042     80   160    33  0
+ 1043     55   173    54  4
+ 1044     55   175   173  0
+ 1045    173   175    54  0
+ 1046     45   125    20  1
+ 1047     50   196   170  0
+ 1048    133   175   173  0
+ 1049     80   124    33  2
+ 1050    124   160    33  0
+ 1051     63   210   193  0
+ 1052    193   210   156  0
+ 1053    156   210    63  1
+ 1054    104   193   152  0
+ 1055    133   164   116  0
+ 1056    133   176   164  0
+ 1057    164   176   116  0
+ 1058    116   176   133  0
+ 1059    145   194   186  0
+ 1060    145   205   194  0
+ 1061    194   205   186  0
+ 1062    186   205   145  0
+ 1063    126   160    66  0
+ 1064    160   176    66  0
+ 1065    107   206   158  0
+ 1066    107   207   206  0
+ 1067    206   207   158  0
+ 1068     12    96    92  2
+ 1069     12   179    96  0
+ 1070    118   202   164  0
+ 1071    164   202    27  0
+ 1072     27   202   118  0
+ 1073    164   197    43  0
+ 1074     89   175   133  0
+ 1075     67   109    17  4
+ 1076     67   161   109  0
+ 1077     17   161    67  0
+ 1078    105   193    35  0
+ 1079    193   205    35  0
+ 1080     35   205   105  0
+ 1081    133   207   109  0
+ 1082    124   195    33  0
+ 1083    173   174    11  0
+ 1084    173   175   174  0
+ 1085    174   175    11  1
+ 1086     11   175   173  0
+ 1087    137   187   149  0
+ 1088    137   203   187  0
+ 1089    187   203   149  0
+ 1090    149   203   137  0
+ 1091     79   170   122  0
+ 1092    122   201    79  2
+ 1093     39   190   158  0
+ 1094    158   190   107  0
+ 1095    107   190    39  0
+ 1096    150   211   191  0
+ 1097    191   211    85  0
+ 1098     85   211   150  0
+ 1099    121   196    83  0
+ 1100     83   196    40  0
+ 1101     32   133   132  0
+ 1102     32   189   133  0
+ 1103    133   189   132  0
+ 1104     56   165    25  2
+ 1105    165   166    25  0
+ 1106     25   166    56  1
+ 1107     42   162   114  1
+ 1108    114   162   111  0
+ 1109    141   145    99  3
+ 1110    145   205    99  0
+ 1111     99   205   141  0
+ 1112    163   196    83  0
+ 1113     83   196    27  0
+ 1114     92   182   137  0
+ 1115    137   182    96  0
+ 1116     96   182    92  2
+ 1117    104   203   149  0
+ 1118    167   200    67  0
+ 1119    137   180    96  0
+ 1120    137   182   180  0
+ 1121    180   182    96  2
+ 1122    102   186   145  0
+ 1123     62    60    13  3
+ 1124     13   194    62  0
+ 1125     15    75   115  4
+ 1126     75   213   115  0
+ 1127     85   103    30  1
+ 1128    160   195    84  0
+ 1129    137   181    66  0
+ 1130    137   204   181  0
+ 1131     66   204   137  0
+ 1132    149   186   139  0
+ 1133     98   184   139  0
+ 1134     97   184    98  4
+ 1135    127   191    85  0
+ 1136    149   189   187  0
+ 1137    187   189   137  0
+ 1138     91   166    32  1
+ 1139     91   181   166  0
+ 1140    166   181    32  0
+ 1141     98   185   139  1
+ 1142     31   206   190  0
+ 1143    190   206   151  0
+ 1144    100   194   178  0
+ 1145    178   194   177  0
+ 1146    177   194   100  0
+ 1147    187   191   107  0
+ 1148    107   191   150  0
+ 1149    149   188   186  0
+ 1150    138   188   149  0
+ 1151    108   182    52  0
+ 1152     59   136    95  1
+ 1153    136   149    95  0
+ 1154     93   149   138  0
+ 1155    138   149    94  0
+ 1156     94   149    93  0
+ 1157     94   189   149  0
+ 1158    132   189    94  0
+ 1159    132   175   133  0
+ 1160    133   175    32  0
+ 1161     32   175   132  1
+ 1162    135   179   136  1
+ 1163    136   179    96  0
+ 1164     96   179   135  0
+ 1165     92   182    33  2
+ 1166     92   204   182  0
+ 1167     33   204    92  0
+ 1168    137   187    66  0
+ 1169     66   189   137  0
+ 1170    137   181   132  0
+ 1171    137   189   181  0
+ 1172     88   141    23  3
+ 1173     23   192    88  0
+ 1174    187   206   107  0
+ 1175    107   110    39  0
+ 1176    107   208   110  0
+ 1177    110   208    39  4
+ 1178     39   208   107  0
+ 1179    126   159   106  0
+ 1180     94   188   149  0
+ 1181     11   173   134  4
+ 1182    134   174    11  1
+ 1183    159   191   187  0
+ 1184    191   209   187  0
+ 1185    187   209   159  0
+ 1186     13   100    62  2
+ 1187    100   194    62  0
+ 1188    105   155   142  3
+ 1189    155   212   142  0
+ 1190    142   212   105  0
+ 1191     35   212   205  0
+ 1192    205   212   193  0
+ 1193    193   212    35  0
+ 1194    152   191   187  0
+ 1195     60   145    35  3
+ 1196    145   194    35  0
+ 1197     14   105    88  3
+ 1198    105   156    88  0
+ 1199     33   165    92  2
+ 1200    165   204    92  0
+ 1201    133   181    66  0
+ 1202    133   189   181  0
+ 1203    181   189    66  0
+ 1204    107   208   190  0
+ 1205    190   208   157  0
+ 1206    157   208   107  0
+ 1207     39   208   190  0
+ 1208     20   125    81  1
+ 1209     81   160    20  0
+ 1210    108   160    81  0
+ 1211    144   194   100  0
+ 1212    139   188    36  1
+ 1213     36   188   138  0
+ 1214    132   174    94  1
+ 1215    132   189   174  0
+ 1216    174   189    94  0
+ 1217    134   138    36  4
+ 1218     36   188   134  1
+ 1219    144    62   100  2
+ 1220     91   181   137  0
+ 1221    137   181    92  0
+ 1222     92   181    91  0
+ 1223     92   181   166  0
+ 1224    159   191   107  0
+ 1225    151   192    86  0
+ 1226    165   199   181  0
+ 1227    165   204   199  0
+ 1228    199   204   181  0
+ 1229    181   204   165  0
+ 1230    150   159    30  0
+ 1231    150   191   159  0
+ 1232    148   192    87  0
+ 1233    100   212   142  0
+ 1234    142   212    13  0
+ 1235     52   180    21  2
+ 1236    180   191    21  0
+ 1237     21   191    52  0
+ 1238    107   159   150  0
+ 1239    142   205    35  0
+ 1240     35   212   142  0
+ 1241     30   157    37  1
+ 1242     21   127    52  2
+ 1243     21   191   127  0
+ 1244     92   204   181  0
+ 1245    137   204    92  0
+ 1246     88   192   131  0
+ 1247    131   192   129  0
+ 1248    103   190   147  0
+ 1249    147   190   146  0
+ 1250     87   192   156  0
+ 1251    156   192    88  0
+ 1252     91   137    95  0
+ 1253    137   179    95  0
+ 1254     95   179    91  1
+ 1255    135    96    12  2
+ 1256     12   179   135  1
+ 1257    164   213   202  0
+ 1258    202   213   118  0
+ 1259    118   213   164  0
+ 1260    110   208   157  0
+ 1261     10   208   110  4
+ 1262    101   212   193  0
+ 1263    193   212   152  0
+ 1264    152   205   194  0
+ 1265    152   212   205  0
+ 1266    194   212   152  0
+ 1267     21   191   152  0
+ 1268    193   205   152  0
+ 1269     94   188    59  1
+ 1270     30   106    58  1
+ 1271    106   159    58  0
+ 1272     58   159    30  0
+ 1273     67   110   109  4
+ 1274     67   161   110  0
+ 1275     66   204   108  0
+ 1276     66   209   204  0
+ 1277    108   209    66  0
+ 1278     32   181   133  0
+ 1279     17   161   126  0
+ 1280     20   159   106  0
+ 1281    114   162    72  1
+ 1282     40    83    74  5
+ 1283     40   163    83  0
+ 1284     48    79    28  1
+ 1285     79   201    28  2
+ 1286    128   159    58  0
+ 1287     58   159   108  0
+ 1288     58   128    30  1
+ 1289     18   196    83  0
+ 1290    134   188    94  1
+ 1291     86   129   131  4
+ 1292    131   192    86  0
+ 1293    159   160    66  0
+ 1294     66   159   108  0
+ 1295    159   160   108  0
+ 1296    108   160    66  0
+ 1297    166   181   165  0
+ 1298    166   199   181  0
+ 1299    165   199   166  0
+ 1300    186   194   104  0
+ 1301    194   205   104  0
+ 1302    104   205   186  0
+ 1303    108   160    58  0
+ 1304     58   160    81  0
+ 1305    159   160    58  0
+ 1306     81   106    20  1
+ 1307     81   160   106  0
+ 1308    106   160    20  0
+ 1309    106   160   159  0
+ 1310     99   186   151  0
+ 1311     99   205   186  0
+ 1312    186   205   151  0
+ 1313    151   205    99  0
+ 1314     33   182    52  2
+ 1315    178   203   194  0
+ 1316    100   203   178  0
+ 1317     78   171   169  0
+ 1318    169   171   119  0
+ 1319     58   106    81  1
+ 1320     58   160   106  0
+ 1321    112   114    72  1
+ 1322     72   163   112  0
+ 1323    111   164   133  0
+ 1324    133   176   111  0
+ 1325     54   173    11  4
+ 1326     11   175    54  1
+ 1327    177   203   194  0
+ 1328    165   199    25  0
+ 1329     19    74    43  5
+ 1330     19   164    74  0
+ 1331     43   164    19  0
+ 1332     19   164   114  0
+ 1333    114   164    74  0
+ 1334    111   164   163  0
+ 1335    163   164   114  0
+ 1336    163   164    74  0
+ 1337    111   181   162  0
+ 1338    181   199   162  0
+ 1339     76    19    43  5
+ 1340     76   164    19  0
+ 1341     76   114    19  1
+ 1342     89   164   117  0
+ 1343    116   164    89  0
+ 1344    133   164    89  0
+ 1345     42   117    89  1
+ 1346     89   164    42  0
+ 1347     89   164   111  0
+ 1348     48    82    79  1
+ 1349     48   170    82  0
+ 1350     82   170    79  0
+ 1351     82    48    16  1
+ 1352     48   170    16  0
+ 1353     16   170    82  0
+ 1354    123   170    16  0
+ 1355     16   123    82  5
+ 1356     43   115    76  5
+ 1357     75   164   116  0
+ 1358     75   197   164  0
+ 1359    116   197    75  4
+ 1360    171   202    84  0
+ 1361     84   196   163  0
+ 1362    163   202    84  0
+ 1363    171   202   123  0
+ 1364     78   118    27  5
+ 1365     78   202   118  0
+ 1366     27   202    78  0
+ 1367    120     1    82  5
+ 1368    120   170     1  0
+ 1369      1   170    82  0
+ 1370    120   122     1  2
+ 1371    122   170     1  0
+ 1372     82     1    79  1
+ 1373      1   170    79  0
+ 1374      1   122    79  2
+ 1375     47   171   168  0
+ 1376    168   171    78  0
+ 1377     45   168    47  1
+ 1378     45   171   168  0
+ 1379     47   171    45  0
+ 1380     16    45    47  1
+ 1381     47   171    16  0
+ 1382     47   123    16  5
+ 1383    177   203    59  0
+ 1384    152   203   191  0
+ 1385    191   203    21  0
+ 1386     89   175    32  1
+ 1387    104   203   186  0
+ 1388    119   169   167  4
+ 1389    169   171   167  0
+ 1390    169   171    45  0
+ 1391    169   171   168  0
+ 1392     59   177   136  1
+ 1393    149   203    95  0
+ 1394     95   203   137  0
+ 1395    136   203    95  0
+ 1396     17   176   161  0
+ 1397    133   176    17  0
+ 1398    164   176    75  0
+ 1399     75   176   116  0
+ 1400     75   172   116  4
+ 1401    172   176   116  0
+ 1402     90   176   133  0
+ 1403    116   176    90  0
+ 1404    116   172    90  4
+ 1405    172   176    90  0
+ 1406     90   176    17  0
+ 1407     90   172    17  4
+ 1408    195   199   165  0
+ 1409    195   204   199  0
+ 1410     81   125    48  1
+ 1411     92   181   165  0
+ 1412     32   181   162  0
+ 1413    111   181    32  0
+ 1414     32   166   162  1
+ 1415    166   181   162  0
+ 1416    111   181   133  0
+ 1417    147   190   148  0
+ 1418    161   207   133  0
+ 1419     91   132    95  1
+ 1420    132   181    95  0
+ 1421     95   181    91  0
+ 1422    137   181    95  0
+ 1423    111   181   176  0
+ 1424    176   181   133  0
+ 1425    176   181    66  0
+ 1426     66   176   111  0
+ 1427    111   181    66  0
+ 1428     40   196   163  0
+ 1429    163   196   113  0
+ 1430    145   186    99  0
+ 1431     88   105    35  3
+ 1432     35   205    88  0
+ 1433    163   196   121  0
+ 1434     73   196   121  0
+ 1435    187   203   191  0
+ 1436    149   206    93  0
+ 1437    107   206   190  0
+ 1438    190   206   158  0
+ 1439     97   186   151  0
+ 1440     99   186    97  0
+ 1441    187   206   190  0
+ 1442    190   208    69  0
+ 1443     22   186   145  0
+ 1444    102   186    22  0
+ 1445    102   185    22  1
+ 1446    185   186    22  0
+ 1447    151   205   104  0
+ 1448     84   195   126  0
+ 1449     67   167    24  4
+ 1450     44   197   116  4
+ 1451     97   186   139  0
+ 1452    138   186    97  0
+ 1453    111   195    66  0
+ 1454     99   145    22  3
+ 1455     22   186    99  0
+ 1456     97   186   185  0
+ 1457     66   195   176  0
+ 1458    160   195    66  0
+ 1459    183    99    22  3
+ 1460    183   186    99  0
+ 1461     22   186   183  0
+ 1462    183   186   185  0
+ 1463    185   186    99  0
+ 1464     22   185   183  1
+ 1465     99   186   184  0
+ 1466    184   186    97  0
+ 1467    185   186   184  0
+ 1468     35   141    88  3
+ 1469    148   192   147  0
+ 1470    147   192    87  0
+ 1471     66   209   137  0
+ 1472    151   192   148  0
+ 1473    174   189   175  0
+ 1474    175   189   173  0
+ 1475    175   189   133  0
+ 1476    132   175   174  1
+ 1477    132   189   175  0
+ 1478    187   209    66  0
+ 1479     66   209   159  0
+ 1480     93   189   149  0
+ 1481     94   189    93  0
+ 1482    146   208   190  0
+ 1483    190   208   158  0
+ 1484    158   208   146  4
+ 1485     39   208   158  4
+ 1486    187   209   137  0
+ 1487    137   209   180  0
+ 1488    150   210   190  0
+ 1489    191   211   127  0
+ 1490    127   211   193  0
+ 1491    193   211   101  0
+ 1492    101   211   127  0
+ 1493    101   193   153  0
+ 1494    103   210   190  0
+ 1495    146   208    69  4
+ 1496     85   211    63  1
+ 1497     23   131    88  3
+ 1498     23   192   131  0
+ 1499     86   131    23  4
+ 1500    190   192   148  0
+ 1501    101   154   143  2
+ 1502    154   211   143  0
+ 1503    143   211   101  0
+ 1504     29   127   101  2
+ 1505    101   211    29  0
+ 1506     29   101   143  2
+ 1507    143   211    29  1
+ 1508    153   211   143  1
+ 1509     93   158    31  4
+ 1510     93   206   158  0
+ 1511    158   206    31  0
+ 1512     66   204   160  0
+ 1513    192   210   156  0
+ 1514    149   206   189  0
+ 1515    189   206    93  0
+ 1516    120    50   196  0
+ 1517     73   124   121  2
+ 1518     73   196   124  0
+ 1519    124   196   121  0
+ 1520     73   195   124  0
+ 1521    195   196   124  0
+ 1522    121   124    49  2
+ 1523    124   196    49  0
+ 1524     50    83    18  5
+ 1525     18   196    50  0
+ 1526     50    18   120  5
+ 1527     18   196   120  0
+ 1528     18   122   120  2
+ 1529     73   165   124  2
+ 1530     73   199   165  0
+ 1531    165   199   124  0
+ 1532    124   199    73  0
+ 1533    195   199   124  0
+ 1534    163   199   113  0
+ 1535    113   199    73  0
+ 1536     25   165    73  2
+ 1537     73   199    25  0
+ 1538     73   113    41  2
+ 1539    113   199    41  0
+ 1540     41   199    73  0
+ 1541    113   199    72  0
+ 1542     72   199    41  0
+ 1543    113    72   163  0
+ 1544     41    72    25  1
+ 1545     25   199    41  0
+ 1546     25    73    41  2
+ 1547     84   202   111  0
+ 1548     27   123    78  5
+ 1549    123   202    78  0
+ 1550    163   202   111  0
+ 1551    163   202   164  0
+ 1552     74   202   163  0
+ 1553     27   202    74  0
+ 1554     74   202   164  0
+ 1555     95   203   179  0
+ 1556    179   203   137  0
+ 1557    136   179    95  1
+ 1558    136   203   179  0
+ 1559    179   203    96  0
+ 1560     96   203   137  0
+ 1561     96   178    21  2
+ 1562     21   203    96  0
+ 1563    103   210   147  1
+ 1564    192   210    87  0
+ 1565     87   210   156  1
+ 1566    147   210    87  1
+ 1567     96   203   180  0
+ 1568    180   203   137  0
+ 1569     21   180    96  2
+ 1570     21   203   180  0
+ 1571     35   205   194  0
+ 1572     43   213   164  0
+ 1573    104   205   152  0
+ 1574    172   213   126  0
+ 1575    190   206   104  0
+ 1576    150   206   187  0
+ 1577    104   206   150  0
+ 1578    150   206   190  0
+ 1579     93   207   206  0
+ 1580    189   207    93  0
+ 1581     93   207   158  0
+ 1582    158   173    55  4
+ 1583    158   207   173  0
+ 1584    173   207    55  0
+ 1585    173   207   189  0
+ 1586     93   173   158  4
+ 1587     93   207   173  0
+ 1588    187   209   203  0
+ 1589    203   209   137  0
+ 1590    203   209   180  0
+ 1591    191   209   203  0
+ 1592     21   209   191  0
+ 1593    180   209    21  0
+ 1594     21   209   203  0
+ 1595    193   211   191  0
+ 1596     13   142    64  3
+ 1597    142   212    64  0
+ 1598     64   212    13  0
+ 1599     64   154    13  2
+ 1600     64   212   154  0
+ 1601    194   212   100  0
+ 1602    105   142    35  3
+ 1603     35   212   105  0
+ 1604     64   212   155  0
+ 1605    155   212   154  0
+ 1606    142   155    64  3
+ 1607    155   212   153  0
+ 1608    153   212   154  0
+ 1609    193   212   153  0
+ 1610    153   212   101  0
+ 1611    176   213   164  0
+ 1612    164   213    75  0
+ 1613     43   213   197  0
+ 1614    197   213   164  0
+ 1615    197   213    75  0
+ 1616     75   197   115  4
+ 1617    197   213   115  0
+# Generated by tetgen -qfa0.005 beam.poly 
diff --git a/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.node b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.node
new file mode 100644
index 0000000000000000000000000000000000000000..5b233914d8cf018f3ba92cac61104e20abce02b4
--- /dev/null
+++ b/applications/utilities/mesh/conversion/tetgenToFoam/beam.1.node
@@ -0,0 +1,215 @@
+213  3  0  0
+   1    0  0  0
+   2    2  0  0
+   3    2  1  0
+   4    0  1  0
+   5    0  0  1
+   6    2  0  1
+   7    2  1  1
+   8    0  1  1
+   9    1.0000469999999999  0  0
+  10    0.999668  1  0
+  11    0.99944500000000003  1  1
+  12    1.000594  0  1
+  13    2  0  0.50021530000000003
+  14    2  0.50012599999999996  0
+  15    0  1  0.50045629999999997
+  16    0  0.49964989999999998  0
+  17    0.62483357601847556  1  0.49991643678795222
+  18    0  0  0.5
+  19    0  0.5  1
+  20    0.62494657145582122  0.49985790875808178  0
+  21    1.375120204581187  0  0.4997949845615941
+  22    2  0.5  1
+  23    2  1  0.5
+  24    0.499834  1  0
+  25    0.50029699999999999  0  1
+  26    0.49972250000000001  1  1
+  27    0  0.50000006130646835  0.49999993869353165
+  28    0.50002349999999995  0  0
+  29    1.5000235  0  0
+  30    1.1458145624989733  0.5000553177266871  0
+  31    1.3748336567109987  1  0.5000836868059465
+  32    0.75044549999999999  0.49971323947400004  1
+  33    0.75044549999999999  0  0.50013668162500002
+  34    1.500297  0  1
+  35    2  0.49999999206099965  0.49999999206099965
+  36    1.4997225000000001  1  1
+  37    0.88530655619767451  0.69523571541331353  0
+  38    0.74975100000000006  1  0
+  39    0.99985800700011418  1  0.39062501526316751
+  40    0  0.2500000613064608  0.7499999386935392
+  41    0.2501485  0  1
+  42    0.37527044007359472  0.62466041202689604  1
+  43    0  0.7497720581817594  0.74999999997204392
+  44    0.24986125000000001  1  1
+  45    0.31241083060970776  0.68739558038665782  0
+  46    0  1  0.25022814999999998
+  47    0  0.74982495000000005  0
+  48    0.3125356465289606  0.31239559711921033  0
+  49    0.37524548555134551  0  0.37523962153691648
+  50    0  0.25000000002145584  0.25017492745143088
+  51    1.2500352499999998  0  0
+  52    1.0626973305232652  0  0.34361890927552119
+  53    1.4998339999999999  1  0
+  54    0.74958374999999999  1  1
+  55    0.88519156134454835  1  0.69523493182271912
+  56    0.75044549999999999  0  1
+  57    0.75003524999999993  0  0
+  58    0.88545457775712011  0.3046775110714553  0
+  59    1.4999999173907641  0.49999999435116604  1
+  60    2  0.25010760364761792  0.74999999999829137
+  61    2  0.25  1
+  62    2  0  0.75010765000000001
+  63    1.5729133203896351  0.4271084905205621  0
+  64    2  0  0.25010765000000001
+  65    2  0.25006299999999998  0
+  66    0.81619988117037301  0.51616065956439328  0.48387527405505287
+  67    0.62479250000000008  1  0.23434098330631092
+  68    0.62479250000000008  0.7655391212272894  0
+  69    1.2497509999999998  1  0
+  70    0  0.25  1
+  71    0  0  0.75
+  72    0.37522274999999999  0.29980854989635936  1
+  73    0.37522274999999999  0  0.70013946473134281
+  74    0  0.49988605975809192  0.74988593714516283
+  75    0.31255174452459605  1  0.65638401293888804
+  76    0  0.75  1
+  77    0.249917  1  0
+  78    0  0.70831779089254521  0.29167340665919461
+  79    0.25001174999999998  0  0
+  80    0.62526649037406934  0  0.25017085386153537
+  81    0.625029375  0.23429805042184107  0
+  82    0  0.24982494999999999  0
+  83    0  0.25008755567468249  0.50008743306175329
+  84    0.33552291795286748  0.37713361953826796  0.37295234921245662
+  85    1.3275022682494733  0.27703395451399626  0
+  86    1.6873917295541676  1  0.31254602883562033
+  87    1.7393002110516891  0.73944000928409781  0
+  88    2  0.7499999999989998  0.25006298412499983
+  89    0.62528740222670842  0.74964177558619371  1
+  90    0.62465312500000003  1  0.76556323888302447
+  91    0.87551975000000004  0.24985661973700002  1
+  92    0.87551975000000004  0  0.75006834081249996
+  93    1.1922864636768418  1  0.75390684273024755
+  94    1.24958375  0.74986113453803516  1
+  95    1.1698804466514103  0.41956399899988917  1
+  96    1.187959730551635  0  0.74997433471920583
+  97    1.6874419282782818  1  0.68754603555472626
+  98    1.7498612499999999  1  1
+  99    2  0.74999999206099988  0.74999999206099988
+ 100    1.6597700161872737  0  0.69432640578660343
+ 101    1.6597808229817657  0  0.30542952755181008
+ 102    1.7499999601075902  0.375  1
+ 103    1.3990667318832528  0.69603906683685635  0
+ 104    1.4950021306707608  0.49065317884606224  0.49500212996719484
+ 105    2  0.37509449999999989  0.24996850198475024
+ 106    0.82837583873678577  0.49993500845038119  0
+ 107    1.0695558475797649  0.66971322958604163  0.29687786818700823
+ 108    0.85307867962811157  0.24362257622712302  0.31516017245746403
+ 109    0.82827226523186892  1  0.49992109713449329
+ 110    0.85617934854666022  1  0.20723770847200895
+ 111    0.52956259724790877  0.46221182650782827  0.70815142735106607
+ 112    0.197844687328108  0.19781366296788089  1
+ 113    0.19785716305721113  0  0.8021738538924329
+ 114    0.2208783106844166  0.46225714309073845  1
+ 115    0  1  0.75022814999999998
+ 116    0.43264896150206789  1  0.81375076634557386
+ 117    0.374791875  0.83312128766119486  1
+ 118    0  0.72915434172921567  0.52082680685839422
+ 119    0.25758862433333551  1  0.37534222499999997
+ 120    0  0  0.25
+ 121    0.22089000562634489  0  0.53767874257955828
+ 122    0.21890193241166289  0  0.21890047052636122
+ 123    0  0.48262354769989868  0.23265983080935737
+ 124    0.52955330709238257  0  0.53770034194467331
+ 125    0.49219718763882514  0.367036574432759  0
+ 126    0.5505556528350013  0.63265541955504201  0.30493806376468496
+ 127    1.4081582558189005  0  0.24254676799800692
+ 128    1.1015512434437607  0.21206527974784434  0
+ 129    1.7499169999999999  1  0
+ 130    2  0.75006299999999992  0
+ 131    2  1  0.25
+ 132    0.99401036538229792  0.63676792199224752  1
+ 133    0.75067050430146165  0.71769786903092825  0.71464771158468776
+ 134    1.24958375  1  1
+ 135    1.2504455000000001  0  1
+ 136    1.3860715978416591  0.24993221667186555  1
+ 137    1.0317202752404047  0.31469238410894046  0.6853270709080328
+ 138    1.4426349216014702  1  0.74140038799848562
+ 139    1.6247918750000001  0.75006931305374525  1
+ 140    2  1  0.75
+ 141    2  0.74996849602949978  0.50003148809249964
+ 142    2  0.24999994966813449  0.49999998078418173
+ 143    1.7500117500000001  0  0
+ 144    1.7501484999999999  0  1
+ 145    2  0.5000537978534545  0.74994618626854503
+ 146    1.3747924999999996  1  0.23440908488585499
+ 147    1.5571177737167572  0.81232629338982021  0
+ 148    1.5545253193695066  1  0.17972930755262501
+ 149    1.3104200347998118  0.56041577372755713  0.74814782862252316
+ 150    1.3685266838244452  0.48564116582667954  0.21802764397288932
+ 151    1.5873602781685263  0.78126669962189421  0.50005942609143139
+ 152    1.5838618227448735  0.20899413185535243  0.49987585715718413
+ 153    1.7498120256325995  0.25018792583716926  0
+ 154    1.8148371462917434  0  0.18519382949207305
+ 155    2  0.18752406345187056  0.18753523208397008
+ 156    1.7770110643184227  0.51886547556217666  0
+ 157    1.1389013076817112  0.76226887437066193  0
+ 158    1.1602175406966813  1  0.53828850106094039
+ 159    0.90095306490776128  0.48470516503498373  0.2446998657917499
+ 160    0.57742475390278236  0.27551969863450299  0.27345305390889807
+ 161    0.81036655925196366  0.7630643710333207  0.35054165377955776
+ 162    0.52956259724790877  0.46221182650782827  1
+ 163    0.29250079461431827  0.2842960350422109  0.71570127112180726
+ 164    0.27385619515889037  0.6248453002643185  0.71436194557321087
+ 165    0.62168045737651678  0  0.77560610491729931
+ 166    0.62537124999999993  0.2188435803315899  1
+ 167    0.40196038774740384  1  0.20267603513549107
+ 168    0.17704223351222992  0.82288246470050785  0
+ 169    0.18892018646284411  1  0.18899622733072144
+ 170    0.23373058746113159  0.23679172957531613  0.21078402860060638
+ 171    0.24428427259573549  0.59937304517793366  0.24724219230200442
+ 172    0.42388190576270124  1  0.4887158204143946
+ 173    1.0208555875954755  1  0.81817459887813815
+ 174    1.0669175695053206  0.81733378836053194  1
+ 175    0.8464712840664248  0.80134170756139955  1
+ 176    0.60552202714220704  0.62419153018194229  0.54239960836207701
+ 177    1.606777848712118  0.19973253606683206  1
+ 178    1.4250560553222698  0  0.732249791887851
+ 179    1.12551975  0.19352873225326209  1
+ 180    1.1620342234529084  0  0.53548179044497457
+ 181    0.77419059143108437  0.35536625456813642  0.76865650139332142
+ 182    0.95600842566592681  0  0.52050427577014857
+ 183    2  0.75  1
+ 184    1.8229055680968635  1  0.82294606919028224
+ 185    1.8124074661770861  0.8124421408239394  1
+ 186    1.6847465495324894  0.55699324455967203  0.74450659675858755
+ 187    1.1945125727535346  0.47020737648361044  0.48501348343009743
+ 188    1.4371531545555845  0.81243056656291324  1
+ 189    1.0230031981183827  0.60745624022002409  0.70905352953001077
+ 190    1.3178218537541635  0.74283221838842173  0.24644567916733129
+ 191    1.2298563370114035  0.23209604059822986  0.27403980288191482
+ 192    1.7289412043422971  0.73378563235104455  0.27218740896208421
+ 193    1.6944192651948711  0.39497422853539144  0.28096087015676863
+ 194    1.719021973042385  0.27206088666699435  0.73925099693622187
+ 195    0.51628118103442489  0.26487001488387318  0.53136856951372224
+ 196    0.22693818747394334  0.22584860839480125  0.50499300132112901
+ 197    0.18870598201308805  1  0.81131589108741564
+ 198    0.18140974929389231  0.81855222162009078  1
+ 199    0.52377345173705003  0.22575111801259504  0.77599180569982884
+ 200    0.44512574719134834  0.82031319413422632  0
+ 201    0.43769402753141229  0  0.18763960779463965
+ 202    0.23194582827732274  0.56348972010969589  0.48517047319960538
+ 203    1.404605953982319  0.2885118284317002  0.71332319773860509
+ 204    0.83285106746651061  0.22679389369216291  0.56316489552371896
+ 205    1.746191712341544  0.57096666984982924  0.48834249131610469
+ 206    1.2698479063322867  0.73902081556323673  0.53223169180184582
+ 207    1.0027339377070847  0.7783240018776667  0.51915438810718473
+ 208    1.1247094999999998  1  0.19525173141898322
+ 209    1.0585177272595161  0.22306568484158776  0.45497453797743681
+ 210    1.5766743500280587  0.62019545180903912  0
+ 211    1.5362846212581589  0.2135856104587727  0
+ 212    1.7956396187713533  0.19223457391785517  0.37621602432494938
+ 213    0.2338562054207384  0.80644498148268706  0.52587899633894741
+# Generated by tetgen -qfa0.005 beam.poly 
diff --git a/applications/utilities/mesh/generation/blockMesh/blockPoints.C b/applications/utilities/mesh/generation/blockMesh/blockPoints.C
index 8f4993150c04e975d97560e7a1aa4a02a19a9511..107b9d7fd8f5abcb2f1b13a209d36a5f617d2397 100644
--- a/applications/utilities/mesh/generation/blockMesh/blockPoints.C
+++ b/applications/utilities/mesh/generation/blockMesh/blockPoints.C
@@ -35,23 +35,23 @@ Description
 void Foam::block::blockPoints()
 {
     // set local variables for mesh specification
-    label ni = blockDef_.n().x();
-    label nj = blockDef_.n().y();
-    label nk = blockDef_.n().z();
+    const label ni = blockDef_.n().x();
+    const label nj = blockDef_.n().y();
+    const label nk = blockDef_.n().z();
 
-    point start = blockDef_.points()[blockDef_.blockShape()[0]];
-    point xEnd = blockDef_.points()[blockDef_.blockShape()[1]];
-    point xyEnd = blockDef_.points()[blockDef_.blockShape()[2]];
-    point yEnd = blockDef_.points()[blockDef_.blockShape()[3]];
+    const point p000 = blockDef_.points()[blockDef_.blockShape()[0]];
+    const point p100 = blockDef_.points()[blockDef_.blockShape()[1]];
+    const point p110 = blockDef_.points()[blockDef_.blockShape()[2]];
+    const point p010 = blockDef_.points()[blockDef_.blockShape()[3]];
 
-    point zEnd = blockDef_.points()[blockDef_.blockShape()[4]];
-    point xzEnd = blockDef_.points()[blockDef_.blockShape()[5]];
-    point xyzEnd = blockDef_.points()[blockDef_.blockShape()[6]];
-    point yzEnd = blockDef_.points()[blockDef_.blockShape()[7]];
+    const point p001 = blockDef_.points()[blockDef_.blockShape()[4]];
+    const point p101 = blockDef_.points()[blockDef_.blockShape()[5]];
+    const point p111 = blockDef_.points()[blockDef_.blockShape()[6]];
+    const point p011 = blockDef_.points()[blockDef_.blockShape()[7]];
 
-    // set reference to the list of edge point and weighting factors
-    const List<List<point> >& edgePoints = blockDef_.blockEdgePoints();
-    const scalarListList& edgeWeights = blockDef_.blockEdgeWeights();
+    // list of edge point and weighting factors
+    const List<List<point> >& p = blockDef_.blockEdgePoints();
+    const scalarListList& w = blockDef_.blockEdgeWeights();
 
     // generate vertices
 
@@ -63,193 +63,138 @@ void Foam::block::blockPoints()
             {
                 label vertexNo = vtxLabel(i, j, k);
 
-                vector edgex1 = start*(1.0 - edgeWeights[0][i])
-                      + xEnd*edgeWeights[0][i];
+                // points on edges
+                vector edgex1 = p000 + (p100 - p000)*w[0][i];
+                vector edgex2 = p010 + (p110 - p010)*w[1][i];
+                vector edgex3 = p011 + (p111 - p011)*w[2][i];
+                vector edgex4 = p001 + (p101 - p001)*w[3][i];
 
-                vector edgex2 = yEnd*(1.0 - edgeWeights[1][i])
-                      + xyEnd*edgeWeights[1][i];
+                vector edgey1 = p000 + (p010 - p000)*w[4][j];
+                vector edgey2 = p100 + (p110 - p100)*w[5][j];
+                vector edgey3 = p101 + (p111 - p101)*w[6][j];
+                vector edgey4 = p001 + (p011 - p001)*w[7][j];
 
-                vector edgex3 = yzEnd*(1.0 - edgeWeights[2][i])
-                      + xyzEnd*edgeWeights[2][i];
-
-                vector edgex4 = zEnd*(1.0 - edgeWeights[3][i])
-                      + xzEnd*edgeWeights[3][i];
-
-
-
-                vector edgey1 = start*(1.0 - edgeWeights[4][j])
-                      + yEnd*edgeWeights[4][j];
-
-                vector edgey2 = xEnd*(1.0 - edgeWeights[5][j])
-                      + xyEnd*edgeWeights[5][j];
-
-                vector edgey3 = xzEnd*(1.0 - edgeWeights[6][j])
-                      + xyzEnd*edgeWeights[6][j];
-
-                vector edgey4 = zEnd*(1.0 - edgeWeights[7][j])
-                      + yzEnd*edgeWeights[7][j];
-
-
-
-                vector edgez1 = start*(1.0 - edgeWeights[8][k])
-                      + zEnd*edgeWeights[8][k];
-
-                vector edgez2 = xEnd*(1.0 - edgeWeights[9][k])
-                      + xzEnd*edgeWeights[9][k];
-
-                vector edgez3 = xyEnd*(1.0 - edgeWeights[10][k])
-                      + xyzEnd*edgeWeights[10][k];
-
-                vector edgez4 = yEnd*(1.0 - edgeWeights[11][k])
-                      + yzEnd*edgeWeights[11][k];
+                vector edgez1 = p000 + (p001 - p000)*w[8][k];
+                vector edgez2 = p100 + (p101 - p100)*w[9][k];
+                vector edgez3 = p110 + (p111 - p110)*w[10][k];
+                vector edgez4 = p010 + (p011 - p010)*w[11][k];
 
                 // calculate the importance factors for all edges
                 // x - direction
                 scalar impx1 =
                 (
-                    (1.0 - edgeWeights[0][i])
-                        *(1.0 - edgeWeights[4][j])
-                        *(1.0 - edgeWeights[8][k])
-                  + edgeWeights[0][i]
-                        *(1.0 - edgeWeights[5][j])
-                        *(1.0 - edgeWeights[9][k])
+                    (1.0 - w[0][i])*(1.0 - w[4][j])*(1.0 - w[8][k])
+                  + w[0][i]*(1.0 - w[5][j])*(1.0 - w[9][k])
                 );
 
                 scalar impx2 =
                 (
-                    (1.0 - edgeWeights[1][i])
-                        *edgeWeights[4][j]
-                        *(1.0 - edgeWeights[11][k])
-                  + edgeWeights[1][i]
-                        *edgeWeights[5][j]
-                        *(1.0 - edgeWeights[10][k])
+                    (1.0 - w[1][i])*w[4][j]*(1.0 - w[11][k])
+                  + w[1][i]*w[5][j]*(1.0 - w[10][k])
                 );
 
-               scalar impx3 =
-               (
-                   (1.0 - edgeWeights[2][i])
-                       *edgeWeights[7][j]
-                       *edgeWeights[11][k]
-                 + edgeWeights[2][i]
-                       *edgeWeights[6][j]
-                       *edgeWeights[10][k]
-               );
+                scalar impx3 =
+                (
+                     (1.0 - w[2][i])*w[7][j]*w[11][k]
+                   + w[2][i]*w[6][j]*w[10][k]
+                );
 
 
-               scalar impx4 =
-               (
-                   (1.0 - edgeWeights[3][i])
-                       *(1.0 - edgeWeights[7][j])
-                       *edgeWeights[8][k]
-                 + edgeWeights[3][i]
-                       *(1.0 - edgeWeights[6][j])
-                       *edgeWeights[9][k]
-               );
+                scalar impx4 =
+                (
+                    (1.0 - w[3][i])*(1.0 - w[7][j])*w[8][k]
+                  + w[3][i]*(1.0 - w[6][j])*w[9][k]
+                );
 
+                scalar magImpx = impx1 + impx2 + impx3 + impx4;
+                impx1 /= magImpx;
+                impx2 /= magImpx;
+                impx3 /= magImpx;
+                impx4 /= magImpx;
 
 
                 // y - direction
                 scalar impy1 =
                 (
-                    (1.0 - edgeWeights[4][j])
-                        *(1.0 - edgeWeights[0][i])
-                        *(1.0 - edgeWeights[8][k])
-                  + edgeWeights[4][j]
-                        *(1.0 - edgeWeights[1][i])
-                        *(1.0 - edgeWeights[11][k])
+                    (1.0 - w[4][j])*(1.0 - w[0][i])*(1.0 - w[8][k])
+                  + w[4][j]*(1.0 - w[1][i])*(1.0 - w[11][k])
                 );
 
                 scalar impy2 =
                 (
-                    (1.0 - edgeWeights[5][j])
-                        *edgeWeights[0][i]
-                        *(1.0 - edgeWeights[9][k])
-                  + edgeWeights[5][j]
-                        *edgeWeights[1][i]
-                        *(1.0 - edgeWeights[10][k])
+                    (1.0 - w[5][j])*w[0][i]*(1.0 - w[9][k])
+                  + w[5][j]*w[1][i]*(1.0 - w[10][k])
                 );
 
                 scalar impy3 =
                 (
-                    (1.0 - edgeWeights[6][j])
-                        *edgeWeights[3][i]
-                        *edgeWeights[9][k]
-                  + edgeWeights[6][j]
-                        *edgeWeights[2][i]
-                        *edgeWeights[10][k]
+                    (1.0 - w[6][j])*w[3][i]*w[9][k]
+                  + w[6][j]*w[2][i]*w[10][k]
                 );
 
                 scalar impy4 =
                 (
-                    (1.0 - edgeWeights[7][j])
-                        *(1.0 - edgeWeights[3][i])
-                        *edgeWeights[8][k]
-                  + edgeWeights[7][j]
-                        *(1.0 - edgeWeights[2][i])
-                        *edgeWeights[11][k]
+                    (1.0 - w[7][j])*(1.0 - w[3][i])*w[8][k]
+                  + w[7][j]*(1.0 - w[2][i])*w[11][k]
                 );
 
+                scalar magImpy = impy1 + impy2 + impy3 + impy4;
+                impy1 /= magImpy;
+                impy2 /= magImpy;
+                impy3 /= magImpy;
+                impy4 /= magImpy;
 
 
                 // z - direction
                 scalar impz1 =
                 (
-                    (1.0 - edgeWeights[8][k])
-                        *(1.0 - edgeWeights[0][i])
-                        *(1.0 - edgeWeights[4][j])
-                  + edgeWeights[8][k]
-                        *(1.0 - edgeWeights[3][i])
-                        *(1.0 - edgeWeights[7][j])
+                    (1.0 - w[8][k])*(1.0 - w[0][i])*(1.0 - w[4][j])
+                  + w[8][k]*(1.0 - w[3][i])*(1.0 - w[7][j])
                 );
 
                 scalar impz2 =
                 (
-                    (1.0 - edgeWeights[9][k])
-                        *edgeWeights[0][i]
-                        *(1.0 - edgeWeights[5][j])
-                  + edgeWeights[9][k]
-                        *edgeWeights[3][i]
-                        *(1.0 - edgeWeights[6][j])
+                    (1.0 - w[9][k])*w[0][i]*(1.0 - w[5][j])
+                  + w[9][k]*w[3][i]*(1.0 - w[6][j])
                 );
 
                 scalar impz3 =
                 (
-                    (1.0 - edgeWeights[10][k])
-                        *edgeWeights[1][i]
-                        *edgeWeights[5][j]
-                  + edgeWeights[10][k]
-                        *edgeWeights[2][i]
-                        *edgeWeights[6][j]
+                    (1.0 - w[10][k])*w[1][i]*w[5][j]
+                  + w[10][k]*w[2][i]*w[6][j]
                 );
 
                 scalar impz4 =
                 (
-                    (1.0 - edgeWeights[11][k])
-                        *(1.0 - edgeWeights[1][i])
-                        *edgeWeights[4][j]
-                  + edgeWeights[11][k]
-                        *(1.0 - edgeWeights[2][i])
-                        *edgeWeights[7][j]
+                    (1.0 - w[11][k])*(1.0 - w[1][i])*w[4][j]
+                  + w[11][k]*(1.0 - w[2][i])*w[7][j]
                 );
 
+                scalar magImpz = impz1 + impz2 + impz3 + impz4;
+                impz1 /= magImpz;
+                impz2 /= magImpz;
+                impz3 /= magImpz;
+                impz4 /= magImpz;
+
                 // calculate the correction vectors
-                vector corx1 = impx1*(edgePoints[0][i] - edgex1);
-                vector corx2 = impx2*(edgePoints[1][i] - edgex2);
-                vector corx3 = impx3*(edgePoints[2][i] - edgex3);
-                vector corx4 = impx4*(edgePoints[3][i] - edgex4);
+                vector corx1 = impx1*(p[0][i] - edgex1);
+                vector corx2 = impx2*(p[1][i] - edgex2);
+                vector corx3 = impx3*(p[2][i] - edgex3);
+                vector corx4 = impx4*(p[3][i] - edgex4);
 
-                vector cory1 = impy1*(edgePoints[4][j] - edgey1);
-                vector cory2 = impy2*(edgePoints[5][j] - edgey2);
-                vector cory3 = impy3*(edgePoints[6][j] - edgey3);
-                vector cory4 = impy4*(edgePoints[7][j] - edgey4);
+                vector cory1 = impy1*(p[4][j] - edgey1);
+                vector cory2 = impy2*(p[5][j] - edgey2);
+                vector cory3 = impy3*(p[6][j] - edgey3);
+                vector cory4 = impy4*(p[7][j] - edgey4);
 
-                vector corz1 = impz1*(edgePoints[8][k] - edgez1);
-                vector corz2 = impz2*(edgePoints[9][k] - edgez2);
-                vector corz3 = impz3*(edgePoints[10][k] - edgez3);
-                vector corz4 = impz4*(edgePoints[11][k] - edgez4);
+                vector corz1 = impz1*(p[8][k] - edgez1);
+                vector corz2 = impz2*(p[9][k] - edgez2);
+                vector corz3 = impz3*(p[10][k] - edgez3);
+                vector corz4 = impz4*(p[11][k] - edgez4);
 
 
                 // multiply by the importance factor
+
                 // x - direction
                 edgex1 *= impx1;
                 edgex2 *= impx2;
@@ -279,7 +224,6 @@ void Foam::block::blockPoints()
                 vertices_[vertexNo] += corx1 + corx2 + corx3 + corx4;
                 vertices_[vertexNo] += cory1 + cory2 + cory3 + cory4;
                 vertices_[vertexNo] += corz1 + corz2 + corz3 + corz4;
-
             }
         }
     }
diff --git a/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C b/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
index cbd2d9e4191ccceac1505046fc5b468abbf20cd8..d8d12c08452286fff48d769389f881dd50581dcb 100644
--- a/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
+++ b/applications/utilities/mesh/manipulation/mergeOrSplitBaffles/mergeOrSplitBaffles.C
@@ -154,10 +154,77 @@ void insertDuplicateMerge
 }
 
 
+labelList findBaffles(const polyMesh& mesh, const labelList& boundaryFaces)
+{
+    // Get all duplicate face labels (in boundaryFaces indices!).
+    labelList duplicates = localPointRegion::findDuplicateFaces
+    (
+        mesh,
+        boundaryFaces
+    );
+
+
+    // Check that none are on processor patches
+    const polyBoundaryMesh& patches = mesh.boundaryMesh();
+
+    forAll(duplicates, bFaceI)
+    {
+        if (duplicates[bFaceI] != -1)
+        {
+            label faceI = mesh.nInternalFaces() + bFaceI;
+            label patchI = patches.whichPatch(faceI);
+
+            if (isA<processorPolyPatch>(patches[patchI]))
+            {
+                FatalErrorIn("findBaffles(const polyMesh&, const labelList&)")
+                    << "Duplicate face " << faceI
+                    << " is on a processorPolyPatch."
+                    << "This is not allowed." << nl
+                    << "Face:" << faceI
+                    << " is on patch:" << patches[patchI].name()
+                    << abort(FatalError);
+            }
+        }
+    }
+
+
+    // Write to faceSet for ease of postprocessing.
+    {
+        faceSet duplicateSet
+        (
+            mesh,
+            "duplicateFaces",
+            (mesh.nFaces() - mesh.nInternalFaces())/256
+        );
+
+        forAll(duplicates, bFaceI)
+        {
+            label otherFaceI = duplicates[bFaceI];
+
+            if (otherFaceI != -1 && otherFaceI > bFaceI)
+            {
+                duplicateSet.insert(mesh.nInternalFaces() + bFaceI);
+                duplicateSet.insert(mesh.nInternalFaces() + otherFaceI);
+            }
+        }
+
+        Pout<< "Writing " << duplicateSet.size()
+            << " duplicate faces to faceSet " << duplicateSet.objectPath()
+            << nl << endl;
+        duplicateSet.write();
+    }
+
+    return duplicates;
+}
+
+
+
+
 int main(int argc, char *argv[])
 {
     argList::validOptions.insert("split", "");
     argList::validOptions.insert("overwrite", "");
+    argList::validOptions.insert("detectOnly", "");
 #   include "setRootCase.H"
 #   include "createTime.H"
     runTime.functionObjects().off();
@@ -165,6 +232,7 @@ int main(int argc, char *argv[])
 
     bool split = args.options().found("split");
     bool overwrite = args.options().found("overwrite");
+    bool detectOnly = args.options().found("detectOnly");
 
     // Collect all boundary faces
     labelList boundaryFaces(mesh.nFaces() - mesh.nInternalFaces());
@@ -175,6 +243,15 @@ int main(int argc, char *argv[])
     }
 
 
+    if (detectOnly)
+    {
+        findBaffles(mesh, boundaryFaces);
+
+        return 0;
+    }
+
+
+
     // Read objects in time directory
     IOobjectList objects(mesh, runTime.timeName());
 
@@ -238,62 +315,7 @@ int main(int argc, char *argv[])
             << nl << endl;
 
         // Get all duplicate face labels (in boundaryFaces indices!).
-        labelList duplicates = localPointRegion::findDuplicateFaces
-        (
-            mesh,
-            boundaryFaces
-        );
-
-
-        // Check that none are on processor patches
-        const polyBoundaryMesh& patches = mesh.boundaryMesh();
-
-        forAll(duplicates, bFaceI)
-        {
-            if (duplicates[bFaceI] != -1)
-            {
-                label faceI = mesh.nInternalFaces() + bFaceI;
-                label patchI = patches.whichPatch(faceI);
-
-                if (isA<processorPolyPatch>(patches[patchI]))
-                {
-                    FatalErrorIn(args.executable())
-                        << "Duplicate face " << faceI
-                        << " is on a processorPolyPatch."
-                        << "This is not allowed." << nl
-                        << "Face:" << faceI
-                        << " is on patch:" << patches[patchI].name()
-                        << abort(FatalError);
-                }
-            }
-        }
-
-
-        // Write to faceSet for ease of postprocessing.
-        {
-            faceSet duplicateSet
-            (
-                mesh,
-                "duplicateFaces",
-                (mesh.nFaces() - mesh.nInternalFaces())/256
-            );
-
-            forAll(duplicates, bFaceI)
-            {
-                label otherFaceI = duplicates[bFaceI];
-
-                if (otherFaceI != -1 && otherFaceI > bFaceI)
-                {
-                    duplicateSet.insert(mesh.nInternalFaces() + bFaceI);
-                    duplicateSet.insert(mesh.nInternalFaces() + otherFaceI);
-                }
-            }
-
-            Pout<< "Writing " << duplicateSet.size()
-                << " duplicate faces to faceSet " << duplicateSet.objectPath()
-                << nl << endl;
-            duplicateSet.write();
-        }
+        labelList duplicates(findBaffles(mesh, boundaryFaces));
 
         // Merge into internal faces.
         insertDuplicateMerge(mesh, duplicates, meshMod);
diff --git a/applications/utilities/mesh/manipulation/setSet/setSet.C b/applications/utilities/mesh/manipulation/setSet/setSet.C
index f8f05747f8bcbf9ea7039be14c3c0b26fcbd3edb..c0503e5bf529a85621ea3eb80344638655990e83 100644
--- a/applications/utilities/mesh/manipulation/setSet/setSet.C
+++ b/applications/utilities/mesh/manipulation/setSet/setSet.C
@@ -714,9 +714,11 @@ commandStatus parseAction(const word& actionName)
 
 int main(int argc, char *argv[])
 {
+#   include "addRegionOption.H"
+#   include "addTimeOptions.H"
+
     argList::validOptions.insert("noVTK", "");
     argList::validOptions.insert("batch", "file");
-#   include "addTimeOptions.H"
 
 #   include "setRootCase.H"
 #   include "createTime.H"
@@ -730,7 +732,7 @@ int main(int argc, char *argv[])
 
     runTime.setTime(Times[startTime], startTime);
 
-#   include "createPolyMesh.H"
+#   include "createNamedPolyMesh.H"
 
     // Print some mesh info
     printMesh(runTime, mesh);
diff --git a/applications/utilities/postProcessing/patch/patchAverage/patchAverage.C b/applications/utilities/postProcessing/patch/patchAverage/patchAverage.C
index 41140a33fea2bf551f1d4de65a276e5ce11dbd13..f66a5cf2f3664e25125cd391795e12a657de7857 100644
--- a/applications/utilities/postProcessing/patch/patchAverage/patchAverage.C
+++ b/applications/utilities/postProcessing/patch/patchAverage/patchAverage.C
@@ -79,12 +79,12 @@ int main(int argc, char *argv[])
                 Info<< "    Reading volScalarField " << fieldName << endl;
                 volScalarField field(fieldHeader, mesh);
 
-                scalar area = sum(mesh.magSf().boundaryField()[patchi]);
+                scalar area = gSum(mesh.magSf().boundaryField()[patchi]);
                 scalar sumField = 0;
 
                 if (area > 0)
                 {
-                    sumField = sum
+                    sumField = gSum
                     (
                         mesh.magSf().boundaryField()[patchi]
                       * field.boundaryField()[patchi]
diff --git a/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C b/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
index 3c0e18a9cf37e841cd8ca6a79b9b4f6aeeeef11a..c4eb708ff71453935bc8813cdc6059f557fd6f58 100644
--- a/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
+++ b/applications/utilities/postProcessing/patch/patchIntegrate/patchIntegrate.C
@@ -75,14 +75,14 @@ int main(int argc, char *argv[])
             }
 
             // Give patch area
-            Info<< "    Patch area = " << sum(mesh.Sf().boundaryField()[patchi]) << endl;
+            Info<< "    Patch area = " << gSum(mesh.Sf().boundaryField()[patchi]) << endl;
 
             if (fieldHeader.headerClassName() == "volScalarField")
             {
                 Info<< "    Reading volScalarField " << fieldName << endl;
                 volScalarField field(fieldHeader, mesh);
 
-                vector sumField = sum
+                vector sumField = gSum
                 (
                     mesh.Sf().boundaryField()[patchi]
                   * field.boundaryField()[patchi]
@@ -97,7 +97,7 @@ int main(int argc, char *argv[])
                 Info<< "    Reading surfaceScalarField " << fieldName << endl;
 
                 surfaceScalarField field(fieldHeader, mesh);
-                scalar sumField = sum(field.boundaryField()[patchi]);
+                scalar sumField = gSum(field.boundaryField()[patchi]);
 
                 Info<< "    Integral of " << fieldName << " over patch "
                     << patchName << '[' << patchi << ']' << " = "
diff --git a/applications/utilities/surface/surfaceCheck/surfaceCheck.C b/applications/utilities/surface/surfaceCheck/surfaceCheck.C
index 3506b05de7942769a2a425868ba0ddb2f7a51f59..2cd26f757e6ed75f3e9a00516f15b354eacb3a03 100644
--- a/applications/utilities/surface/surfaceCheck/surfaceCheck.C
+++ b/applications/utilities/surface/surfaceCheck/surfaceCheck.C
@@ -36,7 +36,7 @@ License
 using namespace Foam;
 
 // Does face use valid vertices?
-bool validTri(const triSurface& surf, const label faceI)
+bool validTri(const bool verbose, const triSurface& surf, const label faceI)
 {
     // Simple check on indices ok.
 
@@ -49,20 +49,21 @@ bool validTri(const triSurface& surf, const label faceI)
      || (f[2] < 0) || (f[2] >= surf.points().size())
     )
     {
-        //WarningIn("validTri(const triSurface&, const label)")
-        //    << "triangle " << faceI << " vertices " << f
-        //    << " uses point indices outside point range 0.."
-        //    << surf.points().size()-1 << endl;
+        WarningIn("validTri(const triSurface&, const label)")
+            << "triangle " << faceI << " vertices " << f
+            << " uses point indices outside point range 0.."
+            << surf.points().size()-1 << endl;
 
         return false;
     }
 
     if ((f[0] == f[1]) || (f[0] == f[2]) || (f[1] == f[2]))
     {
-        //WarningIn("validTri(const triSurface&, const label)")
-        //    << "triangle " << faceI
-        //    << " uses non-unique vertices " << f
-        //    << endl;
+        WarningIn("validTri(const triSurface&, const label)")
+            << "triangle " << faceI
+            << " uses non-unique vertices " << f
+            << " coords:" << f.points(surf.points())
+            << endl;
         return false;
     }
 
@@ -91,11 +92,12 @@ bool validTri(const triSurface& surf, const label faceI)
          && ((f[2] == nbrF[0]) || (f[2] == nbrF[1]) || (f[2] == nbrF[2]))
         )
         {
-            //WarningIn("validTri(const triSurface&, const label)")
-            //    << "triangle " << faceI << " vertices " << f
-            //    << " has the same vertices as triangle " << nbrFaceI
-            //    << " vertices " << nbrF
-            //    << endl;
+            WarningIn("validTri(const triSurface&, const label)")
+                << "triangle " << faceI << " vertices " << f
+                << " has the same vertices as triangle " << nbrFaceI
+                << " vertices " << nbrF
+                << " coords:" << f.points(surf.points())
+                << endl;
 
             return false;
         }
@@ -170,9 +172,11 @@ int main(int argc, char *argv[])
     argList::validArgs.clear();
     argList::validArgs.append("surface file");
     argList::validOptions.insert("noSelfIntersection", "");
+    argList::validOptions.insert("verbose", "");
     argList args(argc, argv);
 
     bool checkSelfIntersection = !args.options().found("noSelfIntersection");
+    bool verbose = args.options().found("verbose");
 
     fileName surfFileName(args.additionalArgs()[0]);
     Pout<< "Reading surface from " << surfFileName << " ..." << nl << endl;
@@ -232,7 +236,7 @@ int main(int argc, char *argv[])
 
         forAll(surf, faceI)
         {
-            if (!validTri(surf, faceI))
+            if (!validTri(verbose, surf, faceI))
             {
                 illegalFaces.append(faceI);
             }
diff --git a/applications/utilities/surface/surfaceSubset/surfaceSubsetDict b/applications/utilities/surface/surfaceSubset/surfaceSubsetDict
index 70879af6f428700fe0b8d8f9dcd7cbd325732327..83f5399b4431f23bb58557ed8eab60fba36f3888 100644
--- a/applications/utilities/surface/surfaceSubset/surfaceSubsetDict
+++ b/applications/utilities/surface/surfaceSubset/surfaceSubsetDict
@@ -42,4 +42,7 @@ surface
 // Extend selection with edge neighbours
 addFaceNeighbours no;
 
+// Invert selection
+invertSelection false;
+
 // ************************************************************************* //
diff --git a/etc/apps/cint/bashrc b/etc/apps/cint/bashrc
index 74827dfeed23e180a716d4bda555d112a0cbd4bf..11909e0487036cc94cf8dc613568c1b3bab0c01c 100644
--- a/etc/apps/cint/bashrc
+++ b/etc/apps/cint/bashrc
@@ -31,7 +31,7 @@
 #
 #------------------------------------------------------------------------------
 
-export CINTSYSDIR=~/pub/CINT/cint
+export CINTSYSDIR=~/pub/CINT/cint7
 export PATH=$PATH:$CINTSYSDIR
 export MANPATH=$MANPATH:$CINTSYSDIR/doc
 export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:$CINTSYSDIR
diff --git a/src/OpenFOAM/containers/Lists/SortableList/SortableList.C b/src/OpenFOAM/containers/Lists/SortableList/SortableList.C
index 7ebfa9de9ef185d82ee77f4e1e0c7c07d0d3921d..9eaf99c801b994d8f2a93f31c3ca2b8b8a83ca03 100644
--- a/src/OpenFOAM/containers/Lists/SortableList/SortableList.C
+++ b/src/OpenFOAM/containers/Lists/SortableList/SortableList.C
@@ -32,7 +32,7 @@ License
 
 // Construct from List
 template <class Type>
-Foam::SortableList<Type>::SortableList(const List<Type>& values)
+Foam::SortableList<Type>::SortableList(const UList<Type>& values)
 :
     List<Type>(values),
     indices_(values.size())
diff --git a/src/OpenFOAM/containers/Lists/SortableList/SortableList.H b/src/OpenFOAM/containers/Lists/SortableList/SortableList.H
index 1a5272e5b7823098dec984927c1ede3d23066286..305da6e32eed03ef9194d42a1247925e992b203f 100644
--- a/src/OpenFOAM/containers/Lists/SortableList/SortableList.H
+++ b/src/OpenFOAM/containers/Lists/SortableList/SortableList.H
@@ -88,7 +88,7 @@ public:
 
         //- Construct from List, sorting the elements.
         //  Starts with indices set to index in argument
-        explicit SortableList(const List<Type>&);
+        explicit SortableList(const UList<Type>&);
 
         //- Construct from tranferred List, sorting the elements.
         //  Starts with indices set to index in argument
diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C
index 994f8ee6301b63f66c26e5532b5c755c2f86dece..c906bcbf5559b9e601109e01f4f10281af24b96c 100644
--- a/src/OpenFOAM/fields/Fields/Field/Field.C
+++ b/src/OpenFOAM/fields/Fields/Field/Field.C
@@ -575,20 +575,6 @@ void Field<Type>::replace
 }
 
 
-template<class Type>
-void Field<Type>::transfer(Field<Type>& f)
-{
-    List<Type>::transfer(f);
-}
-
-
-template<class Type>
-void Field<Type>::transfer(List<Type>& lst)
-{
-    List<Type>::transfer(lst);
-}
-
-
 template<class Type>
 tmp<Field<Type> > Field<Type>::T() const
 {
diff --git a/src/OpenFOAM/fields/Fields/Field/Field.H b/src/OpenFOAM/fields/Fields/Field/Field.H
index 8e168cb0ac9b5911a8b52da259615bf751365cca..1b372925e340ea410302b1162ad6598c7b65ccee 100644
--- a/src/OpenFOAM/fields/Fields/Field/Field.H
+++ b/src/OpenFOAM/fields/Fields/Field/Field.H
@@ -297,12 +297,6 @@ public:
         //- Replace a component field of the field
         void replace(const direction, const cmptType&);
 
-        //- Transfer the contents of the argument Field into this Field
-        void transfer(Field<Type>&);
-
-        //- Transfer the contents of the argument List into this Field
-        void transfer(List<Type>&);
-
         //- Return the field transpose (only defined for second rank tensors)
         tmp<Field<Type> > T() const;
 
diff --git a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshPointFaces.C b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshPointFaces.C
index dc8d865f59cf8a48175efd0e7e4b3f9946a19302..b7a90375b7ce1cfba075922e47529dce67fd1ea7 100644
--- a/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshPointFaces.C
+++ b/src/OpenFOAM/meshes/primitiveMesh/primitiveMeshPointFaces.C
@@ -38,6 +38,11 @@ const labelListList& primitiveMesh::pointFaces() const
 {
     if (!pfPtr_)
     {
+        if (debug)
+        {
+            Pout<< "primitiveMesh::pointFaces() : "
+                << "calculating pointFaces" << endl;
+        }
         // Invert faces()
         pfPtr_ = new labelListList(nPoints());
         invertManyToMany(nPoints(), faces(), *pfPtr_);
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
index fdf89f4123b23c22d5e092eedb01e906ace6c6aa..f24117e15f7e81cc2062e1f29c7124c4c5d37e92 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.C
@@ -218,7 +218,8 @@ Foam::label Foam::autoSnapDriver::getCollocatedPoints
 // Calculate displacement as average of patch points.
 Foam::pointField Foam::autoSnapDriver::smoothPatchDisplacement
 (
-    const motionSmoother& meshMover
+    const motionSmoother& meshMover,
+    const List<labelPair>& baffles
 ) const
 {
     const indirectPrimitivePatch& pp = meshMover.patch();
@@ -253,6 +254,34 @@ Foam::pointField Foam::autoSnapDriver::smoothPatchDisplacement
     const pointField& points = pp.points();
     const polyMesh& mesh = meshMover.mesh();
 
+    // Get labels of faces to count (master of coupled faces and baffle pairs)
+    PackedList<1> isMasterFace(syncTools::getMasterFaces(mesh));
+
+    {
+        forAll(baffles, i)
+        {
+            label f0 = baffles[i].first();
+            label f1 = baffles[i].second();
+
+            if (isMasterFace.get(f0) == 1)
+            {
+                // Make f1 a slave
+                isMasterFace.set(f1, 0);
+            }
+            else if (isMasterFace.get(f1) == 1)
+            {
+                isMasterFace.set(f0, 0);
+            }
+            else
+            {
+                FatalErrorIn("autoSnapDriver::smoothPatchDisplacement(..)")
+                    << "Both sides of baffle consisting of faces " << f0
+                    << " and " << f1 << " are already slave faces."
+                    << abort(FatalError);
+            }
+        }
+    }
+
 
     // Get average position of boundary face centres
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -266,9 +295,14 @@ Foam::pointField Foam::autoSnapDriver::smoothPatchDisplacement
 
         forAll(pFaces, pfI)
         {
-            avgBoundary[patchPointI] += pp[pFaces[pfI]].centre(points);
+            label faceI = pFaces[pfI];
+
+            if (isMasterFace.get(pp.addressing()[faceI]) == 1)
+            {
+                avgBoundary[patchPointI] += pp[faceI].centre(points);
+                nBoundary[patchPointI]++;
+            }
         }
-        nBoundary[patchPointI] = pFaces.size();
     }
 
     syncTools::syncPointList
@@ -886,7 +920,7 @@ void Foam::autoSnapDriver::preSmoothPatch
             checkFaces[faceI] = faceI;
         }
 
-        pointField patchDisp(smoothPatchDisplacement(meshMover));
+        pointField patchDisp(smoothPatchDisplacement(meshMover, baffles));
 
         // The current mesh is the starting mesh to smooth from.
         meshMover.setDisplacement(patchDisp);
@@ -1008,9 +1042,11 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurface
     // Displacement per patch point
     vectorField patchDisp(localPoints.size(), vector::zero);
 
-
     if (returnReduce(localPoints.size(), sumOp<label>()) > 0)
     {
+        // Current surface snapped to
+        labelList snapSurf(localPoints.size(), -1);
+
         // Divide surfaces into zoned and unzoned
         labelList zonedSurfaces;
         labelList unzonedSurfaces;
@@ -1039,16 +1075,9 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurface
                     patchDisp[pointI] =
                         hitInfo[pointI].hitPoint()
                       - localPoints[pointI];
+
+                    snapSurf[pointI] = hitSurface[pointI];
                 }
-                //else
-                //{
-                //   WarningIn("autoSnapDriver::calcNearestSurface(..)")
-                //        << "For point:" << pointI
-                //        << " coordinate:" << localPoints[pointI]
-                //        << " did not find any surface within:"
-                //        << 4*snapDist[pointI]
-                //        << " meter." << endl;
-                //}
             }
         }
 
@@ -1060,6 +1089,7 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurface
         // Surfaces with zone information
         const wordList& faceZoneNames = surfaces.faceZoneNames();
 
+        // Current best snap distance
         scalarField minSnapDist(snapDist);
 
         forAll(zonedSurfaces, i)
@@ -1105,19 +1135,25 @@ Foam::vectorField Foam::autoSnapDriver::calcNearestSurface
                         minSnapDist[pointI],
                         mag(patchDisp[pointI])
                     );
-                }
-                else
-                {
-                    WarningIn("autoSnapDriver::calcNearestSurface(..)")
-                        << "For point:" << pointI
-                        << " coordinate:" << localPoints[pointI]
-                        << " did not find any surface within:"
-                        << 4*minSnapDist[pointI]
-                        << " meter." << endl;
+
+                    snapSurf[pointI] = zoneSurfI;
                 }
             }
         }
 
+        // Check if all points are being snapped
+        forAll(snapSurf, pointI)
+        {
+            if (snapSurf[pointI] == -1)
+            {
+                WarningIn("autoSnapDriver::calcNearestSurface(..)")
+                    << "For point:" << pointI
+                    << " coordinate:" << localPoints[pointI]
+                    << " did not find any surface within:"
+                    << minSnapDist[pointI]
+                    << " meter." << endl;
+            }
+        }
 
         {
             scalarField magDisp(mag(patchDisp));
diff --git a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
index 1604e358593d6bab3969820c9a5af5ee2b8b36f0..dc19397243da4556b9833a7c263ffbe0c3446f17 100644
--- a/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
+++ b/src/autoMesh/autoHexMesh/autoHexMeshDriver/autoSnapDriver.H
@@ -100,7 +100,11 @@ class autoSnapDriver
 
             //- Calculate displacement per patch point to smooth out patch.
             //  Quite complicated in determining which points to move where.
-            pointField smoothPatchDisplacement(const motionSmoother&) const;
+            pointField smoothPatchDisplacement
+            (
+                const motionSmoother&,
+                const List<labelPair>&
+            ) const;
 
             //- Check that face zones are synced
             void checkCoupledFaceZones() const;
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
index d3eb52b7c42d0ce699d1d8b189fe976456468e3a..da533c4d136da55dcce274038dd8a619ceff242c 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H
@@ -382,10 +382,12 @@ private:
 
             //- Finds zone per cell for cells inside closed named surfaces.
             //  (uses geometric test for insideness)
+            //  Adapts namedSurfaceIndex so all faces on boundary of cellZone
+            //  have corresponding faceZone.
             void findCellZoneGeometric
             (
                 const labelList& closedNamedSurfaces,
-                const labelList& namedSurfaceIndex,
+                labelList& namedSurfaceIndex,
                 const labelList& surfaceToCellZone,
                 labelList& cellToZone
             ) const;
diff --git a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
index 7b2ecfc395226c9d680f63fdf5301ab98afaa148..fdcd15f0e98d548b2d10647e81a3ef7001221a5a 100644
--- a/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
+++ b/src/autoMesh/autoHexMesh/meshRefinement/meshRefinementBaffles.C
@@ -47,6 +47,7 @@ License
 #include "motionSmoother.H"
 #include "polyMeshGeometry.H"
 #include "IOmanip.H"
+#include "cellSet.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -1490,7 +1491,7 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::mergeBaffles
 void Foam::meshRefinement::findCellZoneGeometric
 (
     const labelList& closedNamedSurfaces,   // indices of closed surfaces
-    const labelList& namedSurfaceIndex,     // per face index of named surface
+    labelList& namedSurfaceIndex,           // per face index of named surface
     const labelList& surfaceToCellZone,     // cell zone index per surface
 
     labelList& cellToZone
@@ -1627,6 +1628,76 @@ void Foam::meshRefinement::findCellZoneGeometric
             }
         }
     }
+
+
+    // Adapt the namedSurfaceIndex
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // for if any cells were not completely covered.
+
+    for (label faceI = 0; faceI < mesh_.nInternalFaces(); faceI++)
+    {
+        label ownZone = cellToZone[mesh_.faceOwner()[faceI]];
+        label neiZone = cellToZone[mesh_.faceNeighbour()[faceI]];
+
+        if (namedSurfaceIndex[faceI] == -1 && (ownZone != neiZone))
+        {
+            // Give face the zone of the owner
+            namedSurfaceIndex[faceI] = findIndex
+            (
+                surfaceToCellZone,
+                max(ownZone, neiZone)
+            );
+        }
+    }
+
+    labelList neiCellZone(mesh_.nFaces()-mesh_.nInternalFaces());
+    for
+    (
+        label faceI = mesh_.nInternalFaces();
+        faceI < mesh_.nFaces();
+        faceI++
+    )
+    {
+        label own = mesh_.faceOwner()[faceI];
+        neiCellZone[faceI-mesh_.nInternalFaces()] = cellToZone[own];
+    }
+    syncTools::swapBoundaryFaceList(mesh_, neiCellZone, false);
+
+    const polyBoundaryMesh& patches = mesh_.boundaryMesh();
+
+    forAll(patches, patchI)
+    {
+        const polyPatch& pp = patches[patchI];
+
+        if (pp.coupled())
+        {
+            forAll(pp, i)
+            {
+                label faceI = pp.start()+i;
+                label ownZone = cellToZone[mesh_.faceOwner()[faceI]];
+                label neiZone = neiCellZone[faceI-mesh_.nInternalFaces()];
+
+                if (namedSurfaceIndex[faceI] == -1 && (ownZone != neiZone))
+                {
+                    // Give face the zone of the owner
+                    namedSurfaceIndex[faceI] = findIndex
+                    (
+                        surfaceToCellZone,
+                        max(ownZone, neiZone)
+                    );
+                }
+            }
+        }
+    }
+
+    // Sync
+    syncTools::syncFaceList
+    (
+        mesh_,
+        namedSurfaceIndex,
+        maxEqOp<label>(),
+        false
+    );
 }
 
 
@@ -1656,7 +1727,7 @@ void Foam::meshRefinement::findCellZoneTopo
             blockedFace[faceI] = true;
         }
     }
-    syncTools::syncFaceList(mesh_, blockedFace, orEqOp<bool>(), false);
+    // No need to sync since namedSurfaceIndex already is synced
 
     // Set region per cell based on walking
     regionSplit cellRegion(mesh_, blockedFace);
@@ -2149,8 +2220,8 @@ Foam::autoPtr<Foam::mapPolyMesh>  Foam::meshRefinement::splitMesh
     {
         FatalErrorIn
         (
-            "meshRefinement::findCellZoneTopo"
-            "(const point&, const labelList&, const labelList&, labelList&)"
+            "meshRefinement::splitMesh"
+            "(const label, const labelList&, const point&)"
         )   << "Point " << keepPoint
             << " is not inside the mesh." << nl
             << "Bounding box of the mesh:" << mesh_.globalData().bb()
@@ -2703,6 +2774,79 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
     }
 
 
+    // Put the cells into the correct zone
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    // Closed surfaces with cellZone specified.
+    labelList closedNamedSurfaces(surfaces_.getClosedNamedSurfaces());
+
+    // Zone per cell:
+    // -2 : unset
+    // -1 : not in any zone
+    // >=0: zoneID
+    labelList cellToZone(mesh_.nCells(), -2);
+
+
+    // Set using geometric test
+    // ~~~~~~~~~~~~~~~~~~~~~~~~
+
+    if (closedNamedSurfaces.size() > 0)
+    {
+        findCellZoneGeometric
+        (
+            closedNamedSurfaces,   // indices of closed surfaces
+            namedSurfaceIndex,     // per face index of named surface
+            surfaceToCellZone,     // cell zone index per surface
+            cellToZone
+        );
+    }
+
+    //{
+    //    Pout<< "** finding out blocked faces." << endl;
+    //
+    //    cellSet zonedCellsGeom(mesh_, "zonedCellsGeom", 100);
+    //    forAll(cellToZone, cellI)
+    //    {
+    //        if (cellToZone[cellI] >= 0)
+    //        {
+    //            zonedCellsGeom.insert(cellI);
+    //        }
+    //    }
+    //    Pout<< "Writing zoned cells to " << zonedCellsGeom.objectPath()
+    //        << endl;
+    //    zonedCellsGeom.write();
+    //
+    //
+    //    faceSet zonedFaces(mesh_, "zonedFaces", 100);
+    //    forAll(namedSurfaceIndex, faceI)
+    //    {
+    //        label surfI = namedSurfaceIndex[faceI];
+    //
+    //        if (surfI != -1)
+    //        {
+    //            zonedFaces.insert(faceI);
+    //        }
+    //    }
+    //    Pout<< "Writing zoned faces to " << zonedFaces.objectPath() << endl;
+    //    zonedFaces.write();
+    //}
+
+    // Set using walking
+    // ~~~~~~~~~~~~~~~~~
+
+    //if (returnReduce(nSet, sumOp<label>()) < mesh_.globalData().nTotalCells())
+    {
+        // Topological walk
+        findCellZoneTopo
+        (
+            keepPoint,
+            namedSurfaceIndex,
+            surfaceToCellZone,
+            cellToZone
+        );
+    }
+
+
     // Topochange container
     polyTopoChange meshMod(mesh_);
 
@@ -2770,50 +2914,6 @@ Foam::autoPtr<Foam::mapPolyMesh> Foam::meshRefinement::zonify
     // Put the cells into the correct zone
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-    // Closed surfaces with cellZone specified.
-    labelList closedNamedSurfaces(surfaces_.getClosedNamedSurfaces());
-
-    // Zone per cell:
-    // -2 : unset
-    // -1 : not in any zone
-    // >=0: zoneID
-    labelList cellToZone(mesh_.nCells(), -2);
-
-
-    // Set using geometric test
-    // ~~~~~~~~~~~~~~~~~~~~~~~~
-
-    if (closedNamedSurfaces.size() > 0)
-    {
-        findCellZoneGeometric
-        (
-            closedNamedSurfaces,   // indices of closed surfaces
-            namedSurfaceIndex,     // per face index of named surface
-            surfaceToCellZone,     // cell zone index per surface
-            cellToZone
-        );
-    }
-
-
-    // Set using walking
-    // ~~~~~~~~~~~~~~~~~
-
-    //if (returnReduce(nSet, sumOp<label>()) < mesh_.globalData().nTotalCells())
-    {
-        // Topological walk
-        findCellZoneTopo
-        (
-            keepPoint,
-            namedSurfaceIndex,
-            surfaceToCellZone,
-            cellToZone
-        );
-    }
-
-
-    // Actually move the cells to their zone
-    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
     forAll(cellToZone, cellI)
     {
         label zoneI = cellToZone[cellI];
diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
index 00ce11355a3ceebabe00dffd59f1605453f76ee2..321eeba6a87be806089b4cafd53ea2195286ca56 100644
--- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
+++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.C
@@ -33,15 +33,68 @@ void Foam::setRefCell
     const volScalarField& field,
     const dictionary& dict,
     label& refCelli,
-    scalar& refValue
+    scalar& refValue,
+    bool forceReference
 )
 {
-    if (field.needReference())
+    if (field.needReference() || forceReference)
     {
         word refCellName = field.name() + "RefCell";
+        word refPointName = field.name() + "RefPoint";
+
         word refValueName = field.name() + "RefValue";
 
-        refCelli = readLabel(dict.lookup(refCellName));
+        if (dict.found(refCellName))
+        {
+            if (Pstream::master())
+            {
+                refCelli = readLabel(dict.lookup(refCellName));
+            }
+            else
+            {
+                refCelli = -1;
+            }
+        }
+        else if (dict.found(refPointName))
+        {
+            point refPointi(dict.lookup(refPointName));
+            refCelli = field.mesh().findCell(refPointi);
+            label hasRef = (refCelli >= 0 ? 1 : 0);
+            label sumHasRef = returnReduce<label>(hasRef, sumOp<label>());
+            if (sumHasRef != 1)
+            {
+                FatalErrorIn
+                (
+                    "void Foam::setRefCell"
+                     "("
+                     "    const volScalarField&,"
+                     "    const dictionary&,"
+                     "    label& scalar&,"
+                     "    bool"
+                     ")"
+                )
+                  << "Unable to set reference cell for field " << field.name()
+                  << nl << "    Reference point " << refPointName
+                  << " found on multiple domains" << nl << abort(FatalError);
+            }
+        }
+        else
+        {
+            FatalErrorIn
+            (
+                "void Foam::setRefCell"
+                 "("
+                 "    const volScalarField&,"
+                 "    const dictionary&,"
+                 "    label& scalar&,"
+                 "    bool"
+                 ")"
+            )
+              << "Unable to set reference cell for field" << field.name() << nl
+              << "    Please supply either " << refCellName
+              << " or " << refPointName << nl << abort(FatalError);
+        }
+
         refValue = readScalar(dict.lookup(refValueName));
     }
 }
diff --git a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H
index 724f44ed175186e6c765dc4b3fd7472cace9b41c..db9858ce27aed5b35cd2518281721d71c6c524ad 100644
--- a/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H
+++ b/src/finiteVolume/cfdTools/general/findRefCell/findRefCell.H
@@ -52,7 +52,8 @@ void setRefCell
     const volScalarField& field,
     const dictionary& dict,
     label& refCelli,
-    scalar& refValue
+    scalar& refValue,
+    bool forceReference = false
 );
 
 }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/directMappedFixedValue/directMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/directMappedFixedValue/directMappedFixedValueFvPatchField.C
index 279e72a0c55620bc270bd21ba3d65c022529434c..ab3af1717e006ce47754d5affaa9b7d93de5bc3a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/directMappedFixedValue/directMappedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/directMappedFixedValue/directMappedFixedValueFvPatchField.C
@@ -234,6 +234,16 @@ void directMappedFixedValueFvPatchField<Type>::updateCoeffs()
                  (
                     mpp.samplePatch()
                  );
+            if (patchID < 0)
+            {
+                FatalErrorIn
+                (
+                    "void directMappedFixedValueFvPatchField<Type>::"
+                    "updateCoeffs()"
+                )<< "Unable to find sample patch " << mpp.samplePatch()
+                 << " for patch " << this->patch().name() << nl
+                 << abort(FatalError);
+            }
             typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
             const word& fieldName = this->dimensionedInternalField().name();
             const fieldType& sendField =
diff --git a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
index 9dab83d168a4e57c7041331ca349b95dd1fdcf44..b8698eb17738d2e5e39adfd6ac0eaa3568356a15 100644
--- a/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
+++ b/src/finiteVolume/fvMatrices/fvMatrix/fvMatrix.C
@@ -483,7 +483,7 @@ void Foam::fvMatrix<Type>::setReference
 {
     if (psi_.needReference() || forceReference)
     {
-        if (Pstream::master())
+        if (cell >= 0)
         {
             source()[cell] += diag()[cell]*value;
             diag()[cell] += diag()[cell];
diff --git a/src/meshTools/Make/files b/src/meshTools/Make/files
index 64437bdda84ba379092b0f2295a87ed05be1843b..99587f8d3c07989d6e6af07e0766db4f9df8c4f7 100644
--- a/src/meshTools/Make/files
+++ b/src/meshTools/Make/files
@@ -107,6 +107,7 @@ $(pointSources)/faceToPoint/faceToPoint.C
 $(pointSources)/boxToPoint/boxToPoint.C
 $(pointSources)/surfaceToPoint/surfaceToPoint.C
 $(pointSources)/zoneToPoint/zoneToPoint.C
+$(pointSources)/nearestToPoint/nearestToPoint.C
 
 surfaceSets/surfaceSets.C
 
diff --git a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C b/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C
index 50e851296bda5973890d81f579d27c2334ea8b22..b41a4409b20eedcadd924aa9082220acdc33882a 100644
--- a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C
+++ b/src/meshTools/searchableSurface/searchableSurfaceWithGaps.C
@@ -26,7 +26,6 @@ License
 
 #include "searchableSurfaceWithGaps.H"
 #include "addToRunTimeSelectionTable.H"
-#include "SortableList.H"
 #include "Time.H"
 #include "ListOps.H"
 
@@ -82,7 +81,7 @@ Foam::Pair<Foam::vector> Foam::searchableSurfaceWithGaps::offsetVecs
 
         // Do second offset vector perp to original edge and first offset vector
         offsets[1] = n ^ offsets[0];
-        offsets[1] *= gap_/mag(offsets[1]);
+        offsets[1] *= gap_;
     }
 
     return offsets;    
@@ -207,6 +206,10 @@ void Foam::searchableSurfaceWithGaps::findLine
     List<pointIndexHit>& info
 ) const
 {
+
+    // Test with unperturbed vectors
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
     surface().findLine(start, end, info);
 
     // Count number of misses. Determine map
@@ -215,6 +218,10 @@ void Foam::searchableSurfaceWithGaps::findLine
 
     if (returnReduce(nMiss, sumOp<label>()) > 0)
     {
+        //Pout<< "** retesting with offset0 " << nMiss << " misses out of "
+        //    << start.size() << endl;
+
+        // extract segments according to map
         pointField compactStart(start, compactMap);
         pointField compactEnd(end, compactMap);
 
@@ -228,20 +235,36 @@ void Foam::searchableSurfaceWithGaps::findLine
             offset1
         );
 
+        // Test with offset0 perturbed vectors
+        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
         // test in pairs: only if both perturbations hit something
         // do we accept the hit.
 
+        const vectorField smallVec(SMALL*(compactEnd-compactStart));
+
         List<pointIndexHit> plusInfo;
-        surface().findLine(compactStart+offset0, compactEnd+offset0, plusInfo);
+        surface().findLine
+        (
+            compactStart+offset0-smallVec,
+            compactEnd+offset0+smallVec,
+            plusInfo
+        );
         List<pointIndexHit> minInfo;
-        surface().findLine(compactStart-offset0, compactEnd-offset0, minInfo);
+        surface().findLine
+        (
+            compactStart-offset0-smallVec,
+            compactEnd-offset0+smallVec,
+            minInfo
+        );
 
         // Extract any hits
         forAll(plusInfo, i)
         {
             if (plusInfo[i].hit() && minInfo[i].hit())
             {
-                info[compactMap[i]] = plusInfo[i].hitPoint()-offset0[i];
+                info[compactMap[i]] = plusInfo[i];
+                info[compactMap[i]].rawPoint() -= offset0[i];
             }
         }
 
@@ -250,6 +273,12 @@ void Foam::searchableSurfaceWithGaps::findLine
 
         if (returnReduce(nMiss, sumOp<label>()) > 0)
         {
+            //Pout<< "** retesting with offset1 " << nMiss << " misses out of "
+            //    << start.size() << endl;
+
+            // Test with offset1 perturbed vectors
+            // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
             // Extract (inplace possible because of order)
             forAll(plusMissMap, i)
             {
@@ -266,17 +295,18 @@ void Foam::searchableSurfaceWithGaps::findLine
             offset0.setSize(plusMissMap.size());
             offset1.setSize(plusMissMap.size());
 
+            const vectorField smallVec(SMALL*(compactEnd-compactStart));
 
             surface().findLine
             (
-                compactStart+offset1,
-                compactEnd+offset1,
+                compactStart+offset1-smallVec,
+                compactEnd+offset1+smallVec,
                 plusInfo
             );
             surface().findLine
             (
-                compactStart-offset1,
-                compactEnd-offset1,
+                compactStart-offset1-smallVec,
+                compactEnd-offset1+smallVec,
                 minInfo
             );
 
@@ -285,7 +315,8 @@ void Foam::searchableSurfaceWithGaps::findLine
             {
                 if (plusInfo[i].hit() && minInfo[i].hit())
                 {
-                    info[compactMap[i]] = plusInfo[i].hitPoint()-offset1[i];
+                    info[compactMap[i]] = plusInfo[i];
+                    info[compactMap[i]].rawPoint() -= offset1[i];
                 }
             }
         }
diff --git a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H b/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H
index a5392867f15899e8dda89511944574cfa60f680f..e88cae68290aa257942f17b18ecb75e2f0c2b5b0 100644
--- a/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H
+++ b/src/meshTools/searchableSurface/searchableSurfaceWithGaps.H
@@ -27,7 +27,13 @@ Class
 
 Description
     searchableSurface using multiple slightly shifted underlying surfaces
-    to make sure pierces don't go through gaps. 
+    to make sure pierces don't go through gaps:
+    - shift test vector with two small vectors (of size gap_) perpendicular
+      to the original.
+      Test with + and - this vector. Only if both register a hit is it seen
+      as one.
+    - extend the test vector slightly (with SMALL) to account for numerical
+      inaccuracies.
 
 SourceFiles
     searchableSurfaceWithGaps.C
diff --git a/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.C b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.C
new file mode 100644
index 0000000000000000000000000000000000000000..f4b759c6fe43c2d007757ba34d1cbb729696d518
--- /dev/null
+++ b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.C
@@ -0,0 +1,154 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "nearestToPoint.H"
+#include "polyMesh.H"
+#include "meshSearch.H"
+
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+defineTypeNameAndDebug(nearestToPoint, 0);
+
+addToRunTimeSelectionTable(topoSetSource, nearestToPoint, word);
+
+addToRunTimeSelectionTable(topoSetSource, nearestToPoint, istream);
+
+}
+
+
+Foam::topoSetSource::addToUsageTable Foam::nearestToPoint::usage_
+(
+    nearestToPoint::typeName,
+    "\n    Usage: nearestToPoint (pt0 .. ptn)\n\n"
+    "    Select the nearest point for each of the points pt0 ..ptn\n\n"
+);
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::nearestToPoint::combine(topoSet& set, const bool add) const
+{
+    // Do linear search since usually just a few points.
+
+    forAll(points_, pointI)
+    {
+        const pointField& pts = mesh_.points();
+
+        if (pts.size() > 0)
+        {
+            label minPointI = 0;
+            scalar minDistSqr = magSqr(pts[minPointI] - points_[pointI]);
+
+            for (label i = 1; i < pts.size(); i++)
+            {
+                scalar distSqr = magSqr(pts[i] - points_[pointI]);
+
+                if (distSqr < minDistSqr)
+                {
+                    minDistSqr = distSqr;
+                    minPointI = i;
+                }
+            }
+
+            addOrDelete(set, minPointI, add);
+        }
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+// Construct from components
+Foam::nearestToPoint::nearestToPoint
+(
+    const polyMesh& mesh,
+    const pointField& points
+)
+:
+    topoSetSource(mesh),
+    points_(points)
+{}
+
+
+// Construct from dictionary
+Foam::nearestToPoint::nearestToPoint
+(
+    const polyMesh& mesh,
+    const dictionary& dict
+)
+:
+    topoSetSource(mesh),
+    points_(dict.lookup("points"))
+{}
+
+
+// Construct from Istream
+Foam::nearestToPoint::nearestToPoint
+(
+    const polyMesh& mesh,
+    Istream& is
+)
+:
+    topoSetSource(mesh),
+    points_(checkIs(is))
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::nearestToPoint::~nearestToPoint()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::nearestToPoint::applyToSet
+(
+    const topoSetSource::setAction action,
+    topoSet& set
+) const
+{
+    if ((action == topoSetSource::NEW) || (action == topoSetSource::ADD))
+    {
+        Info<< "    Adding points nearest to " << points_ << endl;
+
+        combine(set, true);
+    }
+    else if (action == topoSetSource::DELETE)
+    {
+        Info<< "    Removing points nearest to " << points_ << endl;
+
+        combine(set, false);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H
new file mode 100644
index 0000000000000000000000000000000000000000..ba63cc14f28d059f88eb35eda2b58dbd0e20eb43
--- /dev/null
+++ b/src/meshTools/sets/pointSources/nearestToPoint/nearestToPoint.H
@@ -0,0 +1,122 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::nearestToPoint
+
+Description
+    A topoSetSource to select points nearest to points.
+
+SourceFiles
+    nearestToPoint.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef nearestToPoint_H
+#define nearestToPoint_H
+
+#include "topoSetSource.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                       Class nearestToPoint Declaration
+\*---------------------------------------------------------------------------*/
+
+class nearestToPoint
+:
+    public topoSetSource
+{
+
+    // Private data
+
+        //- Add usage string
+        static addToUsageTable usage_;
+
+        //- points to select nearest to
+        pointField points_;
+
+
+    // Private Member Functions
+
+        void combine(topoSet& set, const bool add) const;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("nearestToPoint");
+
+    // Constructors
+
+        //- Construct from components
+        nearestToPoint
+        (
+            const polyMesh& mesh,
+            const pointField& points
+        );
+
+        //- Construct from dictionary
+        nearestToPoint
+        (
+            const polyMesh& mesh,
+            const dictionary& dict
+        );
+
+        //- Construct from Istream
+        nearestToPoint
+        (
+            const polyMesh& mesh,
+            Istream&
+        );
+
+
+    // Destructor
+
+        virtual ~nearestToPoint();
+
+
+    // Member Functions
+
+        virtual void applyToSet
+        (
+            const topoSetSource::setAction action,
+            topoSet&
+        ) const;
+
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H b/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H
index 754996f27c6c6cc8797596629309270fd2e0fbc3..7881a307987c9f98d2e8df05ea5ae76a61bc3107 100644
--- a/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H
+++ b/src/thermophysicalModels/specie/thermo/janaf/janafThermoI.H
@@ -164,7 +164,7 @@ inline Foam::scalar Foam::janafThermo<equationOfState>::hc() const
         (
             (((a[4]/5.0*Tstd + a[3]/4.0)*Tstd + a[2]/3.0)*Tstd + a[1]/2.0)*Tstd
           + a[0]
-        )*Tstd
+        )*Tstd + a[5]
     );
 }
 
diff --git a/src/turbulenceModels/LES/incompressible/Make/files b/src/turbulenceModels/LES/incompressible/Make/files
index b6c245c866bb81e3c6767c2f6fbde1823bd0c430..feda56ca15f600f00a5efd2f24da1f3ab9c2cdc0 100644
--- a/src/turbulenceModels/LES/incompressible/Make/files
+++ b/src/turbulenceModels/LES/incompressible/Make/files
@@ -27,6 +27,7 @@ dynMixedSmagorinsky/dynMixedSmagorinsky.C
 
 /*Smagorinsky2/Smagorinsky2.C*/
 
+kOmegaSSTSAS/kOmegaSSTSAS.C
 
 /* Wall functions */
 wallFunctions=derivedFvPatchFields/wallFunctions
diff --git a/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.C b/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.C
new file mode 100644
index 0000000000000000000000000000000000000000..a06f4298c64bdb8f8f202e781682ead49d8b8773
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.C
@@ -0,0 +1,447 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "kOmegaSSTSAS.H"
+#include "addToRunTimeSelectionTable.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(kOmegaSSTSAS, 0);
+addToRunTimeSelectionTable(LESModel, kOmegaSSTSAS, dictionary);
+
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+tmp<volScalarField> kOmegaSSTSAS::F1(const volScalarField& CDkOmega) const
+{
+    volScalarField CDkOmegaPlus = max
+    (
+        CDkOmega,
+        dimensionedScalar("1.0e-10", dimless/sqr(dimTime), 1.0e-10)
+    );
+
+    volScalarField arg1 = min
+    (
+        min
+        (
+            max
+            (
+                (scalar(1)/betaStar_)*sqrt(k_)/(omega_*y_),
+                scalar(500)*nu()/(sqr(y_)*omega_)
+            ),
+            (4*alphaOmega2_)*k_/(CDkOmegaPlus*sqr(y_))
+        ),
+        scalar(10)
+    );
+
+    return tanh(pow4(arg1));
+}
+
+
+tmp<volScalarField> kOmegaSSTSAS::F2() const
+{
+    volScalarField arg2 = min
+    (
+        max
+        (
+            (scalar(2)/betaStar_)*sqrt(k_)/(omega_*y_),
+            scalar(500)*nu()/(sqr(y_)*omega_)
+        ),
+        scalar(100)
+    );
+
+    return tanh(sqr(arg2));
+}
+
+
+tmp<volScalarField> kOmegaSSTSAS::Lvk2
+(
+    const volScalarField& S2
+) const
+{
+    return kappa_*sqrt(S2)
+   /(
+       mag(fvc::laplacian(U()))
+     + dimensionedScalar
+       (
+           "ROOTVSMALL",
+           dimensionSet(0, -1 , -1, 0, 0, 0, 0),
+           ROOTVSMALL
+       )
+   );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+kOmegaSSTSAS::kOmegaSSTSAS
+(
+    const volVectorField& U,
+    const surfaceScalarField& phi,
+    transportModel& transport,
+    const word& modelName
+)
+:
+    LESModel(modelName, U, phi, transport),
+
+    alphaK1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "alphaK1",
+            coeffDict(),
+            0.85034
+        )
+    ),
+    alphaK2_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "alphaK2",
+            coeffDict(),
+            1.0
+        )
+    ),
+    alphaOmega1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "alphaOmega1",
+            coeffDict(),
+            0.5
+        )
+    ),
+    alphaOmega2_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "alphaOmega2",
+            coeffDict(),
+            0.85616
+        )
+    ),
+    gamma1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "gamma1",
+            coeffDict(),
+            0.5532
+        )
+    ),
+    gamma2_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "gamma2",
+            coeffDict(),
+            0.4403
+        )
+    ),
+    beta1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "beta1",
+            coeffDict(),
+            0.075
+        )
+    ),
+    beta2_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "beta2",
+            coeffDict(),
+            0.0828
+        )
+    ),
+    betaStar_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "betaStar",
+            coeffDict(),
+            0.09
+        )
+    ),
+    a1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "a1",
+            coeffDict(),
+            0.31
+        )
+    ),
+    c1_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "c1",
+            coeffDict(),
+            10.0
+        )
+    ),
+    alphaPhi_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "alphaPhi",
+            coeffDict(),
+            0.666667
+        )
+    ),
+    zetaTilda2_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "zetaTilda2",
+            coeffDict(),
+            1.755
+        )
+    ),
+    FSAS_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "FSAS",
+            coeffDict(),
+            1.25
+        )
+    ),
+
+    omega0_("omega0", dimless/dimTime, SMALL),
+    omegaSmall_("omegaSmall", dimless/dimTime, SMALL),
+    y_(mesh_),
+    Cmu_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "Cmu",
+            coeffDict(),
+            0.09
+         )
+    ),
+    kappa_
+    (
+        dimensioned<scalar>::lookupOrAddToDict
+        (
+            "kappa",
+            *this,
+            0.4187
+        )
+    ),
+
+    k_
+    (
+        IOobject
+        (
+            "k",
+            runTime_.timeName(),
+            mesh_,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_
+    ),
+
+    omega_
+    (
+        IOobject
+        (
+            "omega",
+            runTime_.timeName(),
+            mesh_,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_
+    ),
+
+    nuSgs_
+    (
+        IOobject
+        (
+            "nuSgs",
+            runTime_.timeName(),
+            mesh_,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        mesh_
+    )
+{
+    printCoeffs();
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void kOmegaSSTSAS::correct(const tmp<volTensorField>& gradU)
+{
+    LESModel::correct(gradU);
+
+    if (mesh_.changing())
+    {
+        y_.correct();
+    }
+
+    volScalarField S2 = magSqr(symm(gradU()));
+    gradU.clear();
+
+    volVectorField gradK = fvc::grad(k_);
+    volVectorField gradOmega = fvc::grad(omega_);
+    volScalarField L = sqrt(k_)/(pow(Cmu_, 0.25)*(omega_ + omegaSmall_));
+    volScalarField CDkOmega = (2.0*alphaOmega2_)*(gradK & gradOmega)/(omega_ + omegaSmall_);
+    volScalarField F1 = this->F1(CDkOmega);
+    volScalarField G = nuSgs_*2.0*S2;
+
+    // Turbulent kinetic energy equation
+    solve
+    (
+        fvm::ddt(k_)
+      + fvm::div(phi(), k_)
+      - fvm::Sp(fvc::div(phi()), k_)
+      - fvm::laplacian(DkEff(F1), k_)
+    ==
+        min(G, c1_*betaStar_*k_*omega_)
+      - fvm::Sp(betaStar_*omega_, k_)
+    );
+
+
+    bound(k_, k0());
+
+    volScalarField grad_omega_k = max
+    (
+        magSqr(gradOmega)/
+        sqr(omega_ + omegaSmall_),
+        magSqr(gradK)/
+        sqr(k_ + k0())
+    );
+
+    // Turbulent frequency equation
+    solve
+    (
+        fvm::ddt(omega_)
+      + fvm::div(phi(), omega_)
+      - fvm::Sp(fvc::div(phi()), omega_)
+      - fvm::laplacian(DomegaEff(F1), omega_)
+     ==
+        gamma(F1)*2.0*S2
+      - fvm::Sp(beta(F1)*omega_, omega_)
+      - fvm::SuSp       // cross diffusion term
+        (
+            (F1 - scalar(1))*CDkOmega/omega_,
+            omega_
+        )
+      + FSAS_
+       *max
+        (
+            dimensionedScalar("zero",dimensionSet(0, 0 , -2, 0, 0),0. ),
+            zetaTilda2_*kappa_*S2*(L/Lvk2(S2))- 2.0/alphaPhi_*k_*grad_omega_k
+        )
+
+    );
+    bound(omega_, omega0_);
+
+    // Re-calculate viscosity
+    nuSgs_ == a1_*k_/max(a1_*omega_, F2()*sqrt(S2));
+    nuSgs_.correctBoundaryConditions();
+}
+
+
+tmp<volScalarField> kOmegaSSTSAS::epsilon() const
+{
+    return 2.0*nuEff()*magSqr(symm(fvc::grad(U())));
+}
+
+
+tmp<volSymmTensorField> kOmegaSSTSAS::B() const
+{
+    return ((2.0/3.0)*I)*k() - nuSgs()*twoSymm(fvc::grad(U()));
+}
+
+
+tmp<volSymmTensorField> kOmegaSSTSAS::devBeff() const
+{
+    return -nuEff()*dev(twoSymm(fvc::grad(U())));
+}
+
+
+tmp<fvVectorMatrix> kOmegaSSTSAS::divDevBeff(volVectorField& U) const
+{
+    return
+    (
+      - fvm::laplacian(nuEff(), U) - fvc::div(nuEff()*dev(fvc::grad(U)().T()))
+    );
+}
+
+
+bool kOmegaSSTSAS::read()
+{
+    if (LESModel::read())
+    {
+        alphaK1_.readIfPresent(coeffDict());
+        alphaK2_.readIfPresent(coeffDict());
+        alphaOmega1_.readIfPresent(coeffDict());
+        alphaOmega2_.readIfPresent(coeffDict());
+        gamma1_.readIfPresent(coeffDict());
+        gamma2_.readIfPresent(coeffDict());
+        beta1_.readIfPresent(coeffDict());
+        beta2_.readIfPresent(coeffDict());
+        betaStar_.readIfPresent(coeffDict());
+        a1_.readIfPresent(coeffDict());
+        c1_.readIfPresent(coeffDict());
+        alphaPhi_.readIfPresent(coeffDict());
+        zetaTilda2_.readIfPresent(coeffDict());
+        FSAS_.readIfPresent(coeffDict());
+
+        return true;
+    }
+    else
+    {
+        return false;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.H b/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.H
new file mode 100644
index 0000000000000000000000000000000000000000..8048be0adf729fce3a06c0166537ed279d6dee8e
--- /dev/null
+++ b/src/turbulenceModels/LES/incompressible/kOmegaSSTSAS/kOmegaSSTSAS.H
@@ -0,0 +1,258 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2007 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 of the License, or (at your
+    option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM; if not, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Class
+    Foam::LESmodels::kOmegaSSTSAS
+
+Description
+    kOmegaSSTSAS LES turbulence model for incompressible flows
+
+    Note: does not have an explicit dependency on spatial discretisation
+          i.e. LESdelta not used.
+
+SourceFiles
+    kOmegaSSTSAS.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef kOmegaSSTSAS_H
+#define kOmegaSSTSAS_H
+
+#include "LESModel.H"
+#include "volFields.H"
+#include "wallDist.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace incompressible
+{
+namespace LESModels
+{
+
+/*---------------------------------------------------------------------------*\
+                        Class kOmegaSSTSAS Declaration
+\*---------------------------------------------------------------------------*/
+
+class kOmegaSSTSAS
+:
+    public LESModel
+{
+    // Private member functions
+
+        // Disallow default bitwise copy construct and assignment
+        kOmegaSSTSAS(const kOmegaSSTSAS&);
+        kOmegaSSTSAS& operator=(const kOmegaSSTSAS&);
+
+
+protected:
+
+    // Protected data
+
+        // Model constants
+
+            dimensionedScalar alphaK1_;
+            dimensionedScalar alphaK2_;
+
+            dimensionedScalar alphaOmega1_;
+            dimensionedScalar alphaOmega2_;
+
+            dimensionedScalar gamma1_;
+            dimensionedScalar gamma2_;
+
+            dimensionedScalar beta1_;
+            dimensionedScalar beta2_;
+
+            dimensionedScalar betaStar_;
+
+            dimensionedScalar a1_;
+            dimensionedScalar c1_;
+
+            dimensionedScalar alphaPhi_;
+            dimensionedScalar zetaTilda2_;
+            dimensionedScalar FSAS_;
+
+            dimensionedScalar omega0_;
+            dimensionedScalar omegaSmall_;
+
+            wallDist y_;
+            dimensionedScalar Cmu_;
+            dimensionedScalar kappa_;
+
+
+        // Fields
+
+            volScalarField k_;
+            volScalarField omega_;
+            volScalarField nuSgs_;
+
+
+    // Protected member functions
+
+        tmp<volScalarField> Lvk2
+        (
+            const volScalarField& S2
+        ) const;
+
+        tmp<volScalarField> F1(const volScalarField& CDkOmega) const;
+        tmp<volScalarField> F2() const;
+
+        tmp<volScalarField> blend
+        (
+            const volScalarField& F1,
+            const dimensionedScalar& psi1,
+            const dimensionedScalar& psi2
+        ) const
+        {
+            return F1*(psi1 - psi2) + psi2;
+        }
+
+        tmp<volScalarField> alphaK
+        (
+            const volScalarField& F1
+        ) const
+        {
+            return blend(F1, alphaK1_, alphaK2_);
+        }
+
+        tmp<volScalarField> alphaOmega
+        (
+             const volScalarField& F1
+        ) const
+        {
+            return blend(F1, alphaOmega1_, alphaOmega2_);
+        }
+
+        tmp<volScalarField> beta
+        (
+            const volScalarField& F1
+        ) const
+        {
+            return blend(F1, beta1_, beta2_);
+        }
+
+        tmp<volScalarField> gamma
+        (
+            const volScalarField& F1
+        ) const
+        {
+            return blend(F1, gamma1_, gamma2_);
+        }
+
+
+public:
+
+    //- Runtime type information
+    TypeName("kOmegaSSTSAS");
+
+
+    // Constructors
+
+        //- Constructor from components
+        kOmegaSSTSAS
+        (
+            const volVectorField& U,
+            const surfaceScalarField& phi,
+            transportModel& transport,
+            const word& modelName = typeName
+        );
+
+
+    //- Destructor
+    virtual ~kOmegaSSTSAS()
+    {}
+
+
+    // Member Functions
+
+        //- Return SGS kinetic energy
+        tmp<volScalarField> k() const
+        {
+            return k_;
+        }
+
+        //- Return omega
+        tmp<volScalarField> omega() const
+        {
+            return omega_;
+        }
+
+        //- Return the effective diffusivity for k
+        tmp<volScalarField> DkEff(const volScalarField& F1) const
+        {
+            return tmp<volScalarField>
+            (
+                 new volScalarField("DkEff", alphaK(F1)*nuSgs_ + nu())
+            );
+        }
+
+        //- Return the effective diffusivity for omega
+        tmp<volScalarField> DomegaEff(const volScalarField& F1) const
+        {
+            return tmp<volScalarField>
+            (
+                new volScalarField("DomegaEff", alphaOmega(F1)*nuSgs_ + nu())
+            );
+        }
+
+        //- Return sub-grid disipation rate
+        tmp<volScalarField> epsilon() const;
+
+        //- Return SGS viscosity
+        tmp<volScalarField> nuSgs() const
+        {
+            return nuSgs_;
+        }
+
+        //- Return the sub-grid stress tensor.
+        tmp<volSymmTensorField> B() const;
+
+        //- Return the effective sub-grid turbulence stress tensor
+        //  including the laminar stress
+        tmp<volSymmTensorField> devBeff() const;
+
+        //- Return the deviatoric part of the divergence of Beff
+        //  i.e. the additional term in the filtered NSE.
+        tmp<fvVectorMatrix> divDevBeff(volVectorField& U) const;
+
+        //- Solve the turbulence equations (k-w) and correct the turbulence viscosity
+        virtual void correct(const tmp<volTensorField>& gradU);
+
+        //- Read turbulenceProperties dictionary
+        virtual bool read();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace LESModels
+} // End namespace incompressible
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //