This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English version of the page.

Note: This page has been translated by MathWorks. Click here to see
To view all translated materials including this page, select Country from the country navigator on the bottom of this page.

c Coefficient for specifyCoefficients

Overview of the c Coefficient

This topic describes how to write the coefficient c in equations such as

m2ut2+dut·(cu)+au=f

The topic applies to the recommended workflow for including coefficients in your model using specifyCoefficients.

For 2-D systems, c is a tensor with 4N2 elements. For 3-D systems, c is a tensor with 9N2 elements. For a definition of the tensor elements, see Definition of the c Tensor Elements. N is the number of equations, see Equations You Can Solve Using PDE Toolbox.

To write the coefficient c for inclusion in the PDE model via specifyCoefficients, give c as either of the following:

  • If c is constant, give a column vector representing the elements in the tensor.

  • If c is not constant, give a function handle. The function must be of the form

    ccoeffunction(location,state)

    solvepde or solvepdeeig pass the location and state structures to ccoeffunction. The function must return a matrix of size N1-by-Nr, where:

    • N1 is the length of the vector representing the c coefficient. There are several possible values of N1, detailed in Some c Vectors Can Be Short. For 2-D geometry, 1 ≤ N1 ≤ 4N2, and for 3-D geometry, 1 ≤ N1 ≤ 9N2.

    • Nr is the number of points in the location that the solver passes. Nr is equal to the length of the location.x or any other location field. The function should evaluate c at these points.

Definition of the c Tensor Elements

For 2-D systems, the notation (cu) represents an N-by-1 matrix with an (i,1)-component

j=1N(xci,j,1,1x+xci,j,1,2y+yci,j,2,1x+yci,j,2,2y)uj

For 3-D systems, the notation (cu) represents an N-by-1 matrix with an (i,1)-component

j=1N(xci,j,1,1x+xci,j,1,2y+xci,j,1,3z)uj+j=1N(yci,j,2,1x+yci,j,2,2y+yci,j,2,3z)uj+j=1N(zci,j,3,1x+zci,j,3,2y+zci,j,3,3z)uj

All representations of the c coefficient begin with a “flattening” of the tensor to a matrix. For 2-D systems, the N-by-N-by-2-by-2 tensor flattens to a 2N-by-2N matrix, where the matrix is logically an N-by-N matrix of 2-by-2 blocks.

(c(1,1,1,1)c(1,1,1,2)c(1,2,1,1)c(1,2,1,2)c(1,N,1,1)c(1,N,1,2)c(1,1,2,1)c(1,1,2,2)c(1,2,2,1)c(1,2,2,2)c(1,N,2,1)c(1,N,2,2)c(2,1,1,1)c(2,1,1,2)c(2,2,1,1)c(2,2,1,2)c(2,N,1,1)c(2,N,1,2)c(2,1,2,1)c(2,1,2,2)c(2,2,2,1)c(2,2,2,2)c(2,N,2,1)c(2,N,2,2)c(N,1,1,1)c(N,1,1,2)c(N,2,1,1)c(N,2,1,2)c(N,N,1,1)c(N,N,1,2)c(N,1,2,1)c(N,1,2,2)c(N,2,2,1)c(N,2,2,2)c(N,N,2,1)c(N,N,2,2))

For 3-D systems, the N-by-N-by-3-by-3 tensor flattens to a 3N-by-3N matrix, where the matrix is logically an N-by-N matrix of 3-by-3 blocks.

(c(1,1,1,1)c(1,1,1,2)c(1,1,1,3)c(1,2,1,1)c(1,2,1,2)c(1,2,1,3)c(1,N,1,1)c(1,N,1,2)c(1,N,1,3)c(1,1,2,1)c(1,1,2,2)c(1,1,2,3)c(1,2,2,1)c(1,2,2,2)c(1,2,2,3)c(1,N,2,1)c(1,N,2,2)c(1,N,2,3)c(1,1,3,1)c(1,1,3,2)c(1,1,3,3)c(1,2,3,1)c(1,2,3,2)c(1,2,3,3)c(1,N,3,1)c(1,N,3,2)c(1,N,3,3)c(2,1,1,1)c(2,1,1,2)c(2,1,1,3)c(2,2,1,1)c(2,2,1,2)c(2,2,1,3)c(2,N,1,1)c(2,N,1,2)c(2,N,1,3)c(2,1,2,1)c(2,1,2,2)c(2,1,2,3)c(2,2,2,1)c(2,2,2,2)c(2,2,2,3)c(2,N,2,1)c(2,N,2,2)c(2,N,2,3)c(2,1,3,1)c(2,1,3,2)c(2,1,3,3)c(2,2,3,1)c(2,2,3,2)c(2,2,3,3)c(2,N,3,1)c(2,N,3,2)c(2,N,3,3)c(N,1,1,1)c(N,1,1,2)c(N,1,1,3)c(N,2,1,1)c(N,2,1,2)c(N,2,1,3)c(N,N,1,1)c(N,N,1,2)c(N,N,1,3)c(N,1,2,1)c(N,1,2,2)c(N,1,2,3)c(N,2,2,1)c(N,2,2,2)c(N,2,2,3)c(N,N,2,1)c(N,N,2,2)c(N,N,2,3)c(N,1,3,1)c(N,1,3,2)c(N,1,3,3)c(N,2,3,1)c(N,2,3,2)c(N,2,3,3)c(N,N,3,1)c(N,N,3,2)c(N,N,3,3))

These matrices further get flattened into a column vector. First the N-by-N matrices of 2-by-2 and 3-by-3 blocks are transformed into "vectors" of 2-by-2 and 3-by-3 blocks. Then the blocks are turned into vectors in the usual column-wise way.

The coefficient vector c relates to the tensor c as follows. For 2-D systems,

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Coefficient c(i,j,k,l) is in row (4N(j–1) + 4i + 2l + k – 6) of the vector c.

For 3-D systems,

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Coefficient c(i,j,k,l) is in row (9N(j–1) + 9i + 3l + k – 12) of the vector c.

Some c Vectors Can Be Short

Often, your tensor c has structure, such as symmetric or block diagonal. In many cases, you can represent c using a smaller vector than one with 4N2 components for 2-D or 9N2 components for 3-D. The following sections give the possibilities.

2-D Systems

Scalar c, 2-D Systems.  The software interprets a scalar c as a diagonal matrix, with c(i,i,1,1) and c(i,i,2,2) equal to the scalar, and all other entries 0.

(c000000c000000c000000c000000c000000c)

Two-Element Column Vector c, 2-D Systems.  The software interprets a two-element column vector c as a diagonal matrix, with c(i,i,1,1) and c(i,i,2,2) as the two entries, and all other entries 0.

(c(1)000000c(2)000000c(1)000000c(2)000000c(1)000000c(2))

Three-Element Column Vector c, 2-D Systems.  The software interprets a three-element column vector c as a symmetric block diagonal matrix, with c(i,i,1,1) = c(1), c(i,i,2,2) = c(3), and c(i,i,1,2) = c(i,i,2,1) = c(2).

(c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3)000000c(1)c(2)0000c(2)c(3))

Four-Element Column Vector c, 2-D Systems.  The software interprets a four-element column vector c as a block diagonal matrix.

(c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4)000000c(1)c(3)0000c(2)c(4))

N-Element Column Vector c, 2-D Systems.  The software interprets an N-element column vector c as a diagonal matrix.

(c(1)000000c(1)000000c(2)000000c(2)000000c(N)000000c(N))

Caution

If N = 2, 3, or 4, the 2-, 3-, or 4-element column vector form takes precedence over the N-element form. For example, if N = 3, and you have a c matrix of the form

(c1000000c1000000c2000000c2000000c3000000c3)

you cannot use the N-element form of c. Instead, you must use the 2N-element form. If you give c as the vector [c1;c2;c3], the software interprets c as a 3-element form:

(c1c20000c2c3000000c1c20000c2c3000000c1c20000c2c3)

Instead, use the 2N-element form [c1;c1;c2;c2;c3;c3].

2N-Element Column Vector c, 2-D Systems.  The software interprets a 2N-element column vector c as a diagonal matrix.

(c(1)000000c(2)000000c(3)000000c(4)000000c(2N1)000000c(2N))

Caution

If N = 2, the 4-element form takes precedence over the 2N-element form. For example, if your c matrix is

(c10000c20000c30000c4)

you cannot give c as [c1;c2;c3;c4], because the software interprets this vector as the 4-element form

(c1c300c2c40000c1c300c2c4)

Instead, use the 3N-element form [c1;0;c2;c3;0;c4] or the 4N-element form [c1;0;0;c2;c3;0;0;c4].

3N-Element Column Vector c, 2-D Systems.  The software interprets a 3N-element column vector c as a symmetric block diagonal matrix.

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

Coefficient c(i,j,k,l) is in row (3i + k + l – 4) of the vector c.

4N-Element Column Vector c, 2-D Systems.  The software interprets a 4N-element column vector c as a block diagonal matrix.

(c(1)c(3)0000c(2)c(4)000000c(5)c(7)0000c(6)c(8)000000c(4N3)c(4N1)0000c(4N2)c(4N))

Coefficient c(i,j,k,l) is in row (4i + 2l + k – 6) of the vector c.

2N(2N+1)/2-Element Column Vector c, 2-D Systems.  The software interprets a 2N(2N+1)/2-element column vector c as a symmetric matrix. In the following diagram, • means the entry is symmetric.

(c(1)c(2)c(4)c(6)c((N1)(2N1)+1)c((N1)(2N1)+3)c(3)c(5)c(7)c((N1)(2N1)+2)c((N1)(2N1)+4)c(8)c(9)c((N1)(2N1)+5)c((N1)(2N1)+7)c(10)c((N1)(2N1)+6)c((N1)(2N1)+8)c(N(2N+1)2)c(N(2N+1)1)c(N(2N+1)))

Coefficient c(i,j,k,l), for i < j, is in row (2j2 – 3j + 4i + 2l + k – 5) of the vector c. For i = j, coefficient c(i,j,k,l) is in row (2i2 + i + l + k – 4) of the vector c.

4N2-Element Column Vector c, 2-D Systems.  The software interprets a 4N2-element column vector c as a matrix.

(c(1)c(3)c(4N+1)c(4N+3)c(4N(N1)+1)c(4N(N1)+3)c(2)c(4)c(4N+2)c(4N+4)c(4N(N1)+2)c(4N(N1)+4)c(5)c(7)c(4N+5)c(4N+7)c(4N(N1)+5)c(4N(N1)+7)c(6)c(8)c(4N+6)c(4N+8)c(4N(N1)+6)c(4N(N1)+8)c(4N3)c(4N1)c(8N3)c(8N1)c(4N23)c(4N21)c(4N2)c(4N)c(8N2)c(8N)c(4N22)c(4N2))

Coefficient c(i,j,k,l) is in row (4N(j–1) + 4i + 2l + k – 6) of the vector c.

3-D Systems

Scalar c, 3-D Systems.  The software interprets a scalar c as a diagonal matrix, with c(i,i,1,1), c(i,i,2,2), and c(i,i,3,3) equal to the scalar, and all other entries 0.

(c000000000c000000000c000000000c000000000c000000000c000000000c000000000c000000000c)

Three-Element Column Vector c, 3-D Systems.  The software interprets a three-element column vector c as a diagonal matrix, with c(i,i,1,1), c(i,i,2,2), and c(i,i,3,3) as the three entries, and all other entries 0.

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Six-Element Column Vector c, 3-D Systems.  The software interprets a six-element column vector c as a symmetric block diagonal matrix, with

c(i,i,1,1) = c(1)
c(i,i,2,2) = c(3)
c(i,i,1,2) = c(i,i,2,1) = c(2)
c(i,i,1,3) = c(i,i,3,1) = c(4)
c(i,i,2,3) = c(i,i,3,2) = c(5)
c(i,i,3,3) = c(6).

In the following diagram, • means the entry is symmetric.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(1)c(2)c(4)000000c(3)c(5)000000c(6))

Nine-Element Column Vector c, 3-D Systems.  The software interprets a nine-element column vector c as a block diagonal matrix.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

N-Element Column Vector c, 3-D Systems.  The software interprets an N-element column vector c as a diagonal matrix.

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(N)000000000c(N)000000000c(N))

Caution

If N = 3, 6, or 9, the 3-, 6-, or 9-element column vector form takes precedence over the N-element form. For example, if N = 3, and you have a c matrix of the form

(c(1)000000000c(1)000000000c(1)000000000c(2)000000000c(2)000000000c(2)000000000c(3)000000000c(3)000000000c(3))

you cannot use the N-element form of c. If you give c as the vector [c1;c2;c3], the software interprets c as a 3-element form:

(c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3)000000000c(1)000000000c(2)000000000c(3))

Instead, use one of these forms:

  • 6N-element form — [c1;0;c1;0;0;c1;c2;0;c2;0;0;c2;c3;0;c3;0;0;c3]

  • 9N-element form — [c1;0;0;0;c1;0;0;0;c1;c2;0;0;0;c2;0;0;0;c2;c3;0;0;0;c3;0;0;0;c3]

3N-Element Column Vector c, 3-D Systems.  The software interprets a 3N-element column vector c as a diagonal matrix.

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(3N2)000000000c(3N1)000000000c(3N))

Caution

If N = 3, the 9-element form takes precedence over the 3N-element form. For example, if your c matrix is

(c(1)000000000c(2)000000000c(3)000000000c(4)000000000c(5)000000000c(6)000000000c(7)000000000c(8)000000000c(9))

you cannot give c as [c1;c2;c3;c4;c5;c6;c7;c8;c9], because the software interprets this vector as the 9-element form

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(3))

Instead, use one of these forms:

  • 6N-element form — [c1;0;c2;0;0;c3;c4;0;c5;0;0;c6;c7;0;c8;0;0;c9]

  • 9N-element form — [c1;0;0;0;c2;0;0;0;c3;c4;0;0;0;c5;0;0;0;c6;c7;0;0;0;c8;0;0;0;c9]

6N-Element Column Vector c, 3-D Systems.  The software interprets a 6N-element column vector c as a symmetric block diagonal matrix. In the following diagram, • means the entry is symmetric.

(c(1)c(2)c(4)000000c(3)c(5)000000c(6)000000000c(7)c(8)c(10)000000c(9)c(11)000000c(12)000000000c(6N5)c(6N4)c(6N2)000000c(6N3)c(6N1)000000c(6N))

Coefficient c(i,j,k,l) is in row (6i + k + 1/2l(l–1) – 6) of the vector c.

9N-Element Column Vector c, 3-D Systems.  The software interprets a 9N-element column vector c as a block diagonal matrix.

(c(1)c(4)c(7)000000c(2)c(5)c(8)000000c(3)c(6)c(9)000000000c(10)c(13)c(16)000000c(11)c(14)c(17)000000c(12)c(15)c(18)000000000c(9N8)c(9N5)c(9N2)000000c(9N7)c(9N4)c(9N1)000000c(9N6)c(9N3)c(9N))

Coefficient c(i,j,k,l) is in row (9i + 3l + k – 12) of the vector c.

3N(3N+1)/2-Element Column Vector c, 3-D Systems.  The software interprets a 3N(3N+1)/2-element column vector c as a symmetric matrix. In the following diagram, • means the entry is symmetric.

(c(1)c(2)c(4)c(7)c(10)c(13)c(3(N1)(3(N1)+1)/2+1c(3(N1)(3(N1)+1)/2+4c(3(N1)(3(N1)+1)/2+7c(3)c(5)c(8)c(11)c(14)c(3(N1)(3(N1)+1)/2+2c(3(N1)(3(N1)+1)/2+5c(3(N1)(3(N1)+1)/2+8c(6)c(9)c(12)c(15)c(3(N1)(3(N1)+1)/2+3c(3(N1)(3(N1)+1)/2+6c(3(N1)(3(N1)+1)/2+9c(16)c(17)c(19)c(3(N1)(3(N1)+1)/2+10c(3(N1)(3(N1)+1)/2+13c(3(N1)(3(N1)+1)/2+16c(18)c(20)c(3(N1)(3(N1)+1)/2+11c(3(N1)(3(N1)+1)/2+14c(3(N1)(3(N1)+1)/2+17c(21)c(3(N1)(3(N1)+1)/2+12c(3(N1)(3(N1)+1)/2+15c(3(N1)(3(N1)+1)/2+18c(3N(3N+1)/25)c(3N(3N+1)/24)c(3N(3N+1)/22)c(3N(3N+1)/23)c(3N(3N+1)/21)c(3N(3N+1)/2))

Coefficient c(i,j,k,l), for i < j, is in row (9(j–1)(j–2)/2 + 6(j–1) + 9i + 3l + k – 12) of the vector c. For i = j, coefficient c(i,j,k,l) is in row (9(i–1)(i–2)/2 + 15(i–1) + 1/2l(l–1) + k) of the vector c.

9N2-Element Column Vector c, 3-D Systems.  The software interprets a 9N2-element column vector c as a matrix.

(c(1)c(4)c(7)c(9N+1)c(9N+4)c(9N+7)c(9N(N1)+1)c(9N(N1)+4)c(9N(N1)+7)c(2)c(5)c(8)c(9N+2)c(9N+5)c(9N+8)c(9N(N1)+2)c(9N(N1)+5)c(9N(N1)+8)c(3)c(6)c(9)c(9N+3)c(9N+6)c(9N+9)c(9N(N1)+3)c(9N(N1)+6)c(9N(N1)+9)c(10)c(13)c(16)c(9N+10)c(9N+13)c(9N+16)c(9N(N1)+10)c(9N(N1)+13)c(9N(N1)+16)c(11)c(14)c(17)c(9N+11)c(9N+14)c(9N+17)c(9N(N1)+11)c(9N(N1)+14)c(9N(N1)+17)c(12)c(15)c(18)c(9N+12)c(9N+15)c(9N+18)c(9N(N1)+12)c(9N(N1)+15)c(9N(N1)+18)c(9N8)c(9N5)c(9N2)c(18N8)c(18N5)c(18N2)c(9N28)c(9N25)c(9N22)c(9N7)c(9N4)c(9N1)c(18N7)c(18N4)c(18N1)c(9N27)c(9N24)c(9N21)c(9N6)c(9N3)c(9N)c(18N6)c(18N3)c(18N)c(9N26)c(9N23)c(9N2))

Coefficient c(i,j,k,l) is in row (9N(j–1) + 9i + 3l + k – 12) of the vector c.

Functional Form

If your c coefficient is not constant, represent it as a function of the form

ccoeffunction(location,state)

solvepde or solvepdeeig pass the location and state structures to ccoeffunction. The function must return a matrix of size N1-by-Nr, where:

  • N1 is the number of coefficients you pass to the solver. There are several possible values of N1, detailed in Some c Vectors Can Be Short. For 2-D geometry, 1 ≤ N1 ≤ 4N2, and for 3-D geometry, 1 ≤ N1 ≤ 9N2.

  • Nr is the number of points in the location that the solver passes. Nr is equal to the length of the location.x or any other location field. The function should evaluate c at these points.

Pass the coefficient to specifyCoefficients as a function handle, such as

specifyCoefficients(model,'c',@ccoeffunction,...)
  • location is a structure with these fields:

    • location.x

    • location.y

    • location.z

    • location.subdomain

    The fields x, y, and z represent the x-, y-, and z- coordinates of points for which your function calculates coefficient values. The subdomain field represents the subdomain numbers, which currently apply only to 2-D models. The location fields are row vectors.

  • state is a structure with these fields:

    • state.u

    • state.ux

    • state.uy

    • state.uz

    • state.time

    The state.u field represents the current value of the solution u. The state.ux, state.uy, and state.uz fields are estimates of the solution’s partial derivatives (∂u/∂x, ∂u/∂y, and ∂u/∂z) at the corresponding points of the location structure. The solution and gradient estimates are N-by-Nr matrices. The state.time field is a scalar representing time for time-dependent models.

For example, suppose N = 3, and you have 2-D geometry. Suppose your c matrix is of the form

c=[12281+x2+y2u(2)1+u(1)2+u(3)2u(2)1+u(1)2+u(3)21+x2+y2s1(x,y)11s1(x,y)]

where unlisted elements are zero. Here s1(x,y) is 5 in subdomain 1, and is 10 in subdomain 2.

This c is a symmetric, block-diagonal matrix with different coefficients in each block. So it is natural to represent c as a 3N-Element Column Vector c, 2-D Systems:

(c(1)c(2)0000c(2)c(3)000000c(4)c(5)0000c(5)c(6)000000c(3N2)c(3N1)0000c(3N1)c(3N))

For that form, the following function is appropriate.

function cmatrix = ccoeffunction(location,state)

n1 = 9;
nr = numel(location.x);
cmatrix = zeros(n1,nr);
cmatrix(1,:) = ones(1,nr);
cmatrix(2,:) = 2*ones(1,nr);
cmatrix(3,:) = 8*ones(1,nr);
cmatrix(4,:) = 1+location.x.^2 + location.y.^2;
cmatrix(5,:) = state.u(2,:)./(1 + state.u(1,:).^2 + state.u(3,:).^2);
cmatrix(6,:) = cmatrix(4,:);
cmatrix(7,:) = 5*location.subdomain;
cmatrix(8,:) = -ones(1,nr);
cmatrix(9,:) = cmatrix(7,:);

To include this function as your c coefficient, pass the function handle @ccoeffunction:

specifyCoefficients(model,'c',@ccoeffunction,...

Related Topics