138 check-ins using file mttroot/mtt/lib/cr/hh/squarelaw.hh version 57afb07876

2004-08-29
17:27:43
Define effort, flow and state as enum elements. thus allowing
them to be included in CRs without being declared or quoted.
check-in: 2273134f86 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:27:43
Define effort, flow and state as enum elements. thus allowing
them to be included in CRs without being declared or quoted.
check-in: d392f9d9c1 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:25:46
Accept component types in upper or lower case. check-in: 1df90acfe7 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:25:46
Accept component types in upper or lower case. check-in: ceef333d87 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:09:49
Added option -no-reduce

Code sorting can now be used with Reduce (via sese.r) so that existing CRs
work with sorted code (using -make-sort or -sort), or without by using
-no-reduce; this option implies -make-sort. check-in: da0049619e user: geraint@users.sourceforge.net tags: origin/master, trunk

16:09:49
Added option -no-reduce

Code sorting can now be used with Reduce (via sese.r) so that existing CRs
work with sorted code (using -make-sort or -sort), or without by using
-no-reduce; this option implies -make-sort. check-in: 9c3c6b8bfc user: geraint@users.sourceforge.net tags: origin/master, trunk

16:04:44
Fixed ae for non-sorted code. check-in: 0fae1be0b9 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:04:44
Fixed ae for non-sorted code. check-in: d420d498e1 user: geraint@users.sourceforge.net tags: origin/master, trunk
14:39:23
Added rule to create dae from sorted equations (sese) if sorting is requested. check-in: 1b03b6423e user: geraint@users.sourceforge.net tags: origin/master, trunk
14:39:23
Added rule to create dae from sorted equations (sese) if sorting is requested. check-in: f98d517043 user: geraint@users.sourceforge.net tags: origin/master, trunk
14:38:21
Added -sort option to use sorted equation (sese.r) instead of ese.r check-in: 06fb453a1a user: geraint@users.sourceforge.net tags: origin/master, trunk
14:38:21
Added -sort option to use sorted equation (sese.r) instead of ese.r check-in: c3f62ae937 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:17:30
Added rules to use sae (sorted algebraic equations) instead
of ae if sorted equations are being used.

Converted temporary variable names to lowercase in sorted
sympar.h to match code output from mtt_r2m. check-in: a9bb0711f0 user: geraint@users.sourceforge.net tags: origin/master, trunk

13:17:30
Added rules to use sae (sorted algebraic equations) instead
of ae if sorted equations are being used.

Converted temporary variable names to lowercase in sorted
sympar.h to match code output from mtt_r2m. check-in: 390cf34719 user: geraint@users.sourceforge.net tags: origin/master, trunk

13:15:28
Uses sys_sae instead of sys_ae if sorted equations are being used. check-in: 2094598ac5 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:15:28
Uses sys_sae instead of sys_ae if sorted equations are being used. check-in: eaf162760f user: geraint@users.sourceforge.net tags: origin/master, trunk
13:14:29
Added rule to make header for sae (sorted algebraic equations). check-in: 65bc3f5c5c user: geraint@users.sourceforge.net tags: origin/master, trunk
13:14:29
Added rule to make header for sae (sorted algebraic equations). check-in: 793222a656 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:13:24
Vectorises sorted algebraic equations. check-in: 41edb4bf41 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:13:24
Vectorises sorted algebraic equations. check-in: 4b1973b0f1 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:12:19
Added rule to create MTTyz vector (unknown inputs). check-in: 1a74bd5881 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:12:19
Added rule to create MTTyz vector (unknown inputs). check-in: 2c374ef156 user: geraint@users.sourceforge.net tags: origin/master, trunk
13:11:21
Writes MTTyz vector in the same format as MTTx and MTTy: MTTyz($d,1) check-in: 8fce5e129b user: geraint@users.sourceforge.net tags: origin/master, trunk
13:11:21
Writes MTTyz vector in the same format as MTTx and MTTy: MTTyz($d,1) check-in: c0575fea61 user: geraint@users.sourceforge.net tags: origin/master, trunk
03:18:11
Do not write temporary variables if NUM_OF_TMP_VAR = 0. check-in: 34edbc8745 user: geraint@users.sourceforge.net tags: origin/master, trunk
03:18:11
Do not write temporary variables if NUM_OF_TMP_VAR = 0. check-in: b3f70e2ca1 user: geraint@users.sourceforge.net tags: origin/master, trunk
03:17:02
Vectorise sesx and sesy. check-in: f640e4e94d user: geraint@users.sourceforge.net tags: origin/master, trunk
03:17:02
Vectorise sesx and sesy. check-in: f8f26c000a user: geraint@users.sourceforge.net tags: origin/master, trunk
03:00:59
Unused file (cc/sympar_txt2h.sh does this transformation). check-in: 43766fae90 user: geraint@users.sourceforge.net tags: origin/master, trunk
03:00:59
Unused file (cc/sympar_txt2h.sh does this transformation). check-in: d4d0680f98 user: geraint@users.sourceforge.net tags: origin/master, trunk
02:59:30
Added -make-sort option and rules to generate simulation using sesx and sesy. check-in: 8d085efec2 user: geraint@users.sourceforge.net tags: origin/master, trunk
02:59:30
Added -make-sort option and rules to generate simulation using sesx and sesy. check-in: dfef321b56 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:48:46
Added rules to create headers for sorted systems: sesx and sesy. check-in: fc45617aa4 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:48:46
Added rules to create headers for sorted systems: sesx and sesy. check-in: 849b343296 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:46:56
Added rules to create ode2odes for sorted system: sesx and sesy. check-in: 1ab148e7b8 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:46:56
Added rules to create ode2odes for sorted system: sesx and sesy. check-in: 3f26038590 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:45:07
Replaced all-at-once pattern match with an inner loop over each variable.
The /regexp/ method drops dependencies if they have been seen previously.
check-in: e6ebbb09b9 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:45:07
Replaced all-at-once pattern match with an inner loop over each variable.
The /regexp/ method drops dependencies if they have been seen previously.
check-in: 54761aa617 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:19:49
Defaults to noAlgebraicSolver. check-in: 908f7b9c4d user: geraint@users.sourceforge.net tags: origin/master, trunk
00:19:49
Defaults to noAlgebraicSolver. check-in: 01f85326bc user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-28
23:50:59
Dummy class for use when -ae is not specified as an option. check-in: aa6be937ea user: geraint@users.sourceforge.net tags: origin/master, trunk
23:50:59
Dummy class for use when -ae is not specified as an option. check-in: 35c0a85b23 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:48:06
Removed dependency of ae.r on cse.r if -ae is not specified as an option.
This prevents an implicit -A and thus removes a dependency on cse
(and hence Reduce) for sorted systems.
check-in: f6a3278c73 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:48:06
Removed dependency of ae.r on cse.r if -ae is not specified as an option.
This prevents an implicit -A and thus removes a dependency on cse
(and hence Reduce) for sorted systems.
check-in: f6c33e69ac user: geraint@users.sourceforge.net tags: origin/master, trunk
22:14:12
Removed -ibg option: now the default method. check-in: fc8b0abc6a user: geraint@users.sourceforge.net tags: origin/master, trunk
22:14:12
Removed -ibg option: now the default method. check-in: d646769c79 user: geraint@users.sourceforge.net tags: origin/master, trunk
22:08:41
Fixed zeromatrices statements: spaces instead of commas check-in: 05a9bb179f user: geraint@users.sourceforge.net tags: origin/master, trunk
22:08:41
Fixed zeromatrices statements: spaces instead of commas check-in: 3041d64c46 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:13:02
Sorts equations using make. check-in: a1a7c90e87 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:13:02
Sorts equations using make. check-in: 6481a99b98 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-27
20:12:34
Added note about "none" as an option for units. check-in: df55671a63 user: geraint@users.sourceforge.net tags: origin/master, trunk
20:12:34
Added note about "none" as an option for units. check-in: 4dcf9e1939 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:37:25
Fixed [ 607882 ] Units "none" no longer accepted.
Added a test for "none" to prevent units on that port from being checked.
check-in: 7bf0a68800 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:37:25
Fixed [ 607882 ] Units "none" no longer accepted.
Added a test for "none" to prevent units on that port from being checked.
check-in: 43448406c2 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-26
16:24:40
Function is no longer used (replaced by bg2eps). check-in: e757642f83 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:24:40
Function is no longer used (replaced by bg2eps). check-in: ff646ac610 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:20:17
Creates postscript files of either dia or fig bond graphs. check-in: c25f0b6d55 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:20:17
Creates postscript files of either dia or fig bond graphs. check-in: c2de89e174 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:19:30
Converts dia and fig bond graphs to postscript format. check-in: 75c1ec2585 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:19:30
Converts dia and fig bond graphs to postscript format. check-in: dceda22412 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:17:25
Piped errors to /dev/null to prevent complaints from ls about non-existent files. check-in: 71ad7f6cb3 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:17:25
Piped errors to /dev/null to prevent complaints from ls about non-existent files. check-in: 425b17b5aa user: geraint@users.sourceforge.net tags: origin/master, trunk
16:15:40
Counts abg.m instead of fig files so that dia models are also included. check-in: 5438f2e9df user: geraint@users.sourceforge.net tags: origin/master, trunk
16:15:40
Counts abg.m instead of fig files so that dia models are also included. check-in: 3d663b8d3d user: geraint@users.sourceforge.net tags: origin/master, trunk
16:11:48
Fixed ignore() and pipe so that subsystems are included in reports again. check-in: b33459459c user: geraint@users.sourceforge.net tags: origin/master, trunk
16:11:48
Fixed ignore() and pipe so that subsystems are included in reports again. check-in: ab17204614 user: geraint@users.sourceforge.net tags: origin/master, trunk
12:50:12
Replaced some implicit rules with explicit tests and patterns.
Better than having make search through every possible implicit rule.
check-in: 8cbb8839c3 user: geraint@users.sourceforge.net tags: origin/master, trunk
12:50:12
Replaced some implicit rules with explicit tests and patterns.
Better than having make search through every possible implicit rule.
check-in: f550dbfb56 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:42:41
Moved bond graph above artwork. check-in: 388c0b0b89 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:42:41
Moved bond graph above artwork. check-in: a6dea5ba88 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:07:06
Added rule to create cbg.dia. check-in: 8ac7d4a29a user: geraint@users.sourceforge.net tags: origin/master, trunk
00:07:06
Added rule to create cbg.dia. check-in: ab09c2c2f6 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:06:28
Script to create cbg.dia files from abg.dia, ibg.m, connections.dat and cbg.m. check-in: 53b65893e8 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:06:28
Script to create cbg.dia files from abg.dia, ibg.m, connections.dat and cbg.m. check-in: fbfb49ce87 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:05:09
Creates _connections.dat. Records component names at the end of each (possibly vector-expanded) bond. check-in: 19a072f1ac user: geraint@users.sourceforge.net tags: origin/master, trunk
00:05:09
Creates _connections.dat. Records component names at the end of each (possibly vector-expanded) bond. check-in: ad0591cdc4 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:03:46
Octave script to generate a connections structure which describes the component names at the head and tail of each bond of a (possibly vector-expanded) system. check-in: 65118e221f user: geraint@users.sourceforge.net tags: origin/master, trunk
00:03:46
Octave script to generate a connections structure which describes the component names at the head and tail of each bond of a (possibly vector-expanded) system. check-in: 244dd050e3 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-25
20:16:41
Added --dia_output_file to usage. check-in: cabb98da51 user: geraint@users.sourceforge.net tags: origin/master, trunk
20:16:41
Added --dia_output_file to usage. check-in: f75ef2b760 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-19
19:33:43
Sorts component list into alphabetical order to improve default lbl.txt generation. check-in: 5ada2f34b7 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:33:43
Sorts component list into alphabetical order to improve default lbl.txt generation. check-in: f3ad0d9295 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:17:41
Removed functions associated with writing _abg.m directly.
dia2abg.pl now produces _ibg.m instead.
check-in: 3ee8dd0462 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:17:41
Removed functions associated with writing _abg.m directly.
dia2abg.pl now produces _ibg.m instead.
check-in: d5745021a6 user: geraint@users.sourceforge.net tags: origin/master, trunk
19:14:11
File removed: abg2ibg_dia2m is now used instead. check-in: 5ad4a3ecdd user: geraint@users.sourceforge.net tags: origin/master, trunk
19:14:11
File removed: abg2ibg_dia2m is now used instead. check-in: 9c56eaad07 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-18
23:21:40
Removed labels on one vector bond to demonstrate port aliasing. check-in: 1a8abdb3d9 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:21:40
Removed labels on one vector bond to demonstrate port aliasing. check-in: fd23f0db0c user: geraint@users.sourceforge.net tags: origin/master, trunk
23:19:04
Replaced deprecated is_struct and struct_contains with isstruct and isfield. check-in: e919e8d1a2 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:19:04
Replaced deprecated is_struct and struct_contains with isstruct and isfield. check-in: d1f78065d7 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:05:56
Fixed port aliasing. check-in: 59259429ab user: geraint@users.sourceforge.net tags: origin/master, trunk
23:05:56
Fixed port aliasing. check-in: bfb061b2a6 user: geraint@users.sourceforge.net tags: origin/master, trunk
16:58:21
Updated package description: describes library rather than MTT itself. check-in: 6c69f0f28f user: geraint@users.sourceforge.net tags: origin/master, trunk
16:58:21
Updated package description: describes library rather than MTT itself. check-in: 208ba60f8b user: geraint@users.sourceforge.net tags: origin/master, trunk
16:57:34
Updated package description: Reduce is highly recommended instead of required. check-in: 5463fa845b user: geraint@users.sourceforge.net tags: origin/master, trunk
16:57:34
Updated package description: Reduce is highly recommended instead of required. check-in: 627ffd0e15 user: geraint@users.sourceforge.net tags: origin/master, trunk
15:45:15
Do not include CVS administrative directories in package.
Do not download unnecessary directories (gino, ntt, patches).
check-in: 6ef604ae64 user: geraint@users.sourceforge.net tags: origin/master, trunk
15:45:15
Do not include CVS administrative directories in package.
Do not download unnecessary directories (gino, ntt, patches).
check-in: ac7bef42ca user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-17
15:51:13
Uses wildcard matching to get all example directories. check-in: 241be7cf79 user: geraint@users.sourceforge.net tags: origin/master, trunk
15:51:13
Uses wildcard matching to get all example directories. check-in: 2a659c99e8 user: geraint@users.sourceforge.net tags: origin/master, trunk
12:23:59
root password not required: -rfakeroot takes care of dpkg-buildpackage. check-in: 42e608dc4f user: geraint@users.sourceforge.net tags: origin/master, trunk
12:23:59
root password not required: -rfakeroot takes care of dpkg-buildpackage. check-in: 60b0717333 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-13
09:49:13
Only use one level of MTT_work to prevent MTT from repeatedly copying or creating the same files. check-in: 35cd4a902b user: geraint@users.sourceforge.net tags: origin/master, trunk
09:49:13
Only use one level of MTT_work to prevent MTT from repeatedly copying or creating the same files. check-in: a974885498 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:39:24
Fixed variable names in diy makefile example (again) check-in: 60ec39985e user: geraint@users.sourceforge.net tags: origin/master, trunk
01:39:24
Fixed variable names in diy makefile example (again) check-in: 2cfc2cd294 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:32:04
Use ibg.m by default for both Xfig and Dia models. check-in: 825ae28014 user: geraint@users.sourceforge.net tags: origin/master, trunk
01:32:04
Use ibg.m by default for both Xfig and Dia models. check-in: 02a591b20c user: geraint@users.sourceforge.net tags: origin/master, trunk
01:30:21
Example system consisting of a stack of 2D rigid bars mounted on oscillating supports.

Demonstrates Dia-built hierarchical models, including vector ports, repeated components and aliasing of parameters. check-in: d4a035ed51 user: geraint@users.sourceforge.net tags: origin/master, trunk

01:30:21
Example system consisting of a stack of 2D rigid bars mounted on oscillating supports.

Demonstrates Dia-built hierarchical models, including vector ports, repeated components and aliasing of parameters. check-in: 33967e2521 user: geraint@users.sourceforge.net tags: origin/master, trunk

00:14:03
Fixed interpretation of causal assignment on bonds. check-in: c364bd4af8 user: geraint@users.sourceforge.net tags: origin/master, trunk
00:14:03
Fixed interpretation of causal assignment on bonds. check-in: 4c94ad62f0 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-12
12:28:03
Removed: interferes with make dependencies for odes.dat2 check-in: bda73f83ef user: geraint@users.sourceforge.net tags: origin/master, trunk
12:28:03
Removed: interferes with make dependencies for odes.dat2 check-in: cbd06f6888 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-11
23:45:05
Fixed options variable name. check-in: 159048c1b1 user: geraint@users.sourceforge.net tags: origin/master, trunk
23:45:05
Fixed options variable name. check-in: 3991c32409 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:24:28
Replaced "gnuplot view" with "odeso gnuplot" in examples. check-in: 28affc466a user: geraint@users.sourceforge.net tags: origin/master, trunk
08:24:28
Replaced "gnuplot view" with "odeso gnuplot" in examples. check-in: be77369b00 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:21:49
Provides _odeso.gnuplot in the standard 'mtt sys rep lang' format. check-in: b86f371698 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:21:49
Provides _odeso.gnuplot in the standard 'mtt sys rep lang' format. check-in: 3d34278a07 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:20:59
Provides _odes.gnuplot target in the standard 'mtt sys rep lang' format. check-in: 5a22228ce6 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:20:59
Provides _odes.gnuplot target in the standard 'mtt sys rep lang' format. check-in: 7aecaeb198 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:18:07
Ignores diy make files if the file ${rep}_rep.make.ignore exists, thus allowing user-defined makefiles to use the default MTT rules for languages which they do not override. See odes_rep.make and odeso_rep.make for an example of its use. check-in: a02495a8e5 user: geraint@users.sourceforge.net tags: origin/master, trunk
08:18:07
Ignores diy make files if the file ${rep}_rep.make.ignore exists, thus allowing user-defined makefiles to use the default MTT rules for languages which they do not override. See odes_rep.make and odeso_rep.make for an example of its use. check-in: 79cd292a16 user: geraint@users.sourceforge.net tags: origin/master, trunk
07:44:18
Included cmp.m as a prerequisite for abg.m check-in: 6e89911f60 user: geraint@users.sourceforge.net tags: origin/master, trunk
07:44:18
Included cmp.m as a prerequisite for abg.m check-in: fb86096442 user: geraint@users.sourceforge.net tags: origin/master, trunk
07:35:24
Fixed variable names in diy rep example: MTT_{OPT,SYS,LANG}. check-in: d1c22f2f2f user: geraint@users.sourceforge.net tags: origin/master, trunk
07:35:24
Fixed variable names in diy rep example: MTT_{OPT,SYS,LANG}. check-in: 2cde5146d9 user: geraint@users.sourceforge.net tags: origin/master, trunk
2004-08-09
17:50:56
Updated to reflect new CR format: component type is passed as the first argument.
Prepended std:: to iostream classes to satisfy g++.
check-in: 2bd0f6b2ed user: geraint@users.sourceforge.net tags: origin/master, trunk
17:50:56
Updated to reflect new CR format: component type is passed as the first argument.
Prepended std:: to iostream classes to satisfy g++.
check-in: de2bcac636 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:49:52
string header file is required.
cmath is preferred to math.h
check-in: 4be02de99d user: geraint@users.sourceforge.net tags: origin/master, trunk
17:49:52
string header file is required.
cmath is preferred to math.h
check-in: 110ca310cf user: geraint@users.sourceforge.net tags: origin/master, trunk
17:49:06
Prepended std:: to iostream classes to satisfy g++.
cmath is preferred to math.h
check-in: 8ae6d2d4de user: geraint@users.sourceforge.net tags: origin/master, trunk
17:49:06
Prepended std:: to iostream classes to satisfy g++.
cmath is preferred to math.h
check-in: 5ad98a8817 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:46:52
Declarations of class string prepended with std:: to satisfy g++.
cmath is preferred to math.h
check-in: 01ef22d887 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:46:52
Declarations of class string prepended with std:: to satisfy g++.
cmath is preferred to math.h
check-in: 7850422450 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:45:56
cmath is preferred to math.h check-in: b22e319862 user: geraint@users.sourceforge.net tags: origin/master, trunk
17:45:56
cmath is preferred to math.h check-in: e2526f63ef user: geraint@users.sourceforge.net tags: origin/master, trunk

MTT: Model Transformation Tools
GitHub | SourceHut | Sourceforge | Fossil RSS ]