Added license information to R source files.
[openmx:openmx.git] / R / IdenMatrix.R
1 #
2 #   Copyright 2007-2009 The OpenMx Project
3 #
4 #   Licensed under the Apache License, Version 2.0 (the "License");
5 #   you may not use this file except in compliance with the License.
6 #   You may obtain a copy of the License at
7
8 #        http://www.apache.org/licenses/LICENSE-2.0
9
10 #    Unless required by applicable law or agreed to in writing, software
11 #    distributed under the License is distributed on an "AS IS" BASIS,
12 #    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #   See the License for the specific language governing permissions and
14 #   limitations under the License.
15
16
17 setClass(Class = "IdenMatrix",
18         representation = representation(),
19         contains = "MxNonSymmetricMatrix")
20         
21 setMethod("initialize", "IdenMatrix",
22         function(.Object, name, values, specification, nrow, ncol, byrow, free) {
23                 if (!single.na(values)) {
24                         warning("Ignoring values matrix for IdenMatrix construction")
25                 }
26                 if (!single.na(specification)) {
27                         warning("Ignoring specification matrix for IdenMatrix construction")
28                 }
29                 if (free) {
30                         warning("Ignoring \'free\' parameter for IdenMatrix construction")
31                 }               
32                 if (nrow != ncol) {
33                         stop("Non-square matrix attempted for IdenMatrix constructor")
34                 }
35                 specification <- new("MxSparseMatrix", 0, nrow, ncol)
36                 values <- Matrix(diag(nrow))
37                 return(callNextMethod(.Object, specification, values, name))
38         }
39 )
40
41 setMethod("omxVerifyMatrix", "IdenMatrix",
42         function(.Object) {
43                 callNextMethod(.Object)
44                 verifySquare(.Object)
45                 if(nnzero(.Object@specification) > 0) { stop("Specification matrix is not empty") } 
46                 if(!suppressWarnings(all(.Object@values == diag(nrow(.Object@values))))) 
47                         { stop("Values matrix is not the identity matrix") }
48         }
49 )