‘좋은 Mesh’에 대한 5가지 오해

출처: https://support.functionbay.com/ko/technical-tip/single/33/%EC%A2%8B%EC%9D%80-mesh%EC%97%90-%EB%8C%80%ED%95%9C-5%EA%B0%80%EC%A7%80-%EC%A3%BC%EC%9A%94-%EC%98%A4%ED%95%B4

#1. 좋은 mesh는 CAD형상에 가까운 형상이어야 한다. (Good mesh must follow CAD model well.)
좋은 mesh는 CAD형상에 가까워야 하는 것이 아니라, 물리 문제를 풀 수 있어야 한다.
너무 세세한 부분은 해석에 필요하지 않으며 해석에 불필요한 영향을 끼칠 뿐이다.
따라서 좋은 Mesh는 CAD모델을 단순화하고 물리적인 요소에 기반하여 노드가 위치해야 한다.

예를 들어, 시뮬레이션에 별 영향을 주지 않는 구멍이나, 필렛(Fillet)을 비롯한 형상은 Mesh생성에 오히려 악영향을 줄 수 있다.
이러한 불필요한 형상 데이터를 단순화한 후 Mesh를 하면 좋다.
RecurDyn에서는 이를 위해 Delete Face, Delete Edge 등의 기능을 이용하여 불필요한 형상을 제거한 후 Mesh를 할 수 있게 해준다.

#2. 좋은 mesh는 언제나 좋다. (Good mesh is always good.)
많은 CAE 사용자들은 고품질의 mesh를 얻기 위해 meshing size를 변경하고, 형상을 나누고, mesh quality 체크 기능을 이용하여 품질을 확인한다.
이는 필요한 과정이지만, 과해서는 안된다.

예를 들어, 에어포일 주변의 유동과 힘을 완벽하게 계산할 수 있는 좋은 mesh를 생성했다고 하자.
그리고 만일 Attack angle을 0도에서 45도로 변경한다고 하면 동일한 mesh가 여전히 좋은 mesh라고 할 수 있는가? 그렇지 않을 것이다.

경계조건을 바꾸거나, 하중 조건을 바꾸거나, 해석 타입을 바꾸거나, 유동 모델을 바꾸게 되면 좋은 mesh가 안좋은 mesh가 될 수도 있다.

#3. 6면체(Hexa) 요소가 4면체(Tetra)요소보다 항상 좋다. (Hexahedron is always better than tetrahedron.)
대부분의 오래된 교과서에서는 hexa (quad) mesh가 tetra (tri) 보다 좋다고 이야기한다. 그리고 tetra (tri) 요소를 쓰면 더 큰 수치 에러가 발생할 수 있다는 것을 보여준다.
15~20년 전에는 이것이 참이었을 수도 있지만, 지금은 대부분의 경우 Hexa mesh에 장점이 없다.
tetra가 여전히 더 많은 계산 리소스를 사용하지만, 대신 mesh 생성 시간 절감을 통해 보상받을 수 있다.

대부분의 FEA, CFD 사용자에게 있어서, 만일 형상이 다소 복잡하다면, hexa mesh는 단순히 시간 낭비일 수 있다.

#4. auto-mesh로는 좋은 mesh를 생성할 수 없다. (Good mesh can only not be generated by automatic meshing.)
매일 소프트웨어를 사용하고, 수년간 비슷한 형상으로 작업을 하는 능숙한 사용자들의 경우에는 수작업을 활용한 Mesh생성이 유리할 수 있지만,
대부분의 비숙련 사용자들에게는 auto-mesh로도 상당히 좋은 품질의 mesh를 생성할 수 있다.

#5. 좋은 mesh는 cell과 node 수가 많아야 한다. ( Good mesh must have a large cell/node count.)
HPC에 대한 접근이 용이해지면서 학생들조차도 1천만~2천만개의 요소짜리 CFD 문제를 풀려고 한다. 대부분의 CAE사용자들의 눈에는 많은 수의 요소는 곧 높은 신뢰도를 의미하며 모든 물리 문제를 풀 수 있을 것처럼 보인다.
하지만 조밀한 mesh가 항상 좋은 mesh를 의미하진 않는다. mesh의 목적은 이상화된 위치에서 결과를 얻는 것이다. 좋은 mesh는 목적에 부합하는 mesh이다. 따라서 결과가 물리적으로 옳고, 목적에 맞는 정확도를 보여준다면 사용된 mesh는 충분히 좋다고 할 수 있다.
오히려 조밀한 mesh가 해석결과를 나쁘게 만들기도 한다.

현재 CAE는 여전히 mesh의 영향을 받고 있으며, 좋은 mesh는 다음과 같아야 한다.
– 타겟 물리 문제를 풀 수 있어야 함
– 솔버가 계산 실패하지 않을 정도의 합리적인 품질
– 물리문제에 기반한 형상 단순화
– 문제에 따라 품질을 결정해야 함
– 풀고자 하는 문제의 요구조건을 만족해야 함

나의 가장 오래된 컴퓨터

삼보에서 판매된 인텔 8088 CPU가 탑재된 젬파워 디럭스 XT 모델이다.
물론 정비를 다 해놓아서 깔끔히 잘 돌아간다.

이 모델은 네이버 카페 [도스 박물관] 에도 올려 두었다..
https://cafe.naver.com/olddos

전면이다.. 아주 심플하다.
3.5인치 FDD, 5.25인치 FDD 뿐.. ^^

이건 윗면.. 요즘에 본체의 각종 포트및 구멍 조차 없는 아주 심플한 본체다..

요건 뒷면..
하드대신에 CF카드를 사용하도록 CF2IDE를 장착하고.. CF카드를 달아주었다.
사블 2.0 (CT1350B) 을 꼽아두었고.. 애드립 음원을 아주 잘 지원한다..
그리고 본래 달려있던 허큘리스 카드를 빼버리고.. 8bit 슬롯을 지원하는 VGA카드로 교체하였다.

이제 상판을 벗겨내면..

SBC 보드인데.. 이게 핵심인 인텔의 8088 CPU이다..
물론 인텔의 라이센스를 받아 지멘스에서 만든듯하다.

다음 RTC 밧데리가 방전이 되어서 코인 밧데리를 꼽을수 있게 정비하였다.

Trident VGA카드.. 8비트 슬롯을 지원해서 구매해서 꼽았다.

XTIDE이다. 이건 IDE 장치를 지원하지 않는 XT에 꼽아서 IDE 하드나 CD롬을 사용할수 있다.
물론 여기에 CF2IDE 장치를 꼽아놨다.

사블 2.0 이다.. 아주 레어한.. 놈이다.

실제 작동 동영상입니다.

C용 List/Hash 라이브러리 테스트

Collections-C 라는 라이브러리가 있음. (https://github.com/srdja/Collections-C)
이 라이브러리는 hash, list등.. 유용한 C용 함수를 제공하는 꽤 괜찮은 라이브러리라 생각됨.

아래는 list를 테스트 해봄.

#include "src/common.c"
#include "src/list.c"

static List *list1;

typedef struct var_t {
    int id;
    char *name;
} var;

int main()
{
	var *v;

	list_new(&list1);

	v = malloc(sizeof(var));
	v->id = 1;
	v->name = strdup("abc");
	list_add(list1, v);

	v = malloc(sizeof(var));
	v->id = 2;
	v->name = strdup("def");
	list_add(list1, v);

	int i;
	for(i=0; i< list_size(list1); i++) {
		void *f;
        list_get_at(list1, i, &f);
		printf("%d\n", ((var*)f)->id);
		printf("%s\n", ((var*)f)->name);
	}
	
	for(i=0; i< list_size(list1); i++) {
		void *f;
        list_get_at(list1, i, &f);
		free(((var*)f)->name);
	}

	list_destroy(list1);
}
$ ./a.exe
1
abc
2
def

double 값을 넣는 두번째 테스트..

#include "src/common.c"
#include "src/list.c"
 
static List *list1;
 
int main()
{
    list_new(&list1);
 
    double v = 1.0;
    list_add(list1, &v);
 
    double v2 = 2.0;
    list_add(list1, &v2);
 
    int i;
    for(i=0; i< list_size(list1); i++) {
        double *f;
        list_get_at(list1, i, (void*)&f);
        printf("%llf\n", *f);
    }
     
    list_destroy(list1);
}

아래는 Hash 를 테스트..

#include "src/common.c"
#include "src/hashset.c"
#include "src/hashtable.c"
#include "src/array.c"

HashTable *hash;

typedef struct var_t {
    int id;
    char *name;
} var;

int main()
{
	var *v;

	int stat = hashtable_new(&hash);

	v = malloc(sizeof(var));
	v->id = 1;
	v->name = strdup("abc");
	hashtable_add(hash, "key1", v);
	
	v = malloc(sizeof(var));
	v->id = 2;
	v->name = strdup("def");
	hashtable_add(hash, "key2", v);
	
	v = malloc(sizeof(var));
	v->id = 3;
	v->name = strdup("ghi");
	hashtable_add(hash, "key3", v);

	// query
	var *v2;
	if (hashtable_get(hash, "key1", (void*) &v2) == CC_OK) {
		printf("id: %d, name: %s\n", ((var*)v2)->id, ((var*)v2)->name);
	}

	// remove key
	hashtable_remove(hash, "key1", NULL);

	// check removed
	if (hashtable_get(hash, "key1", (void*) &v2) != CC_OK) {
		printf("removed key1\n");
	}

	// size check
	size_t size = hashtable_size(hash);
	printf("hash size: %d\n", size);

	// free element for memory allocation
	Array *keys;
	hashtable_get_keys(hash, &keys);
	for (int i=0; i<array_size(keys); i++) {
		void *key;
		array_get_at(keys, i, &key);
	
		if (hashtable_get(hash, (char*)key, (void*) &v2) == CC_OK) {
			free(((var*)v2)->name);
			printf("free name of %s\n", (char*)key);
		}
	}

	// destroy 
	hashtable_destroy(hash);
}
$ ./a.exe
id: 1, name: abc
removed key1
hash size: 2
free name of key3
free name of key2

나만의 사운드 플레이어를 만들어보고 싶다.

머리속에 구상은 되어있고..

어떤 라이브러리들을 갖다 쓸지.. 생각은 다 되어있는데..

시간이 도통 나질않아.. 근심만 하고 있었는데…

아무리 생각해도 이러다간.. 생각으로 끝날것 같아서.. 결정.

피곤해도 퇴근하고 애기 목욕시킨후에 조금씩 구현해봐야 겠음.

언어는 C++을 사용하고.. GUI 툴킷은 Qt를 사용하고..

비쥬얼레이션은 우선 Spectrum만 보여줌. (대부분의 플레이어서는 기본이니까.)

또 가사도 지원해주고.. (가사는 알송 가사서버를 이용하면 될것같고.)

플레이어의 스타일은 푸바와 같은 스타일로 구현하고. (난 디자인이 영 꽝인지라..)

지원 포맷은 애드립 카드시절의 사운드 포맷(ims, rol 등등)과

flac, ape, mp3, ogg 를 지원하면 많이 사용되는 사운드 포맷은 지원할 수 있을것 같음.

어서 만들어야지.. 어서…

Looking In The Eyes Of Love

I wonder should I tell you
About all the crazy things that I have done
I’ve been hiding all my life
When I should have stayed
I tried to run…

I was searching for an answer
In a world so full of strangers
But what I found was never really enough
Now that I’ve found you
I’m looking in the eyes of love (In the eyes of love)

Baby you’ve been good to me
Oh, so much more that you could know, yeah, yeah
I never thought that I would find
Someone who’s so sweet and kind
Like you…

Please believe me when I say
This time I won’t run away
I swear by all the heaven’s stars above
Now that I’ve found you
I’m looking in the eyes of love

Looking in the eyes of love…
I can see forever, yeah…
I can see you and me
Walking in this world together

Oh, my heart’s found a hope…
I’ve been dreaming of…
Now that I’ve found you
I’m looking in the eyes of love

Looking in the eyes of love…
I can see (forever), I can see forever
I can see you and me
Walking in this world together

Oh, my heart’s found a hope
I’ve been dreaming of…
Now that I’ve found you, I’ve found you
I’m looking in the eyes of love…, yeah

Oh…

IRC

서비스 웹 페이지:
http://service.hanirc.org/

우선 위 페이지에서 아이디를 등록하고, 인증 받고..
다음 인증받은 id와 password로 irc를 접속한다.

서버: kr.hanirc.org
포트: 8080

/join #kldp
/join #gnome

내 닉은 tcltk.

mIRC617.7z

대한민국 집값 거품. 그 막차를 타려고 하시는 분들께

출처: http://bbs1.agora.media.daum.net/gaia/do/debate/read?bbsId=D125&articleId=162074

종이신문지(조중동 및 경제신문지들)의 선동에 속거나, 부동산 중개업소의 사탕발림에 요즘 집 사려는 분들 참고.

P.S. 추가로 참고하면 도움되는 글
http://bbs1.agora.media.daum.net/gaia/do/debate/read?bbsId=D125&articleId=162168&hisBbsId=total&pageIndex=1&sortKey=regDate&limitDate=-30&lastLimitDate=