비선형 소스텀의 처리

글쓴이
guri
등록일
2007-07-30 11:57
조회
4,244회
추천
0건
댓글
7건
요 아래에 Floating point error에 대해 글 올렸던 사람입니다.

아직까지 해결이 되지 않아서 생성항 코드를 조금씩 modify하면서 원인을 파악중인데요.
대략적으로 원인이 두 가지 정도인것 같습니다.

양의 지수함수항과 종속변수의 비선형 항...

지수함수항의 경우 음의 항일 경우 에러가 발생치 않는데, 양의 항일 경우 에러가 나는것 같아서...
exponential기호를 빼고 돌려보니 에러가 나질 않습니다.

종속변수의 0.25제곱항도 제곱수를 빼고 돌려보니 역시 돌아갑니다.

FLUENT Code의 이런 비선형 소스텀은 어떻게 처리하나요?
FLUENT UDF매뉴얼에는 자동적으로 처리된다고 읽은것 같은데...제가 잘못 이해한 것 같습니다.


P.S.
확인해 보니 지수함수항이 생성항의 종속변수와는 관련이 없는데도 에러가 생기는 것 같기도 하고...
아닌것 같기도 하고... 아~ 미치겠네요

  • 돌아온백수 ()

      글쎄요. math subroutine 들을 어떤 것을 사용하시는 지 모르지만, 어차피 지수함수 계산하는 거라면, 큰 차이가 없을텐데요....

  • 로타리 ()

      수치적인 오류가 만들어지는 원인은 매우 다양합니다.
    루트함수내에 음의 값, 지수함수에 매우 큰 값, 분모에 0에 가까운 값. 등등.
    이런 값들이 왜 계산 되느냐는 기본 방정식 자체가 differential volume을 대상으로 하기 때문에 물리적인 구성 방정식에서 어쩌면 필연적으로 나타날 수 밖에 없는 거지요.

    이럴 경우, 수치적인 안전장치를 곳곳에 두게 됩니다.
    구체적으로는 min, max 함수등을 쓰는 건데요. 물리적으로 타당한 범위내에 각 인자, 변수들이 위치하게끔 해야 합니다.
    그리고 좀 더 나아가면, 어떤 인자의 레짐이 바뀔때 존재하는 불연속점에서 인자 상호간의 물리성이 깨지는 경우도 생깁니다.

    0.0 이 0.0이 아니고, 1.0이 1.0이 아닌 수치의 세계에서는 되도록이면 결정 변수는 integer 형태로 유지하는 것이 좋습니다. if 문 안에 실수를 써서 결정하는 일은 되도록 피하라는 것이죠.

    대략 생각나는 일반적인 수치오류에 대해서 써 봤는데요. 저마다 처한 문제가 다를 것이므로 꼭 맞는 처방은 아닐 것입니다.
    조그마한 팁이나마 되었으면 합니다.

  • guri ()

      조언 감사드립니다...

    문제점을 파악 못 한채 계속 겉만 도는 느낌이네요~

  • cchem ()

      몇몇 compiler는 floating point exception을 check하는 compilation flag(s)를 제공해 주는데, 한번 시도해 보셨는지요?

    (그런데, 소스텀이 무슨의미이지? Source term으로 이해 했는데...맞는지요?)

  • guri ()

      아 죄송합니다. Source term 맞습니다. 생성항이라고 하던데요... ^^;;

    FLUENT에 그런 기능이 있는지는 잘 모르겠습니다. 워낙 초보라서요...
    한번 찾아보도록 하겠습니다. 감사합니다.

  • 계산쟁이 ()

      플루언트라면 전산유체관련 소프트웨어일 것이고 거기에서 소스텀이라면 뭔가 반응식이 아닌가 싶네요. 어쨋거나 소스텀이 지수함수형태로 되어 있다면 수렴을 안할 가능성이 높습니다. 아시다시피 지수함수는 지수의 작은 변화도  큰 변화를 초래하게 됩니다.
    지수함수에서 음의 항이라면 그 값이 지 아무리 커봐야 0으로 수렴할 테지만 만약 지수함수에서 양의 값이 들어가면 지수가 약간만 변해도 엄청나게 커지고 그경우에는 컴퓨터에서 처리할 수 없을만큼 큰 값이 들어갈 수 있습니다. 거기다가 양의 지수값이 다른 값을 크게 만들어준다면 항상 발산할 것 같습니다.
    일반적으로 전산유체에서 사용하는 지수함수값은 선형화시키면 발산되는  양을 상당히 줄일 수 있습니다. 어떤 값을 중심으로 지수함수를 선형화시키면 그 어떤 값에서 멀어지는 경우에는 오차가 클 수 있습니다만 그건 다른 방법으로 해결해야 할 것 같습니다.
    보통 선형화를 한 다음에 underrelaxation factor를 적절히 조절하면 수렴시킬 수 있을 거라고 생각합니다.

  • 계산쟁이 ()

      참 지수함수에 양의 지수가 반드시 들어가야 하나요? 그런 경우에는 문제가 복잡해 지는데요. 양의 지수가 반드시 들어가는게 아니라 계산중 "임시로" 들어갈 수도 있는 항이라면 if 문 같은 걸 써서 양의 값이 들어가는 경우에는 지수함수의 값이 리턴되지 않도록 하는 것도 하나의 팁이겠네요.
    소스텀에 양의 지수가 들어가는 경우는 거의 없다고 저는 알고 있습니다만.

목록


과학기술Q&A

게시판 리스트
번호 제목 글쓴이 등록일 조회 추천
4284 유기합성물중 존재하는 소량의 물의 존재 확인 댓글 3 공부하자 12-21 2420 0
4283 물리량의 무차원화에 대하여 타임스케일 10-09 3180 0
4282 국가 단위의 개발 사업(발사체, 전투기, 미사일 등)에서의 정출연과 기업 각각의 역할에 대한 궁금증 댓글 10 붉은밭 03-06 6407 0
4281 positively charged particle 종류.. 댓글 1 화공대학생 10-06 2838 0
4280 XRD JCPDS CARD NO.를 오픈소스 넘버로 찾고 싶습니다. 댓글 1 공부하자 09-28 6839 0
4279 반도체 소자(DRAM, NAND Flash) 워드라인과 비트라인에 사용되는 물질 회사공돌이 06-16 3605 0
4278 회로, 전자공학관련 Q&A 사이트 추천해주세요 겸손 04-13 3929 0
4277 MIM capacitor 전기적특성 측정방법 댓글 2 회사공돌이 04-01 5703 0
4276 분말가루를 멀리보내고 싶습니다. ibyun 03-16 3728 0
4275 LDO 의 PSRR 에 관한 공부를 하던 도중 궁금한 것이 생겼습니다. 전자공공재 02-13 3102 0
4274 동영상 코덱(h264)을 공부하고 있습니다. 댓글 2 pyong 01-23 3705 0
4273 국내에서 의료용 폴리카보네이트 생산하는곳이 있을까요? kizer 12-13 2841 0
4272 JK플립플롭 문제 질문합니다. 댓글 1 막하자 11-19 5274 0
4271 초음파 용탕 처리 관련 질문 아자로 10-16 3018 0
4270 500w모터로 음료캔을 압축시키는게 가능할까요? 댓글 2 무백 10-02 3685 0
4269 반도체 공정과정 중에!! 역추적 댓글 7 mikamikaa 09-10 5484 0
4268 삼성전자 회로설계 댓글 2 jggee 08-15 8169 0
4267 아날로그 반도체와 아날로그 회로 설계 댓글 4 jggee 08-07 6830 0
4266 거대과학시설을 완공하기까지의 일련의 과정이 궁금합니다. 댓글 3 붉은밭 07-05 5262 0
4265 배달 물류 파이프라인에 대한 제 상상입니다 댓글 4 날아오르닷 07-01 4511 0


랜덤글로 점프
과학기술인이 한국의 미래를 만듭니다.
© 2002 - 2015 scieng.net
모바일 버전으로 보기