亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? source.html

?? matlab有限元分析工具,比經較全面的一個手冊,請大家下載呀
?? HTML
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
            "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Notes on the QMG source code</title>
</head>
<body BGCOLOR="#E0FFE0" TEXT="#000000" LINK = "#0080C0" VLINK = "#004060" ALINK = "#FF0000" >
<center>
<table>
<tr>
<td>
<a href="qmg2_0_home.html"><img src=logo1.jpg alt="QMG logo"></a></td>
<td>
<h1>
Notes on the QMG source code
</h1>
</td>
</table>
</center>
Much of the QMG package is written in C++.  The purpose of this
page is to give a brief overview of the source code in case the
user wishes to modify it.  This page assumes familiarity
with C++.  The source code is in subdirectories
of $QMG_ROOT/src.  The subdirectories are as follows:
<ul>
<li>
blas2, clapack, fortran_h, libf77: These subdirectory hold routines from CLAPACK, the
C-language version of LAPACK. The routines for intersecting
rays with Bezier curves and patches call upon the LAPACK
subroutines <code>zgeev</code>and <code>zgegv</code>, which are the unsymmetric
complex standard and generalized eigensolvers.  The QMG source code includes
both routinesin the directory clapack2.  Other subsidiary routines arein blas2, fortran_h and libf77.The full distribution for clapack is available in
a <a href="http://www.netlib.org/clapack/">subdirectory</a> of 
<a href="http://www.netlib.org/">netlib</a>.

<li>
common: This subdirectory holds routines and declarations that are common
to many of the subdirectories. 

<li>
meshgen: This subdirectory holds routines for mesh generation including
the two main mesh generators, as well as some auxiliary routines like
gmdouble,  gmchecktri, and gmrefine.
<li>
model: This subdirectory holds some of the other QMG functions not
in the meshgen directory.
<li>
matlab: This subdirectory holds routines specific to the matlab
front end.
<li>
tcl: This subdirectory holds routines specific to the Tcl front end.
<li>
xdr: This subdirectory holds routines for writing and reading
objects in XDR.  (These routines are used by 
<a href="ref.html#gmxdr_read"><code>gmxdr_read</code></a> and
<a href="ref.html#gmxdr_write"><code>gmxdr_write</code></a>).
</ul>

Some commands span several directories and files.  The most
complicated example is the mesh generator.
Invoking <code>gmmeshgen</code>
first executes gmmeshgen.m or gmmeshgen.tcl depending
on the scripting language.  These in turn invoke
invoke <code>gm_meshgen</code>, a C++ routine whose source file is
in $QMG_ROOT/src/meshgen.  In turn, this front end invokes
<code>meshgen</code>, a C++ routine in file
meshgen.cpp the same directory.  That
routine is the main driver for mesh generation.

<p>
The file meshgen.cpp refers to both breps and simplicial
complexes.  These are defined in .h and .cpp files in either the
tcl or matlab subdirectory, depending on which scripting language
you use.  The two versions of qbrep.h and qsimpcomp.h
have been written so
as to provide largely the same public interface.  This means
that most of the mesh generator works the same way regardless
which .h file is included when you compile the mesh generator.
The .cpp files contain quite different implementations.  The
Matlab implementation of breps stores the entire brep in a
matlab data structure (a nested <a href="geom.html#zba">zba</a> 
cell-array).  The Tcl implementation of breps stores the brep
in a C-language data structure, and then wraps it with the C++
class for manipulation by the mesh generator.  The data structure
is opaque to Tcl, but routines are provided to convert it to
string format (this is required by Tcl for any object) and
also to <a href="ref.html#gm_obj2list">list</a> format.

<p>
Thus, the choice of formats for breps and simplicial complexes
is determined by which version of qbrep.h and qsimpcomp.h is included
when the mesh-generator is compiled.  The Makefile paths control this
inclusion.
QMG could have been written so that
the choice of format of the brep is
been postponed until run-time by using C++ abstract base
classes and inheritance.  But there did not seem to be any advantage
to postponing this choice since QMG is compiled for either
Matlab or Tcl but not both.

<p>
Another complicated feature in the mesh generator is the
GUI panel that tracks the progress of the mesh generator.  
This gui is controlled
by a class called Meshgen_gui.  That class is defined by
a header file qmg_gui.h in the meshgen directory.  But there
are two C++ implementations of the class, one in the tcl directory
and one in the matlab directory.  The two files qmg_gui.cpp call
either matlab routine gm_mggui.m or tcl routine gm_mggui.m.


<p>
General naming conventions used in the source code are as follows.
There are C-language routines defined in the XDR subdirectory and
CLAPACK subdirectory.  There are also C-language routines for
defining the internal Tcl data structures for breps and meshes
(as mentioned above).  All the rest of the code is in C++.  All
of the C++ global names are wrapped in namespace QMG.  This namespace
in turn has some nested namespaces.  Names used mainly within
the mesh generator are wrapped in namespace QMG::MG.  Names
used to interface with the front end (matlab or tcl) are in namespace
QMG::FrontEnd.  There are a few other smaller namespaces with
QMG used in the code.

<p>
Macros are not used extensively in the code.  As is common
practice, .h files
are guarded with #ifdef/#define/#endif against double-inclusion.  
There are some macros used to handle incompatibilities betweenvarious C++ compilers.  For instance, the NEED_TYPENAME_KEYWDmacro is set if the compiler requires the C++ keyword<code>typename</code> in the situations mandated by the C++ standard.
<p>
The C++ source files that are invoked directly by the 
scripting language
(Matlab or Tcl/Tk) all begin with the letters 
"gm" and are all in the
meshgen and model subdirectories.  These are C++ programs that can 
be linked to either Matlab or Tcl.
These files all follow a standard format.  There is a routine
called <strong>worker</strong> in an anonymous namespace (i.e.,
not visible outside that file).  The worker routine checks
the arguments and then either does the work, or else calls
some other routine that does the work.  At the end of the
file, the source code gm_entrypoint.cpp is included.
This file is pulled from either the matlab or tcl source
directory and is the actual entrypoint for the routine.
This entrypoint follows the standard conventions for
either matlab or tcl callable functions, and eventually
invokes worker.


<p>
Perhaps the most important C++ class in the package is QMG::Brep, which
is the class for breps.  It defines a read-only data structure
with many accessor functions, such as routines to retrieve
control points, etc.  It also defines many specialized iterator
member classes.  For example, if you want to loop over
all the faces of a brep named <code>b1</code>, you can say
<blockquote>
<code>
for (QMG::Brep::Face_Spec_Loop_Over_Faces fspec(b1);<br>
fspec.notdone();<br>
++fspec) 
</code>
</blockquote>

<p>
The class for creating breps is QMG::Brep_Under_Construction, which
is derived from QMG::Brep.  This class is located in qbrep_constr.h.
This class lets the caller insert
new topological faces, control points, etc.
There are no routines for modifying a brep after it is created.
The only way to carry out modification is to copy the brep over.

<p>
Similarly, meshes are QMG::SimpComp (in qsimpcomp.h) and are
read-only.  To create a mesh, there is a second class 
QMG::SimpComp_Under_Construction in the same file.

<p>
There are many low-level classes important to QMG.  For instance,
QMG::Face_Spec is a pair of integers (dimension, index) used
to index faces of a brep and is quite ubiquitous.  QMG uses
many STL classes, in particular string, maps and vectors.

<p>
A key data structure in mesh generation is QMG::MG::ActiveBoxVec.  
This data structure holds active boxes in the quadtree.
There are several ActiveBoxVec's floating around, and boxes
get transferred from one to another as the mesh generator
runs.  Another data structure is ActiveBox.  This is not
really a standalone data structure; instead, it is a pointer
to a particular entry (an active box) in an ActiveBoxVec.

<p>
Some other conventions used in the source code are as follows.
Variable di often stands for the embedded dimension, and gdim for
the intrinsic dimension.  Variables called fspec, new_fspec, subfspec,
etc are usually face-specs, that is, ordered pairs of integers 
(facedim, faceind) that index a face of a brep.  Variable tol
is always the current absolute tolerance ("absolute" means that
the tolerance lies between 0 and 1), scfac is usually the
scale factor of the brep under consideration, and scaled_tol is
the product of tol and scfac and is the tolerance relative to
the size of the current brep. 

<p>
The routine throw_error is called when there is an error.  This
routine is implemented in qerr.cpp in either the matlab or tcl
subdirectory.  The tcl version of throw_error will throw
an exception that eventually returns control to the outer
wrapper (in gm_entrypoint.cpp).  The matlab version calls mexErrMsgTxt,
which transfers control back to Matlab.  Depending on compiler
flags, the matlab version of throw_error
will either throw an exception that
eventually leads back to the wrapper, which then calls
mexErrMsgTxt, or else it directly calls mexErrMsgTxt.  The former
is preferable since the stack unwinding process will free up 
allocated memory and close files, but the latter may be necessary
on platforms where C++ exceptions and Matlab are not compatible.


<p>
There are four makefiles shipped with QMG.  They arefor Unix Tcl, Unix Matlab, Windows Tcl andWindows Matlab.  These are all in subdirectories of $QMG_ROOT/build.The makefiles include a file called <code>custom</code> which needs tobe customized.  The makefiles themselves do not need customization.These makefiles also include pieces from the various src subdirectories. For instance, in the src/meshgen subdirectory,
there are two files called meshgen_defs and meshgen_targets.
The file meshgen_defs contains macro definitions that spell
out which targets must be made in src/meshgen. <hr>
<p>
This documentation is written by 
<a href="http://www.cs.cornell.edu/home/vavasis/vavasis.html">Stephen A. 
Vavasis</a> and is
copyright &#169;1999 by 
<a href="http://www.info.cornell.edu/CUHomePage.html">Cornell 
University</a>.
Permission to reproduce this documentation is granted provided this
notice remains attached.  There is no warranty of any kind on
this software or its documentation.  See the accompanying file
<a href="copyright.html">'copyright'</a>
for a full statement of the copyright.
<p>
<address>
Stephen A. Vavasis, Computer Science Department, Cornell University,
Ithaca, NY 14853, vavasis@cs.cornell.edu
</address>
</body>
</html>






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产在线视频一区二区| 久久97超碰国产精品超碰| 精品福利一区二区三区免费视频| 欧美丝袜丝交足nylons图片| 成人午夜在线播放| 成人av中文字幕| 97se亚洲国产综合在线| 日本精品视频一区二区| 欧美在线|欧美| 欧美日韩成人综合| 欧美日本高清视频在线观看| 欧美日本一区二区三区四区| 欧美一区日韩一区| 日韩视频一区二区三区在线播放| 日韩欧美一区二区免费| 久久精品亚洲麻豆av一区二区 | 亚洲人快播电影网| 亚洲免费观看视频| 日韩国产欧美一区二区三区| 免费三级欧美电影| 国产91对白在线观看九色| 99亚偷拍自图区亚洲| 91黄色免费网站| 精品乱人伦小说| 国产精品久久久久久久午夜片| 亚洲视频中文字幕| 免费成人在线视频观看| 国产成人综合视频| 欧美美女一区二区三区| 精品国产一区二区三区久久久蜜月| 久久精子c满五个校花| 自拍偷拍欧美激情| 蜜臀久久99精品久久久久久9 | 国产精品美日韩| 亚洲综合久久av| 国精品**一区二区三区在线蜜桃| 91在线观看地址| 日韩精品影音先锋| 一区二区三区影院| 国产真实乱偷精品视频免| 一本色道a无线码一区v| 日韩一区二区免费高清| 国产精品二三区| 蜜桃视频在线观看一区| 99免费精品在线观看| 日韩视频免费观看高清在线视频| 综合av第一页| 国产福利一区在线观看| 91麻豆精品久久久久蜜臀| 国产精品美女久久久久av爽李琼| 天堂资源在线中文精品| 成人h动漫精品一区二区| 日韩一级黄色片| 一区二区三区精品视频| 高清不卡在线观看av| 日韩一区二区三区电影在线观看 | 欧美日韩一级大片网址| 精品av久久707| 日本aⅴ免费视频一区二区三区 | 亚洲bt欧美bt精品| 97久久精品人人做人人爽| 久久久国产精品午夜一区ai换脸| 免费成人在线播放| 欧美日韩一区小说| 亚洲激情图片qvod| 一本色道久久加勒比精品| 国产精品精品国产色婷婷| 国产一区二区91| 亚洲精品一线二线三线| 麻豆成人久久精品二区三区小说| 欧美美女网站色| 午夜精品久久久久久久久久久| 91免费版pro下载短视频| 国产精品无码永久免费888| 激情综合网天天干| 精品成人在线观看| 国产精品亚洲人在线观看| 欧美精品一区视频| 国产精品一品视频| 国产女主播一区| 国产91精品一区二区麻豆网站| 国产午夜精品美女毛片视频| 国产精品一区二区久久精品爱涩 | 成人激情校园春色| 国产精品婷婷午夜在线观看| 国产成人aaa| 日韩一区在线看| 色欧美片视频在线观看| 樱花影视一区二区| 欧美欧美午夜aⅴ在线观看| 午夜精品免费在线| 精品少妇一区二区三区在线视频| 精品一区二区免费| 久久九九国产精品| 91麻豆文化传媒在线观看| 亚洲欧美日韩一区二区| 欧美日韩一区二区三区四区| 日韩av网站免费在线| 久久免费视频一区| 91视视频在线观看入口直接观看www | 加勒比av一区二区| 国产精品美女久久久久久久久| 99r精品视频| 日韩电影一区二区三区| 欧美激情综合在线| 欧美在线综合视频| 久久99国产精品尤物| 国产精品久久久久久亚洲毛片| 欧美无人高清视频在线观看| 蜜臀av一区二区在线免费观看| 欧美国产精品v| 欧美日韩国产高清一区二区 | av在线不卡免费看| 三级影片在线观看欧美日韩一区二区 | 日本亚洲视频在线| 国产精品理论片| 欧美一卡2卡3卡4卡| 成人免费高清在线| 极品美女销魂一区二区三区免费| 亚洲色图在线看| 2023国产精品| 欧美裸体一区二区三区| 成人精品一区二区三区四区| 日韩精品色哟哟| 亚洲精选一二三| 国产亚洲欧美日韩在线一区| 69堂亚洲精品首页| 91麻豆免费看| 国产精品自产自拍| 男人的天堂久久精品| 亚洲一区二区免费视频| 日本一区二区三区国色天香| 欧美一区二区三区视频免费播放| 99久久免费精品| 丰满放荡岳乱妇91ww| 毛片一区二区三区| 日韩中文字幕av电影| 一区二区三区自拍| 国产精品卡一卡二| 久久久精品综合| 日韩精品在线网站| 日韩一级精品视频在线观看| 欧美精品久久天天躁| 欧美中文字幕一区| 91国偷自产一区二区三区成为亚洲经典 | 在线不卡的av| 欧美性xxxxxxxx| 欧美一a一片一级一片| 91亚洲精品久久久蜜桃| 9i在线看片成人免费| www.亚洲在线| 99在线精品一区二区三区| 成人v精品蜜桃久久一区| 不卡一区二区三区四区| 99这里只有久久精品视频| 粉嫩嫩av羞羞动漫久久久| 豆国产96在线|亚洲| 国产传媒一区在线| 成人av动漫网站| 成人h动漫精品| 在线免费视频一区二区| 欧美午夜精品电影| 91麻豆精品国产综合久久久久久| 欧美精品tushy高清| 日韩一级精品视频在线观看| 日韩欧美的一区| 国产亚洲人成网站| 中文字幕在线观看不卡| 亚洲综合色成人| 蜜乳av一区二区| 国产盗摄精品一区二区三区在线 | 日本亚洲天堂网| 国产成人免费9x9x人网站视频| 成人高清在线视频| 欧美挠脚心视频网站| 国产日本欧洲亚洲| 一区二区在线观看免费视频播放| 午夜精品福利久久久| 国产综合色产在线精品 | 亚洲精品一二三区| 午夜精品一区二区三区电影天堂| 精品伊人久久久久7777人| 不卡的av中国片| 欧美日韩不卡一区| 欧美国产亚洲另类动漫| 亚洲成人自拍偷拍| 国产成人午夜电影网| 日本韩国精品在线| 亚洲精品一线二线三线无人区| 亚洲欧美偷拍三级| 国产中文一区二区三区| 欧美色老头old∨ideo| 久久一留热品黄| 日韩精品亚洲专区| 成人avav在线| 精品久久国产老人久久综合| 一区二区高清在线| 国产福利一区二区三区在线视频| 欧美日韩一区不卡| 最新热久久免费视频|