物体内の⼒(=内⼒)の状態 2 〜Cauchyの応⼒原理〜 ⾯の⾯積をゼロに近づけるとき,すなわち Cuachy (コーシー)の 応⼒ベクトル ì ï DF ( n) = ï ï DS t í ï ï ï î mP 0 DS 0 のとき, ︓点Pにおける表⾯⼒ベクトル (traction vector)[F/L2] ︓点P周りのモーメントはゼロ Remark: ⾯の切り⽅に応じて異なる応⼒ベクトルが現れるので,その⾯を 規定する法線ベクトル n への依存を明記するために(n)を付ける 3 物体内の⼒(=内⼒)の表現 4 応⼒の定義(2D) x1 ïìt1( e1 ) ïüï ( e1 ) ý îï 2 ïþï {t } = íïït t ( e2 ) = (t ( e2 ) e1 ) e1 + (t ( e2 ) e2 ) e2 = t1( e2 ) e1 + t2( e2 ) e2 {t } = íïït t ( e1 ) = (t ( e1 ) e1 ) e1 + (t ( e1 ) e2 ) e2 = t1( e1 ) e1 + t2( e1 ) e2 ( e1 ) ( e2 ) ìït1( e2 ) üï ï ( e2 ) ý ïî 2 ïïþ t (jei ) = sij : i -⾯に働く j ⽅向の⼒ 応⼒テンソル︓ és s ù [s ] = êê 11 21 úú = éëê{t ( e ) } ës12 s22 û T 1 ét1( e1 ) {t }ùûú = êêt ( e2 ) ë ( e1 ) 2 t1( e2 ) ùú éê t ( e1 ) e1 = t2( e2 ) úû êë t ( e1 ) e2 t ( e2 ) e1 ùú t ( e2 ) e2 úû é s11 [s ] = êê 【注意】座標系に応じて応⼒テンソルの成分は異なる ës21 s12 ù ú s22 úû 任意の⾯上の応⼒ベクトル と応⼒テンソルの成分との関係 5 6 Cauchyの応⼒公式(2D) ・⼒のつり合い条件 t (-e1 ) dS1 + t (-e2 ) dS 2 + t ( n ) dS + bdV = 0 t (-e1 ) = -t ( e1 ) , t (-e2 ) = -t ( e2 ) dS1 = n1dS , dS2 = n2 dS -t ( e1 ) (n1dS ) - t ( e2 ) (n2 dS ) + t ( n ) dS + bdV = 0 dS dV t ( n ) = n1t ( e1 ) + n2 t ( e2 ) = éëê t ( e1 ) ì ï n1 ü ï t ( e2 ) ùûú ï í ï ý ïn2 þ ï ï ï î Cauchyの応⼒公式 ì ït ( n ) ü ï ì ï n1 ü ï t ( e2 ) ùûú ï í ï ý ï ï n t 2 ï þ ï î ï2 þ ï î ét1( e1 ) t1( e2 ) ù ï ì ü é ì n1 ï ü s s21 ù ï n ï T 1 11 ï úï = ê (e ) (e ) ú ï ý = êê í ï ý = [s ] {n} êt 1 t 2 ú í ú ï ï ï ï n s s n 22 û î ï 2þ ï ë 12 ï 2þ ï 2 ë2 ûî {t ( n) } = ïíï 1( n) ïýï = éëê t (e ) q n e2 90 - q q n e1 7 Cauchy応⼒テンソルの成分(2D&3D) 8 1 Cauchy応⼒テンソル é t ( e1 ) [s ] = êê 1( e ) ët1 2 t2( e1 ) ùú é s11 =ê t2( e2 ) úû êës12 ・モーメントのつり合い条件 T [s ] = [s ] (対称性) 例︓解析結果のCauchy応⼒をどう⾒るか Cauchyの応⼒公式(2D) ìït ( n ) üï îït2 þï ét ( e1 ) t1( e2 ) ùú ïïì n1 ïïü é s11 í ý= ê t2( e2 ) úû ïîïn2 ïþï êës12 {t ( n) } = íïï 1( n) ýïï = êê 1(e ) é s11 [s ] = êê ës12 1 ët 2 s12 ù és xx ú=ê s22 úû êës xy s21 ù ïìï n1 ïüï ú í ý = [s ]{n} s22 úû ïîïn2 ïþï s xy ù é s x ú=ê s yy úû êët xy 垂直応⼒成分 t xy ù ú s y úû せん断応⼒成分 Cauchyの応⼒公式(3D) {t ( n) ìt1( n ) ï ü é ( e1 ) ï ï ïï êt1 ï ( n ) } = ïïít2 ïïý = êêt2(e1 ) ï ( n ) ï êt ( e1 ) ïït3 ï ï ëê 3 î þ é s11 s12 ê [s ] = êês12 s22 ês ë 31 s23 t1( e2 ) t t ( e2 ) 2 ( e2 ) 3 t1( e3 ) ùú ïì n1 ïü é s11 ïï ïï ê t2( e3 ) úú ín2 ý = ês12 ï ï ê t3( e3 ) ûúú ïïîïn3 ïïþï ëês13 s31 ù éês xx ú s23 ú = êês xy ú s33 úû êëê s zx s xy s yy s xy s21 s22 s23 s31 ù ïì n1 ïü ú ïï ïï s32 ú ín2 ý = [s ]{n} úï ï ï s33 ûú ïïî ï ïn3 ï þ s zx ùú éê s x s xy úú = êêt xy s zz úûú êëê t zx t xy sy t xy t zx ùú t xy úú s z úûú 垂直応⼒成分 せん断応⼒成分 メッシュ図 (ANSYS PLANE183) s12 ù ú s22 úû 変形図 9 10 例︓解析結果のCauchy応⼒をどう⾒るか Cauchyの応⼒テンソルの不変量 • 変形して平衡状態にある構造物内のある点の応⼒状態が,次のよ うに与えられたとき,その構造物の安全性をどう評価するか︖ 第1不変量︓ I1 = trs = 3 ås pp = s11 + s22 + s33 p=1 = (s x + s y + s z ) = s1 + s2 + s3 第2不変量︓ I = 2 3 1 å 2 éêës p=1 pq 静⽔圧成分 I1 (平均直応⼒)= 3 2ù 1 1 2 2 s pq - (s pp ) ú = éê trs 2 - ( trs ) ùú = éês : s - ( trs ) ùú û 2ë û û 2ë 1é 2 2 2 2 2 2 s11 + s22 + s33 + 2s122 + 2s23 + 2s31 - (s11 + s22 + s33 ) ùú û 2 ëê 2 2 2 = s12 + s23 + s31 - s11s22 - s22s33 - s33s11 = = (t xy2 + t yz2 + t zx2 - s x s y - s y s z - s z s x ) 1é 2 2 s1 + s22 + s32 - (s1 + s2 + s3 ) ùú û 2 êë = -(s1s2 + s2s3 + s3s1 ) s = 第3不変量︓ I 3 = 11 12 応⼒テンソルの各種成分(2D&3D) Cauchyの応⼒テンソル︓s ésij ù ëê ûú 偏差応⼒︓ s13 ù é s11 s12 s13 ù é sM 0 0ù ú ê ú ê ú s23 ú = ê s22 s23 ú - ê sM 0 ú ú ê ú ê ú ú ê ú ê s33 û ësym. s33 û ësym. sM úû é 2s11 - s22 - s33 ù 3s12 3s13 ú 1ê ú = ê 2s22 - s33 - s11 3s23 ú 3 êê ú sym. 2 s s s 33 11 22 û ë é 2s x - s y - s z ù é 3t xy 3t zx sxy ú ê sx 1ê ú=ê = êê sy 2s y - s z - s x 3t yz ú ê 3ê ú êsym. sym. 2 s s s z x y ëê ûú ë 3 ås pp = trs = sx + s y + sz = s1 + s2 + s3 = 0 (偏差応⼒の定義から⾃明) 第2不変量︓ J 2 = 3 1 1é 2 1 1 2 2 trs - ( trs ) ùú = éê s : s - ( trs ) ùú = s : s = å s pq s pq ê û 2ë û 2 2ë p , q=1 2 1 2 1 2 2 2 2 + s33 + 2 s122 + 2 s23 + 2s31 = ( s12 + s22 + s32 ) s11 + s22 ( ) 2 2 1 2 2 2 2 2 2 = ( sx + s y + s33 + 2 sxy + 2 s yz + 2 szx ) 2 2 2 = -s11s22 - s22 s33 - s33 s11 + s122 + s23 + s31 1 sij = sij - sM dij = sij - s pp dij 3 = ïìí s = s - s I = s - 1 s I ïüý M pp ïîï ïþï 3 é s11 s12 ê ê s22 ê êsym. ë s1i s2 j s3k = det s = s1s2s3 p=1 3 静⽔圧成分と呼び,p と書くこともある ijk i , j , k =1 偏差応⼒テンソルの不変量 第1不変量︓ J1 = 1 1 1 1 1 1 平均直応⼒︓ sM = å s pp = trs = I1 = (s11 + s22 + s33 ) = (s x + s y + s z ) = (s1 + s2 + s3 ) 3 3 3 3 3 p =1 3 3 åe 1 2 2 2 2 2 = éê(s11 - s22 ) + (s22 - s33 ) + (s33 - s11 ) ùú + s122 + s23 + s31 û 6ë 1 2 2 2 = éê(s1 - s2 ) + (s2 - s3 ) + (s3 - s1 ) ùú =せん断応⼒のノルム(⼤きさ) û 6ë szx ù ú s yz ú ú sz ûú 偏差応⼒の 静⽔圧成分︓ sx + s y + sz 3 =0 第3不変量︓ J 3 = det s = 1 2 2 sij s jk ski = s11s22 s33 + 2s12s23s31 - s11s23 - s22s31 - s33s122 = s1s2 s3 3 13 例︓解析結果のCauchy応⼒をどう⾒るか 14 A. 材料の降伏状態を知りたい 例︓解析結果のCauchy応⼒をどう⾒るか A. 材料の降伏状態を知りたい 平均応⼒ 1 1 4 m 11 22 33 2 2 0 3 3 3 1 M I1; I1 4 3 2 2 1 0 1 0 0 3 4 [ s ] [ ] M [ I ] 1 2 0 0 1 0 1 3 0 0 0 0 0 1 0 偏差応⼒の不変量 偏差応⼒ 2 2 2 3 2 J1 I s11 s22 s33 ⼀軸応⼒ s s s 2 1 2 (von-Misesの)相当応⼒ 15 f (s ) = seq - sY B. ある⾯の⼒の⼤きさを知りたい 2 x y c 2 x 1 y c t = sn é 2 1ù ú [s ] = ê êë 1 2úû {n} = ì ü 2ï 1 ï ï í ï ý 1 5ï ï ï ï î þ é 2 1ù 1 ìï 2üï 5üï 1 ìï ú íï ýï = íï ýï ú ï ï ï 1 2 1 5 5 ï ë û îï þï îï4þï 16 7 7 3 例︓解析結果のCauchy応⼒をどう⾒るか C. ある点の引張/圧縮の様⼦を知りたい {n}を持つ⾯上での応⼒ベクトル [s ]{n} = {t ( n) } sx (Cauchyの応⼒公式) が法線⽅向を向くような⾯を探せないか︖ すなわち,その⾯の法線ベクトルを {n }としたとき, l ì2ï ü 14 1 1 ï t N = t n = {t } {n} = {5 4} ïí ïý = ï 1 5 5î ï ï ï 5 þ ì2ï ü 14 ï ì ü 2ï 14 1 ï ï { p} = (t n) {n} = t N {n} = ´ ï í ï ý= í ï ý ï ï 1 1 5 5ï 5 5 ï þ ï ï ï ï î î þ T æ ö ççtT = s = 3 ÷÷ çè 5 ø÷ eq 3J 2 3 単位法線ベクトル 応⼒ベクトルの法線⽅向(垂直)成分︓ {s} = {t } - { p} = “⼒”として直感的に理解しやすい表現は「引張」と「圧縮」の1⽅向 2x y c {t } = [s] {n} = êê 2 2 4 0 3 3 3 相当(von-Mises)応⼒ 2 2 F (s ) = 2 J 2 - sY = s - sY 3 3 例︓解析結果のCauchy応⼒をどう⾒るか Cauchyの応⼒公式 0 16 4 20 2 2 4 4 J 3 III det[ s ] 11 27 3 27 3 3 3 3 von-Misesの降伏関数 3 2 2 2 3 s1 s2 s3 2 J 2 3 J 2 eq 2 2 2 3 0 0 4 3 1 2 1 4 4 16 7 2 2 2 2 2 s11 s22 s33 2 s12 2s23 2s31 2 0 0 2 29 9 9 3 J 2 II 2 2 2 1 1 1 1 3 3 3 3 1 [s ]{nl } = {t ( n l 1 ìïï5üïï 14 ìïï2üïï 1 ìïï-3üïï í ýí ý= í ý ï ï ï ï 5 îï4þï 5 5 îï1þï 5 5 ïîï 6 ïþï ) } = l {nl } ([s ] - l [1]){nl } = 0 となるような,⾮⾃明解の組 l, {nl } を探す 数学的には固有値問題 2x y c 主応⼒(=固有値) 主応⼒⽅向(=固有ベクトル) 17 例︓解析結果のCauchy応⼒をどう⾒るか 18 例︓解析結果のCauchy応⼒をどう⾒るか C. ある点の引張/圧縮の様⼦を知りたい [s ]{nl } = l {nl } 特性⽅程式︓ ìnl ï ü æ é 2 1ù é1 0ù ö÷ï 1 ú -l ê ú÷÷ï ççç ê í lï ý= 0 ê ú ê ú çè ë1 2û ë0 1û ø÷ï ïn2 ï ï ï ï î þ é 2 1ù é 1 0ù ú -l ê ú =0 ê êë 1 2úû êë 0 1úû (⾃明解を求める) x2 l 2 - 4l + 3 = 0 (l -1)(l - 3) = 0 ìl1 = 3 ï ï í 固有値 ï ï îl2 = 1 I 1 1 1 3 4 ìnl1 ï ü æ öï 1 çç éê 2 1ùú -1 éê1 0ùú÷÷ï í lï ý= 0 ççè ê1 2ú ê 0 1ú ø÷÷ï ë û ë û î ïn21 ï ï ï ï þ æ é 2 1ù é1 0ù ö÷ïìn1l2 ïü çç ê ú -1 ê ú÷ïí ïý = 0 çèç ëê 1 2ûú ëê0 1ûú ø÷÷ïïnl2 ïï îï 2 þï n1l1 - n1l1 = 0 n1l2 + n1l2 = 0 {n } l1 ìnl1 ï ü ï ì1ï ü 1 ïï ï ï =í 1 ý= íï ý l1 ï ï ï ï 1 2 ïþ ï î ïn2 þ ï ï ï î ( x + y = C1 ) 19 (2 - l )(2 - l ) -1 = 0 ii) l2 = 1 i) l1 = 3 C. ある点の引張/圧縮の様⼦を知りたい 固有ベクトル {n } l2 x1 e1 1 1 1 e1 2 1 1 e2 e2 ïìïnl2 ïüï 1 ïïì 1 ïïü =í 1 ý= í ý ïïnl2 ïï 2 ïîï-1ïþï îï 2 þï ( x - y = C2 ) 固有ベクトル 例︓解析結果のCauchy応⼒をどう⾒るか C. ある点の引張/圧縮の様⼦を知りたい(補︓Mohrの応⼒円) [T ] 20 1 1 1 2 1 1 対⾓化 [ ] [T ]T [ ][T ] 1 1 1 2 1 1 1 1 1 0 2 1 1 1 2 2 1 1 0 3 主応⼒︓内⼒の引張/圧縮による表現 例として、点Pにおける⼒の状態が ある⽅向①に引張、それと直交する⽅向②に圧縮 が作⽤していることを想定する。 Cauchyの応⼒公式を⽤いて、⽅向①と②の単位法線ベクトル n1 と n2 (n ) (n ) と、対応する応⼒ベクトル t 1 , t 2 を求めてみよう。 このとき、応⼒ベクトルと⾯の法線ベクトルが同⽅向であることに注意。 [s ]{ni } = {t ( n ) } = li {ni } i t ( n1 ) ①︓n1 t ( n2 ) ②︓n2 [s ] ([s ]- li {1}){ni } = 0 固有⽅向 固有値 (主応⼒) (単位ベクトル) (主⽅向) ⾏列 [s ] の固有値問題 21 主応⼒︓内⼒の引張/圧縮による表現 x¢ t ( n1 ) s1 n1 s2 y¢ t ( n2 ) n2 ⽅向①の単位法線ベクトル︓ n1 ⽅向②の単位法線ベクトル︓ n2 を基底ベクトルとする座標系で 応⼒テンソルの成分を表現 él1 0 ù és1 0 ù ê ú=ê ú ê 0 l2 ú ê 0 s2 ú ë û ë û 固有⽅向を法線ベクトルに持つ⾯上では せん断応⼒は⽣じない せん断応⼒のみが⽣じる⾯も定められる (主⽅向から45°傾いた⾯) 23 最⼤せん断応⼒(主応⼒差の半分) t max = s1 - s2 2 24 応⼒テンソルとそのマトリックス表記 Cauchyの応⼒公式 (2D) ü ét ( e1 ) ïìt ( n ) ï {t ( n) } = ïíï 1( n) ïýï = êê 1(e1 ) ï ët2 îït2 þ 【フォークト表記】 ù ïì n1 ïü é s11 s21 ù ïì n1 ïü ú ïí ïý = ê ú ïí ïý ú t û ïîïn2 ïþï êës12 s22 úû ïîïn2 ïþï ïìs ïü é n1 0 n2 ù ïï 11 ïï T ê ú s = [ m ]{s} = [s ] {n} = ê 0 n2 n1 ú íï 22 ýï ë û ïïs ïï îï 12 þï ( e2 ) 1 ( e2 ) 2 t Cauchyの応⼒公式 (3D) ïìt ( n ) ïü ét ( e ) t ( e ) t ( e ) ù ïì n ïü 1 1 ï1 ï ê1 úï 1ï 1 {t (n) ï ï } = ïíït2( n) ïýï = êêt2(e1 ) ïït ( n ) ïï êt ( e1 ) îï 3 þï ëê 3 é n1 ê T = [s ] {n} = ê 0 ê ê0 ë 垂直応⼒成分 3 2 ( e2 ) 2 ( e2 ) 3 t t t t 0 n2 0 ( e3 ) 2 ( e3 ) 3 0 0 n3 é s11 ê ú ïín ï ê = ý ú ï 2 ï ês12 ï úï ê n ï ï ï 3þ ï ës13 ûú î 0 n3 n2 n3 0 n1 s21 s22 s23 é n1 0 ë0 n2 [ m ] = êê n2 ù ú n1 úû ひずみテンソルとそのマトリックス表記 • 本来はひずみもテンソル量︓⾏列で書くと対称⾏列 2D é e11 ïìïs11 ïüï ï ï ïï ïï îïïs12 þïï ê ê e12 ë {s} = ïís22 ïý e21 ù é ex ú=ê e22 úû êëexy exy ù ú e y úû せん断応⼒成分 法線“⾏列” ü ïìïs11 ï ïï ï ï ï s22 ï ï n2 ù ïï ï ú ïs33 ï ï = [ m ]{s} n1 ú ïí ï ú ïs23 ý ï ï ï ú 0 û ïï ï ï ïïs31 ï ïï ï ï ï îïs12 ï þ 3D せん断ひずみ成分 é e11 ê ê e12 ê êe ë 13 e21 e22 e23 e31 ù éê ex ú e32 ú = êê exy ú e33 úû êêë ezx exy ey e yz • ひずみもテンソルのベクトル(フォークト)表記 応⼒“ベクトル” 垂直ひずみ成分 ìïs11 üï ïï ïï ïïs22 ïï ïï ïï ïs ï {s} = ïí 33 ïý ïïs23 ïï ïïïs ïïï ïï 31 ïï ïîïs12 ïþï ìn ï ü s31 ù ï ú ï 1 ïï s32 ú íïn2 ý úï ï ï s33 úû ï ïî ï ïn3 ï þ 垂直ひずみ成分 2D ì ïï e11 üïï ïìï ex ïüï ïìï ex ïüï ï ï ï ï ï ï í e22 ý = ïí e y ïý = ïí e y ïý ïï ïï ïï ïï ïï ïï ïîï2e21 ïþï ïîï2exy ïþï ïîïg xy ïþï é n1 ê 0 0 0 [ m ] = êê 0 n2 n3 0 0 ê0 ë n3 0 n3 n2 n1 n2 ù ú n1 ú ú 0 úû 注意︕ 3D “⼯学”せん断ひずみ成分 ìï e11 üï ìï ex üï ìï ex üï ïï ïï ïï ïïï ïï ïï ïï e22 ïïï ïïï e y ïïï ïïï e y ïïï ïï e ïï ïï e ïï ïï e ïï ïí 33 ïý = ïí z ïý = ïí z ïý ïï2e12 ïï ïï2e yz ïï ïïg yz ïï ïï ï ï ï ï ï ïï2e31 ïïï ïïï2ezx ïïï ïïïg zx ïïï ïï ï ï ï ï ï ïî2e12 ïïþ ïïî2exy ïïþ ïïîg xy ïïþ ezx ùú e yz úú ez úúû 25 26 ひずみテンソルの各種成分 様々な弾性パラメータ • 弾性係数(Elastic modulus)= ヤング係数(Youngʼs modulus)︓E テンソル表記 • ポアソン⽐(Poissonʼs ratio)︓ n • 体積ひずみ︓ eV = e11 + e22 + e33 = ex + e y + ez é e11 ê • 偏差ひずみ︓ êê êsym. ë ⾏列・ベクトル表記 e12 e22 é e e13 ù é e11 e12 e13 ù 0 0 ù é ex exy ú ê ú 1ê V ú ê e23 ú = ê ey e22 e23 ú - ê eV 0 ú = ê ú ê ú 3ê ú ê êsym. e33 úû êësym. e33 úû eV úû êësym. ë é 2e x - e y - e z ù 3exy 3ezx ú 1ê ú = êê 2e y - e z - e x 3e yz ú 3ê ú sym. 2 e e e z x y úû êë • 体積ひずみ︓ ïìï ex ïüï ïï ïï e ïïï y ïïï ïï ez ïï eV = {1 1 1 0 0 0}í ý ïïg yz ïï ïïïg zx ïïï ïï ïï ïîïg xy ïþï • 偏差ひずみ︓ ìï ex üï é 2 -1 -1 0 ex üï 0 0 ù ìï ïï ïï ê úï ï ï ï ïï e y ïï ê-1 2 -1 0 0 0 ú ïï e y ïï ê úï ï ïï ïï ï ez ï ïï ez ïï 1 êê-1 -1 2 ï 0 0 0 úú ï ï í ý= ê í ï ý ú ïïeyz ïï 3 ê 0 g 0 0 32 0 0 úï yz ï ï ï ï ï ê0 ú ïïïezx ïïï ï 0 0 0 3 2 0 ú ïg zx ï ï ê ïï ïï ï ï ï ï ê ú ïîïexy ïþï g 0 0 0 0 3 2úû ï êë 0 xy ï ï ï î þ ezx ù ú eyz ú ú ez úû • せん断弾性係数(Shear modulus)︓ G = E 2 (1 + n ) E • 体積弾性係数(bulk modulus)︓ k = l + 2 m = 3 3(1- 2n ) • ラーメ定数(Lamé constants)︓ ì nE ï ï l= ï ï (1- 2n )(1 + n ) ï í ï E ï =G m= ï ï ï î 2 (1 + n ) 静⽔圧成分 • 静⽔圧成分と偏差成分ごとの構成則︓ s = sM i + s = keV i + 2me (sM = keV ) ì ì ì1ï ü ì ì1ï ü sx ü sx ü ex ü ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï1ï ï ï sy ï ï1ï ï sy ï ey ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï sz ï ï ï ez ï ï ï1ïï ïï sz ïï ï1ï ï ï ï ï ï í ý = sM í ý + í ý = keV í ý + 2m í ýï ïs yz ï ï ï0ï ï ï ïs yz ï ï ï0ï ï ïeyz ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï s zx ï szx ï ezx ï 0ï 0ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ï ïs ï ï ï ï ï ï ï ï ï ï ï ï ïe ï ï ï ï ï ï ï0þ ï î ï0ï î î þ ï xy þ ï ïsxy þ ï ï xy þ ïï î î 偏差成分
© Copyright 2024 ExpyDoc