Freefem ++ã®ååŸãšå®è¡
Freefem ++ã¯ãæéèŠçŽ æ³ã«åºã¥ããæ°åŠçåé¡ã解決ããããã«èšèšãããããã°ã©ã ã§ãã Freefem ++ã¯ãWindowsç°å¢ãšLinuxç°å¢ã®äž¡æ¹ã§äœ¿çšã§ããŸãã å ¬åŒãŠã§ããµã€ãã¯www.freefem.org/ff++ã§ãã ãã®äŸã§ã¯ãFreefem ++ããŒãžã§ã³3.18.-1ã䜿çšãããŸããã å ¬åŒãµã€ãããããŠã³ããŒãããã¢ãŒã«ã€ããã³ãã«ã«ã¯3ã€ã®ããŒãã¢ãžã¥ãŒã«ãããããã®ç®çã¯æ¬¡ã®ãšããã§ãã
- FreeFem ++ãExeã¯ãããã°ã©ã ã®æ¬æ ŒçãªããŒãžã§ã³ã§ãããå¿ èŠã«å¿ããŠããœãªã¥ãŒã·ã§ã³ã®çµæã瀺ãã°ã©ãã£ã«ã«ãŠã£ã³ããŠã衚瀺ããŸãã å¿ èŠã«å¿ããŠãåŒã³åºããšãã«2ã€ã®ããŒãæå®ã§ããŸãã-nowaitã¯ããŠãŒã¶ãŒã«ããå®äºã確èªããã«Freefem ++ãçµäºãã-nw-ãœãªã¥ãŒã·ã§ã³ã®çµæãå«ãã°ã©ãã£ã«ã«ãŠã£ã³ããŠã®è¡šç€ºãæåŠããŸãã
- FreeFem ++-mpi.exe-MPIããŒã¹ã®ã³ã³ãã¥ãŒãã£ã³ã°ã®äžŠååçšã
- FreeFem ++-nw.exe-ã¢ããªã±ãŒã·ã§ã³ããã®åŒã³åºãã§ã¯ãçµæã®ã°ã©ãã£ãã¯åºåãç¡èŠããŸãã 圌ãããã°ã©ã ã§ã®äœæ¥ã®å®äºã®ç¢ºèªãåŸ ããªãããã«ããã«ã¯ãã³ãã³ãã©ã€ã³ã§-nowaitã¹ã€ãããæå®ããå¿ èŠããããŸãã
ããŒãã¢ãžã¥ãŒã«ã«å ããŠãã¢ãŒã«ã€ãããå¥ã®ããã°ã©ã ã®äžéšãšããŠããã¯ã°ã©ãŠã³ãã§FreeFem ++ãå®è¡ããã«ã¯ã次ã®ãã¡ã€ã«ãå¿ èŠã§ãïŒlibff.dllãlibgcc_s_dw2-1.dllãlibgfortran-3.dllãlibgoto2.dllãlibstdc ++-6.dllã
Freefem ++ããŒãã¢ãžã¥ãŒã«ãèµ·åããããšãã³ãã³ãã©ã€ã³ã«ç¹å¥ãªCã©ã€ã¯ãªããã°ã©ãã³ã°èšèªã§èšè¿°ãããã¹ã¯ãªãããã¡ã€ã«ã®ååãäžããããŸãã ã¹ã¯ãªããã§åºåæŒç®åãŸãã¯ç¹å¥ãªä¿åé¢æ°ã䜿çšããŠãçµæããã¡ã€ã«ã«æžã蟌ãã§ããã«äœ¿çšã§ããŸãã
2Däžè§åœ¢åå²
åã«ãFreefem ++ã䜿çšããŠãå¹³é¢ãæã€èŠçŽ ã§æ§æããã3次å ã¢ãã«ã®STLèšè¿°ãäœæã§ããããšã瀺ããŸããã ãã®åé¡ã解決ããã«ã¯ãé¢ã®äžè§åœ¢åå²ãå®è¡ããå¿ èŠããããŸãã Freefem ++ã䜿çšããŠãããã©ã®ããã«è¡ãããããèŠãŠã¿ãŸãããã å¢çã§å®çŸ©ãããè¡šé¢ã®äžè§åœ¢åå²ãå®è¡ããå¿ èŠããããŸãïŒå³1ãåç §ïŒã

å³ 1.è¡šé¢é å
Freefem ++ã§ã¯ãäžè§æž¬éãå®è¡ããé åã®å¢çããã©ã¡ããªãã¯åœ¢åŒã§èšå®ãããŸãã 次ã®ã³ãŒããæ€èšããŠãã ããã
int n = 5; ããŒããŒb0ïŒt = 0,1ïŒ{x = 7 * t; y = 0; } ããŒããŒb1ïŒt = 0,1ïŒ{x = 7; y = 0 + 6 * t; } ããŒããŒb2ïŒt = 0,1ïŒ{x = 7-7 * t; y = 6; } ããŒããŒb3ïŒt = 0,1ïŒ{x = 0; y = 6-6 * t; } ããŒããŒb4ïŒt = 0,1ïŒ{x = 1 + 2 * t; y = 1.5; } ããŒããŒb5ïŒt = 0,1ïŒ{x = 5; y = 1.5 + 2 * t; } ããŒããŒb6ïŒt = 0,1ïŒ{x = 5-4 * t; y = 5.5; } ããŒããŒb7ïŒt = 0,1ïŒ{x = 1; y = 5.5-4 * t; } ããŒããŒb8ïŒt = 0,1ïŒ{x = 5; y = 3.5 + 2 * t; } ããŒããŒb9ïŒt = 0,1ïŒ{x = 3 + 2 * t; y = 1.5; } ããŒããŒb10ïŒt = 0,1ïŒ{x = 3 + 3 * t; y = 0.5; } ããŒããŒb11ïŒt = 0,1ïŒ{x = 6; y = 0.5 + 3 * t; } ããŒããŒb12ïŒt = 0,1ïŒ{x = 6-1 * t; y = 3.5; } ããŒããŒb13ïŒt = 0,1ïŒ{x = 3; y = 3.5-2 * t; } ããŒããŒb14ïŒt = 0,1ïŒ{x = 5-2 * t; y = 3.5; } ããŒããŒb15ïŒt = 0,1ïŒ{x = 3; y = 1.5-1 * t; } ããããïŒb0ïŒnïŒ+ b1ïŒnïŒ+ b2ïŒnïŒ+ b3ïŒnïŒ+ b4ïŒnïŒ+ b5ïŒnïŒ+ b6ïŒnïŒ+ b7ïŒnïŒ+ b8ïŒnïŒ+ b9ïŒn ïŒ+ b10ïŒnïŒ + b11ïŒnïŒ+ b12ïŒnïŒ+ b13ïŒnïŒ+ b14ïŒnïŒ+ b15ïŒnïŒïŒ;
Freefem ++ã¯ãã¹ã«ã©ãŒåã®å€æ°ãå®çŸ©ããŸãïŒintãrealãstringãboolã å€æ°å®£èšã¯C ++ã®å Žåãšåæ§ã«å®è¡ãããå€æ°nã®å Žåãšåæ§ã«ãå€æ°ãåæåã§ããŸãã
å¢çç·ã¯ããã©ã¡ãŒã¿ãŒåãããè¡ã䜿çšãããã©ã°ã¡ã³ãã«ãã£ãŠå®çŸ©ãããŸãã å¢çã¿ã€ãã¯ããã®ç®çã®ããã®ãã®ã§ãã å¢çãã©ã°ã¡ã³ãã¯ã端ã§ã®ã¿äº€å·®ã§ããŸãã å¢çãã©ã°ã¡ã³ãã®å®£èšã«ã¯ãå¢çã®èå¥åããã©ã¡ãŒã¿ãŒå€æŽã®å¢çïŒãã®å Žåã¯ãã©ã¡ãŒã¿ãŒtïŒãããã³ãã©ã¡ãŒã¿ãŒã«å¿ããŠxããã³y座æšãå€æŽããåŒãå«ãŸããŸãã ãã®äŸã§ã¯ããã¹ãŠã®ãã©ã°ã¡ã³ãã¯ã»ã°ã¡ã³ãã§ãã
èæ ®ãããã³ãŒãã®æåŸã®æŒç®åã¯ããããã§ãããç¹å®ã®ã¿ã€ãã®ããŒã¿ã®ã°ã©ãã£ã«ã«è¡šç€ºãç®çãšããŠããŸãã ãã®å ŽåãããŒããŒã®ãã©ã°ã¡ã³ãã§æ§æãããããŒããŒã衚瀺ãããŸãã å¢çãã©ã°ã¡ã³ãã¯ã+æŒç®åã䜿çšããŠå ±éã®å¢çã«çµåãããŸãã ãã©ã°ã¡ã³ãããšã«ããã©ã°ã¡ã³ããåå²ããããŒãã®æ°ã瀺ããã©ã¡ãŒã¿ãŒã瀺ãããŸãã ãã®ãã©ã¡ãŒã¿ã¯ã以äžã®å¥ã®ã³ã³ããã¹ãã§åã³èæ ®ãããŸãã æå®ãããããããæŒç®åã®çµæã¯å³ã«ç€ºãããŠããŸãã 2ã

å³ 2.ããããæŒç®åã«ãã£ãŠè¡šç€ºãããè¡šé¢é åã®å¢çç·
次ã«ãäžè§æž¬éãå®è¡ããã³ãŒããè¿œå ããŸãã å³ 3ã¯ããã®å®è£ ã®çµæã瀺ããŠããŸãã
ã¡ãã·ã¥Th = buildmeshïŒb0ïŒnïŒ+ b1ïŒnïŒ+ b2ïŒnïŒ+ b3ïŒnïŒ+ b4ïŒnïŒ+ b5ïŒnïŒ+ b6ïŒnïŒ+ b7ïŒnïŒ+ b8ïŒnïŒ+ b9ïŒnïŒ+ b10ïŒnïŒ + b11ïŒnïŒ+ b12ïŒnïŒ+ b13ïŒnïŒ+ b14ïŒnïŒ+ b15ïŒnïŒãfixeborder = 1ïŒ; ããããïŒThïŒ;

å³ 3.äžè§æž¬éã®çµæ
ãã®ã³ãŒãã§ã¯ãã¡ãã·ã¥åã®Thå€æ°ãå°å ¥ãããŠããŸãã ã¡ãã·ã¥ã¿ã€ãã¯ãäžè§åœ¢åå²ã¡ãã·ã¥ã®ãœãããŠã§ã¢ã¢ãã«ã§ãã ãã®ã¿ã€ãã®ãªããžã§ã¯ããååŸããã«ã¯ããã®å Žåãbuildmeshé¢æ°ã䜿çšããŸãããã®é¢æ°ã«ã¯ãåå²ãããé åã®å¢çãå ¥åã«éä¿¡ãããŸãã buildmeshé¢æ°ã«ã¯ããªãã·ã§ã³ã®fixeborderãã©ã¡ãŒã¿ãŒãæž¡ãããšãã§ããŸãããã®ãã©ã¡ãŒã¿ãŒã䜿çšãããšãã©ã€ã³äžã®ãã€ã³ããäžè§æž¬éããã»ã¹äžã«å€æŽãããªãããšãä¿èšŒãããŸãã 2çªç®ã®æŒç®å-ãããã-ãã®å Žåãå ¥åã§meshã¿ã€ãã®ãªããžã§ã¯ããåãåããã°ã©ãã£ãã¯ã¹ãŠã£ã³ããŠã«èŠçŽ ã®ã°ãªããã衚瀺ããŸãïŒå³3ïŒã
ãã§ã«ç€ºããããã«ãããŒããŒã¯ãããŒããŒã¿ã€ãã®ããŒããŒã®ãã©ã°ã¡ã³ãã®åèšãšããŠè¡šãããŸãã ããã§ã¯ãåãã©ã°ã¡ã³ãã«æå®ããããã©ã¡ãŒã¿ãŒã«ã¯2ã€ã®ç®çããããŸãã ãŸããã°ãªãããæ§ç¯ããããã«å¢çã®æçãããã€ã®éšåã«åå²ãããŠãããã瀺ããŸãã å¢çãã©ã°ã¡ã³ãã®åéšåã¯ã圢æãããã¡ãã·ã¥ã®äžè§åœ¢ã®èŸºã«ãªããŸãã 第äºã«ããã©ã¡ãŒã¿ãŒã®ç¬Šå·ã¯ãäžè§æž¬éãåããé åã瀺ããŸãã ãã©ã¡ãŒã¿ãæ£ã®å Žåãå¢çãã©ã°ã¡ã³ãã®å·ŠåŽã§äžè§åœ¢åå²ãå®è¡ãããŸãã è² ã®å Žåãå¢çã®å³åŽã§äžè§åœ¢åå²ãå®è¡ãããŸãã ãããäŸã§èª¬æããŸãããã äžèšã®ã³ãŒãã§æ¬¡ã®ããã«å¢çãæå®ãããå ŽåïŒb0ïŒnïŒ+ b1ïŒnïŒ+ b2ïŒnïŒ+ b3ïŒnïŒ+ b4ïŒnïŒ+ b5ïŒ-2ïŒ+ b6ïŒnïŒ+ b7ïŒnïŒ + b8ïŒnïŒ+ b9ïŒ-2ïŒ+ b10ïŒnïŒ+ b11ïŒnïŒ+ b12ïŒnïŒ+ b13ïŒ-2ïŒ+ b14ïŒ-2ïŒ+ b15ïŒnïŒãb5ãb9ã b13ãšb14ã¯è² ã®å€ãæã€2ã€ã®ã»ã°ã¡ã³ãã«åå²ãããå³3ã«ç€ºãããã«äžè§åœ¢åå²ãå®è¡ãããŸãã 4ã

å³ 4.空ã®ãµããã¡ã€ã³ã䜿çšããäžè§åœ¢åå²
ã¿ã€ãmeshã®å€æ°ãã«ãŒãæŒç®åãããã³ãã¡ã€ã«ãžã®åºåã䜿çšããæäœã瀺ãã³ãŒããè¿œå ããŸãã
ofstream foutïŒ "triangulation.out"ïŒ; fout.precisionïŒ14ïŒ; fout << Th.nt << endl; forïŒint i = 0; i <Th.nt; i ++ïŒ { out << Th [i] [0] .x << "" << Th [i] [0] .y << "" << Th [i] [1] .x << "" << Th [i] [1] .y << "" << Th [i] [2] .x << "" << Th [i] [2] .y << "" << endl; }
ããŒã¿ããã¡ã€ã«ã«åºåããããã«ãofstreamã¿ã€ããæäŸãããŸããããã¯ãC ++ã®fstreamã©ã€ãã©ãªããã®ãã¡ã€ã«åºåã¹ããªãŒã ã«é¡äŒŒããŠããŸãã ãã¡ã€ã«å€æ°ãåæåãããšãã¯ããã¡ã€ã«åãæå®ããå¿ èŠããããŸãã ãã¡ã€ã«ã«ããŒã¿ãè¿œå ããã ãã§ããå Žåã¯ã2çªç®ã®è¿œå åæåãã©ã¡ãŒã¿ãŒãæå®ããå¿ èŠããããŸãã ãã¡ã€ã«å€æ°ã䜿çšããŠãå€ãã®æäœãå®è¡ã§ããŸãã ãã®äŸã§ã¯ã粟床é¢æ°ã¯ãå°æ°ç¹ã®åŸã«è¡šç€ºãããæ¡æ°ãèšå®ããŸãã iostreamã©ã€ãã©ãªã®ãããã¥ã¬ãŒã¿ãŒãšåæ§ã«ãåºå圢åŒãå¶åŸ¡ããé¢æ°ãããã€ããããŸãã <<æŒç®åã䜿çšãããšãã¹ã«ã©ãŒåã®å€æ°ã®å€ããã¡ã€ã«ã«åºåã§ããŸãã æååã§ã¯ãè¡æ«æåã\ nãã䜿çšãããããã®ç®çã®ããã«ã°ããŒãã«å€æ°endlãåºåã§ããŸãã
äžèšã®ã³ãŒãã«ã¯ãC ++ã®forã¹ããŒãã¡ã³ãã®ããžãã¯ãå®å šã«ç¹°ãè¿ãforã«ãŒãã¹ããŒãã¡ã³ãããããŸãã ã€ã³ã¯ãªã¡ã³ãæŒç®åãšãã¯ãªã¡ã³ãæŒç®åãåæ§ã®C ++æŒç®åãç¹°ãè¿ããŸãã
Freefem ++ã¯ãã¡ãã·ã¥ã¿ã€ãã«ãã£ãŠè¡šãããèŠçŽ ã®ã¡ãã·ã¥ã®ããŸããŸãªããããã£ãžã®ã¢ã¯ã»ã¹ãæäŸããŸãã ããã§ã¯ãFreefem ++ã2次å ã¡ãã·ã¥ã¿ã€ãmeshãš3次å ã¡ãã·ã¥ã¿ã€ãmesh3ãæäœããããã®åãã€ã³ã¿ãŒãã§ãŒã¹ãæäŸããããšã«æ³šæããŠãã ããã ãããã£ãŠãããã§ã¯ãåŸã§mesh3ã«ã€ããŠèª¬æãç¹°ãè¿ããªãããã«ã瀺ãããŠãã2ã€ã®ã¿ã€ãã®ãã®ã€ã³ã¿ãŒãã§ã€ã¹ãæ€èšããŸãã äŸãããããããã«ãntããããã£ã¯ã°ãªããèŠçŽ ïŒã¡ãã·ã¥ã®å Žåã¯äžè§åœ¢ãã¡ãã·ã¥3ã®å Žåã¯åé¢äœïŒã®æ°ãè¿ããŸãã ã°ãªãããã€ã³ãã®æ°-nvããããã£ãå¢çèŠçŽ ã®æ°-nbeãååŸã§ããŸãã
ã¿ã€ãmeshãŸãã¯mesh3ã®ãªããžã§ã¯ãã«ã¯ãè§æ¬åŒ§ "[]"ã«ããã€ã³ããã¯ã¹ä»ããšæ¬åŒ§ "ïŒïŒ"ã«ããã€ã³ããã¯ã¹ä»ãã®2ã€ã®ã¿ã€ãã®ã€ã³ããã¯ã¹ä»ããé©çšã§ããŸãã æåã®ãã®ã¯ãæå®ãããã€ã³ããã¯ã¹ãæã€ã°ãªããèŠçŽ ïŒã¡ãã·ã¥ã®å Žåã¯äžè§åœ¢ãmesh3ã®å Žåã¯åé¢äœïŒãæäŸããŸãã ãããã£ãŠãTh [i]ã¯ã°ãªããèŠçŽ ïŒãã®äŸã§ã¯äžè§åœ¢ïŒã§ããããã®èŠçŽ ã«æäŸãããç¹å®ã®é¢æ°ãé©çšãããŸãã ãïŒïŒã-ã€ã³ããã¯ã¹ä»ãã¯ãæå®ãããã€ã³ããã¯ã¹ãæã€é ç¹ãæäŸããŸãã 座æšãååŸããæäœãé ç¹ã«é©çšã§ããŸãã 次ã®é¢æ°ãã°ãªããèŠçŽ ã«é©çšãããŸããã€ã³ããã¯ã¹ãä»ããŠèŠçŽ ã®é ç¹ãååŸããã©ãã«ãååŸããŸãã
3Dã¡ãã·ã¥
Freefem ++ã¯ã3Dã¡ãã·ã¥ã®mesh3ã®ã¿ã€ããå®çŸ©ããŸãã ãã®ãããªã°ãªããã¯ãçæé¢æ°ã䜿çšããŠååŸã§ããŸãã ããšãã°ãbuildlayersïŒïŒé¢æ°ã䜿çšãããšãZ軞ã«æ²¿ã£ãŠ2Däžè§åœ¢åå²ãåŒã£åŒµã£ãŠ3Dã¡ãã·ã¥ãäœæã§ããŸãããFreefem ++ã«ã¯ç¬èªã®ãžã§ãã¬ãŒã¿ãŒããããŸããã ãããã®ç®çã®ããã«ããµãŒãããŒãã£ã®TetGenãžã§ãã¬ãŒã¿ãŒã䜿çšããïŒå ¬åŒãŠã§ããµã€ãwias-berlin.de/software/tetgen ïŒã察å¿ããFreefem ++é¢æ°ã¯ãã®ãžã§ãã¬ãŒã¿ãŒãžã®ããã°ã©ã ã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŸãã TetGenã¯ãèè ã®èš±å¯ãªãã«åçšãããžã§ã¯ãã§äœ¿çšããããšã¯ã§ããŸããã ãã ãããã®ãããªã©ã€ã»ã³ã¹ãåé¡ãåŒãèµ·ããå Žåã¯ãå¥ã®ã°ãªãããžã§ãã¬ãŒã¿ãŒã䜿çšã§ããŸãã Freefem ++ã«ã¯ãã¡ãã·ã¥åœ¢åŒã«æºæ ãããã¡ã€ã«ãã3Dã¡ãã·ã¥ãã€ã³ããŒãããæ©èœããããŸãã ã¡ãã·ã¥ãã¡ã€ã«ã®åœ¢åŒã¯æ¬¡ã®ãšããã§ãã
- ãã©ãŒãããããŒãžã§ã³ïŒMeshVersionFormatted 1ïŒãã¹ããŒã¹ãã£ã¡ã³ã·ã§ã³ïŒDimension 3ïŒã«é¢ããæ
å ±ã¯ããã¡ã€ã«ã®å
é ã«èšé²ãããŸãã
MeshVersionFormatted 1 次å 3
- VerticesããŒã¯ãŒãã®åŸã«ââãã°ãªããé ç¹ã®æ°ã瀺ãããXãYãZ座æšãšé ç¹ã©ãã«ã瀺ãããŠããé ç¹ããªã¹ããããŸãã
é ç¹ 65 7 5 1.5 0 7 3 1.5 0 7 3 0.5 0 7 5 3.5 0 ...
- TetrahedraããŒã¯ãŒãã®åŸã«ââãã°ãªããèŠçŽ ã®æ°ã瀺ããã4ã€ã®é ç¹çªå·ãšã©ãã«ãæžã蟌ãŸããèŠçŽ ããªã¹ããããŸãã
åé¢äœ 185 52 56 49 50 0 3 18 14 61 0 47 64 57 54 0 ...
- TrianglesããŒã¯ãŒãã®åŸã«ââãå¢çäžè§åœ¢ã®æ°ãèšé²ãããŸãã åäžè§åœ¢ã«ã€ããŠããããã®äžè§åœ¢ã®é ç¹ã§ããã°ãªããããŒãã®é ç¹ã®çªå·ããªã¹ããããå¢çã©ãã«ã瀺ãããŸãã
äžè§åœ¢ 96 2 3 8 2 2 8 1 2 4 1 7 2 ...
- ãã¡ã€ã«ã¯EndããŒã¯ãŒãã§çµäºããŸãã
ã¡ãã·ã¥ãã¡ã€ã«ã¯ããã¡ã€ã«åãæå®ããreadmesh3é¢æ°ã䜿çšããŠã€ã³ããŒããããŸãã
mesh3 Th; Th = readmesh3ïŒ "example3d.mesh"ïŒ; ããããïŒThïŒ;
ã¡ãã·ã¥ãã¡ã€ã«ããã¡ãã·ã¥ãã€ã³ããŒãããã«ã¯ãåé¢äœã®é ç¹çªå·ã®é åºãéèŠã§ãã Freefem ++ãœãŒã¹ã³ãŒãã®Mesh3dn.hppãã¡ã€ã«ã«ã¯ã枬å®ïŒïŒåé¢äœã®äœç©ãèšç®ããã¡ãœãããæã€DataTetæ§é ããããŸãã ã¡ãã·ã¥ãã¡ã€ã«å ã®åé¢äœã®é ç¹ãèšç®ãããããªã¥ãŒã ãè² ã«ãªãããã«ç¶ãå ŽåãFreefem ++ã¯å€±æããŸãã ãã®ããããã®ç¶æ³ãçºçããªãããã«ãã¡ãã·ã¥ãã¡ã€ã«ã®é ç¹ããªã¹ãããå¿ èŠããããŸãã
å¿ èŠã«å¿ããŠãããããé¢æ°ã䜿çšããŠã°ã©ãã£ãã¯ãŠã£ã³ããŠã«ã°ãªããã衚瀺ã§ããŸãïŒå³5ãåç §ïŒã

å³ 5.ããããæ©èœãåãã3Dã¡ãã·ã¥è¡šç€º
埮åæ¹çšåŒç³»ã®è§£
Freefem ++ã®äž»ãªç®çã¯ãæéèŠçŽ æ³ã䜿çšããŠå埮åæ¹çšåŒç³»ã解ãããšã§ãã ãã®ãããæ¹çšåŒç³»ã«å«ãŸããé¢æ°ã¯æéèŠçŽ ã°ãªããã§æ±ºå®ãããŸãã Freefem ++ã§ã¯ãFE空éïŒæéèŠçŽ 空éïŒã®ã¿ã€ããå€å¥ã§ããŸãã 空éã®çš®é¡ã«å¿ããŠãç¹å®ã®ç©ºéã®æ©èœã®ãªããžã§ã¯ããå°å ¥ãããŸãã äŸãã°
ãã§ã¹ããŒã¹VhïŒThãP23dïŒ; Vh f = x ^ 2 + y ^ 2 + z ^ 2;
ããã§ãVhã¯ã°ãªããThäžã®ç©ºéã®ã¿ã€ããfã¯ãã®ç©ºéäžã®é¢æ°ã§ãã
æéèŠçŽ 空éã®åã宣èšãããšããèŠçŽ ã®åºç€ã瀺ãããŸãã P03d-åºåçå®æ°ãP13d-åºåçç·åœ¢ãP23d-åºåç2次ãªã©ã®å€ãåãããšãã§ããŸãã å³ å³6ã¯ã2次åºåºãæã€äŸã®é¢æ°ã瀺ããŠããŸãã 7-ç·åœ¢ããŒã¹ãšé¡èãªæªã¿ãæã€åãé¢æ°ã

å³ 6.äºæ¬¡åºåºããã€æéèŠçŽ é¢æ°

å³ 7.ç·åœ¢åºåºãæã€æéèŠçŽ é¢æ°
Freefem ++ã®å埮åæ¹çšåŒç³»ã解ãã«ã¯ãåé¡ã®å€åã¹ããŒãã¡ã³ããæå®ãããåé¡ã解決ããããšãç®çã®é¢æ°ã圢æãããŸãã 次ã®ã¹ã¯ãªããã«åºã¥ããŠãå€åå®åŒåããã³ãã®ä»ã®ããã°ã©ãã³ã°èŠçŽ ã®èšè¿°æ¹æ³ãæ€èšããŸãã
mesh3 Th = readmesh3ïŒ "example3d.mesh"ïŒ; ãã§ã¹ããŒã¹VVhïŒThã[P2ãP2ãP2ãP1]ïŒ; ãã§ã¹ããŒã¹VhïŒThãP23dïŒ; ãã¯ãGradïŒuïŒ[dxïŒuïŒãdyïŒuïŒãdzïŒuïŒ] // ãã¯ãdivïŒu1ãu2ãu3ïŒïŒdxïŒu1ïŒ+ dyïŒu2ïŒ+ dzïŒu3ïŒïŒ// VVh [u1ãu2ãu3ãp]; VVh [v1ãv2ãv3ãq]; func fup =ïŒ1-xïŒ*ïŒxïŒ* y *ïŒ1-yïŒ* 16; ProbïŒ[u1ãu2ãu3ãp]ã[v1ãv2ãv3ãq]ïŒ=ã解ããŸã int3dïŒThãqforder = 3ïŒïŒGradïŒu1ïŒ '* GradïŒv1ïŒ+ GradïŒu2ïŒ' * GradïŒv2ïŒ+ GradïŒu3ïŒ '* GradïŒv3ïŒ -divïŒu1ãu2ãu3ïŒ* q-divïŒv1ãv2ãv3ïŒ* p + 1e-10 * q * pïŒ +ãªã³ïŒ5ãu1 = 0ãu2 = 0ãu3 = 0ïŒ + onïŒ1ãu1 = fupãu2 = 0ãu3 = 0ïŒ; ããããïŒpãnbiso = 10ïŒ;
ãã®äŸã§ã¯ã次ã®æ§æãæ瀺ãããŠããŸãã ãã¯ãã«å Žã«ã¯æéèŠçŽ 空éãæå®ã§ããŸãã ãã®äŸã§ã¯ã空éVVhã¯4ã€ã®æåãæã€ãã¯ãã«ãã£ãŒã«ãã«å¯ŸããŠæå®ãããVhã¯ã¹ã«ã©ãŒãã£ãŒã«ãã«å¯ŸããŠæå®ãããŸãã
Freefem ++ã¯ãmacroããŒã¯ãŒãã§å§ãŸããã¯ãã宣èšããæ©èœãæäŸããŸãã ãã¯ã眮æäžã«ããã¯ãåã¯ãã¯ãæ¬äœã«çœ®ãæããããä»®ãã©ã¡ãŒã¿ãŒãå®éã®ãã©ã¡ãŒã¿ãŒã«çœ®ãæããããŸãã ãã®äŸã«ã¯ã2ã€ã®ãã¯ãïŒGradïŒuïŒãšdivïŒu1ãu2ãu3ïŒããããŸãã ãããã®ãã¯ãã¯ç¹å¥ãªè¡šèšdxãduãdzã䜿çšããããããã®åº§æšã§å·®åã瀺ããŸãã
é¢æ°ã¯funcããŒã¯ãŒãã䜿çšããŠå®£èšãããŸãã ããã«ãé¢æ°ã®åŒæ°ãäºçŽèªã§ããxãyãzã§ç€ºãããŠããå Žåãä»®ãã©ã¡ãŒã¿ãŒãæå®ããå¿ èŠã¯ãããŸããã
ãœã«ããŒæ§é ã¯ãåé¡ã®å€åå®åŒåãšè§£ãèšé²ããããã«äœ¿çšãããŸãã ã¿ã¹ã¯åã®åŸã«ãäžæãªé¢æ°ãšãã¹ãé¢æ°ããªã¹ããããŸãã ãã®å ŽåãProbåé¡ã«ã¯ã空éVVhã§å®çŸ©ããã2ã€ã®ãã¯ãã«é¢æ°ããããŸãã[u1ãu2ãu3ãp]-æãŸãããã®ãš[v1ãv2ãv3ãq]-è©Šè¡ã®ãã®ã çå·ã®åŸã«ãå€åå®åŒåã®åŒãèšè¿°ãããŸãã ãã®æç¹ã§ã®äŸã«ã¯ã2ã€ã®ç¹å®ã®Freefem ++ã³ã³ã¹ãã©ã¯ãããããŸãã 3次å ç©åãèšé²ããã«ã¯ãç¹å¥ãªint3dæ§é ã䜿çšããŸãããã®æ§é ã§ã¯ãç©å空éïŒãã®å Žåã¯ã°ãªããThïŒãæå®ãããŸãã ããã«ãããã§ã¯ã¢ãã¹ãããã£ã§ç€ºãããè¡å転眮æŒç®åã䜿çšãããŸãã å€åå®åŒåã®çµããã«ãå¢çæ¡ä»¶ã解ææ§é ã«æžã蟌ãŸããŸãã å¢çæ¡ä»¶ã¯ç¹å¥ãªåèªonã§ç€ºããããã®åŸãã¯ã©ã¹mesh3ã®ãªããžã§ã¯ãããã®é åã«å¯Ÿå¿ããã©ãã«ãæ¬åŒ§ã§ç€ºãããŸãã ãããã®ã©ãã«ãã¡ãã·ã¥ãã¡ã€ã«ã«æžã蟌ãæ¹æ³ã«ã€ããŠã¯ãäžèšã§èª¬æããŸããã ãªãŒãžã§ã³ã«ã¯ãç®çã®ãã£ãŒã«ãã®ã³ã³ããŒãã³ãããªã¹ããããããããã«å¶çŽãæžã蟌ãŸããŸãã å¶çŽã¯ä»»æã®åŒã§ãã ãã®äŸã§ã¯ãæ°å€ãšfupé¢æ°ãå¶çŽãšããŠæå®ãããŠããŸãã
é¢æ°plotã䜿çšããŠãã£ãŒã«ãã³ã³ããŒãã³ããåºåããããšãå³3ã«ç€ºãããã«ãçå€é¢ãæã€å®æããèŠçŽ 空éãã°ã©ãã£ãã¯ãŠã£ã³ããŠã«è¡šç€ºãããŸãã 8.çå€é¢ã®æ°ã¯ãã¹ã¯ãªããã®nbisoãã©ã¡ãŒã¿ãŒã§èšå®ããã°ã©ãã£ãã¯ãŠã£ã³ããŠã§æåã§å€æŽã§ããŸãã

å³ 8.決å®ã®çµæ
çµè«
Freefem ++ã¯ãæ°åŠçåé¡ã解決ããããã®åŒ·åãªããŒã«ã§ãããåžè²©ã®ã¢ããªã±ãŒã·ã§ã³ãå«ãã¢ããªã±ãŒã·ã§ã³ã®éçºã«äœ¿çšã§ããŸãã åŸè ã®å ŽåãFreefem ++ã®äŸ¿å©ãªæ©èœã¯ãæéèŠçŽ ã®3Dã¡ãã·ã¥ãã€ã³ããŒãã§ããããšã§ããããã«ããããµãŒãããŒãã£ã®ã¡ãã·ã¥ãžã§ãã¬ãŒã¿ãŒã䜿çšã§ããŸãã