#
msgid ""
msgstr ""
"Project-Id-Version: Modelica by Example v0.3.6\n"
"Report-Msgid-Bugs-To: mail@modelica.co.kr\n"
"POT-Creation-Date: 2023-01-28 22:37+0000\n"
"PO-Revision-Date: 2023-03-12 22:37+0000\n"
"Last-Translator: Baek Youngjin, mail@modelica.co.kr / Ha HyeonSu, <iloveyou934671@gmail.com>\n"
"Language-Team: modelica.co.kr <mail@modelica.co.k>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.6.0\n"


#: ../../source/behavior/discrete/cooling.rst:4
msgid "Cooling Revisited"
msgstr ""
"냉각에 대한 재고(Cooling Revisited)"

#: ../../source/behavior/discrete/cooling.rst:7
msgid "Changing Ambient Conditions"
msgstr ""
"주변 조건 변경(Changing Ambient Conditions)"

#: ../../source/behavior/discrete/cooling.rst:9
msgid ""
"We will start with a simple example that demonstrates time events.  We "
"will revisit the thermal model introduced previously in the section on "
":ref:`physical-types`.  However, this time we will introduce a "
"disturbance to that system.  Specifically, we will trigger an abrupt "
"decrease in the ambient temperature after half a second of simulation. "
"This revised model is written as follows:"
msgstr ""
":ref:`physical-types` 섹션에서 앞서 소개한 열(thermal) 모델을 다시 살펴보면서, 시간 이벤트(time event)를 보여주는 간단한 예제부터 시작하겠습니다. "
"이전 모델과 차이는 시스템에 외란이라는 내용을 도입했다는 것입니다. 상세히 설명하면, 0.5초의 시뮬레이션 시간 이 후에 주변 온도의 급격한 감소가 발생 합니다.  "
"이렇게 수정된 모델을 다음과 같이 작성했습니다."


#: ../../source/behavior/discrete/cooling.rst:23
msgid ""
"The highlight lines show an ``if`` statement.  This particular ``if`` "
"statement provides two different equations for computing ``T_inf``."
msgstr ""
"하이라이트되어 있는 라인이 ``if`` 문 입니다."
"이 특정 ``if`` 문을 사용하여,  ``T_inf`` 를 계산하기 위한 두 가지 다른 방정식을 구성 했습니다."


msgid "Time"
msgstr ""

#: ../../source/behavior/discrete/cooling.rst:28
msgid ""
"You will note in this model the variable ``time`` is not declared within "
"our model.  This is because ``time`` is a built-in variable in all "
"Modelica models."
msgstr ""
"이 모델에서 ``time`` 변수가 우리 모델 내의 어디에서도 선언되지 않았음을 볼 수 있는데,"
"사실, 이는 ``time`` 이라는 변수가 모든 모델리카 모델에 기본 제공되는 변수이기 때문입니다."

#: ../../source/behavior/discrete/cooling.rst:32
msgid ""
"The decision about which of the two equations will actually be used "
"depends on the conditional expression ``time<=0.5``.  It is because this "
"expression only depends on ``time`` and not any other variables in our "
"model that we can characterize the transition between these two equations"
" as a \"time event\".  The key point is that when integrating these "
"equations, we can tell the solver that integrates our system of equations"
" to stop precisely at 0.5 seconds and then resume again using a different"
" equation.  We'll see examples of other state events where this would not"
" be possible, in the next section when we present the classic :ref"
":`bouncing-ball` example."
msgstr ""
"두 방정식 중 실제로 사용하는 방정식에 대한 결정은 조건식 ``time<=0.5`` 에 따라 다릅니다."
"이렇게 구현된 것은 ``time`` 에만 의존하고 모델의 다른 변수가 연산에 사용되지 않기 때문에 두 방정식 사이의 전환을 "시간 이벤트"로 특성화할 수 있습니다."
"요점은, 방정식을 통합할 때 시스템을 연산하는 솔버가 정확히 0.5초에서 중지한 다음, 다른 방정식을 사용하여 다시 재개하도록 지시할 수 있다는 것입니다. "
"이러한 연산이 불가능한 다른 상태 이벤트에 대한 예제는 다음 섹션에서 살펴보기로 하고, 지금은 앞서 살펴본 냉각 예제를 계속 보겠습니다. "



#: ../../source/behavior/discrete/cooling.rst:43
msgid ""
"But for now, let us continue with our cooling example.  If we simulate "
"this model for one second, we get the following temperature trajectory:"
msgstr ""
"이 모델을 1초 동안 시뮬레이션하면 다음과 같은 온도에 대한 궤적을 얻을 수 있습니다."

#: ../../source/behavior/discrete/cooling.rst:50
msgid ""
"As you can see in these results, the ambient temperature does indeed "
"start to decrease after half a second.  In studying the dynamic response "
"of the temperature itself, we see two distinct phases.  The first phase "
"is the initial transient response toward equilibrium (to match the "
"ambient temperature).  The second phase is the tracking of the ambient "
"temperature as it decreases."
msgstr ""
"이 결과에서 볼 수 있듯이 주변 온도는 0.5초 후에 실제로 감소하기 시작합니다."
"온도 자체의 동적 반응을 살펴 보면 두 종류의 뚜렷한 단계를 가집니다. "
"첫 번째 단계는 평형을 위한(주변 온도와 일치시키기 위한) 초기 과도 응답이며, 두 번째 단계는 감소하는 주변 온도를 추적하는 것입니다."


#: ../../source/behavior/discrete/cooling.rst:58
msgid "Initial Transients"
msgstr ""
"초기 전환(Initial Transients)"

#: ../../source/behavior/discrete/cooling.rst:60
msgid ""
"It is worth noting that this is a very common issue in modeling. "
"Frequently, you wish to model the systems response to some disturbance "
"(like the ambient temperature decrease in this case).  However, if you "
"don't start your system in some kind of equilibrium state, the system "
"response will also include some kind of initial transient (like the one "
"shown here).  In order to distinguish these two responses clearly, we "
"want to avoid any overlap between them.  **The simplest way to do that is"
" to start the simulation in an equilibrium condition** (as discussed "
"previous in our discussion of :ref:`steady-state`).  This avoids the "
"initial transient altogether and allows us to focus entirely on the "
"disturbance that we are interested in."
msgstr ""
"초기 전환은 모델링 할때 주어지는 매우 일반적인 문제 입니다."
"종종 상황에 따라, 외란(이 경우 주변 온도 감소와 같은)에 대한 시스템 응답을 모델링 하려고 할 때에 평형 상태에서 시스템을 시작하지 않으면,"
"시스템 응답에는 일종의 초기 과도 상태(여기에 표시된 것과 같은)가 포함 됩니다. "
"이렇게 발생하는 두 종류의 응답을 명확하게 분류하여, 응답이 겹쳐서 발생하는 현상을 피하는 방법이 필요 합니다. "
"**이를 수행하는 가장 간단한 방법은 평형 조건에서 시뮬레이션을 시작하는 것입니다**"
"(이전에 :ref:`steady-state` 에 논의됨). "
"이렇게 하면 초기 과도 현상을 모두 피하고  관심이 있는 외란 부분에 전적으로 집중할 수 있습니다."


#: ../../source/behavior/discrete/cooling.rst:72
msgid ""
"As we learned during our discussion of :ref:`initialization`, we can "
"solve this problem of initial transients by simply including an initial "
"equation that will determine a value for ``T`` such that our system "
"starts in an equilibrium state, *i.e.,*"
msgstr ""
":ref:`initialization` 에서 배웠듯이, 시스템이 평형 상태에서 시작하도록 ``T`` 값을 결정하는 초기 방정식을 포함함으로써 초기 과도 현상의 문제를 해결할 수 있습니다. "
"*즉, 예를들면* 아래와 같습니다."


#: ../../source/behavior/discrete/cooling.rst:82
msgid ""
"The only thing we've changed is the initial equation.  Instead of "
"starting our system at some fixed temperature, we start it at a "
"temperature such that the change in temperature (at least initially, "
"prior to our disturbance) is zero.  Now the temperature response no "
"longer includes any initial transient and we can focus only on the "
"response to the disturbance:"
msgstr ""
"변경한 유일한 것은 초기 방정식입니다."
"일부 고정된 온도에서 시스템을 시작하는 대신 온도 변화(최소한 처음으로 발생하는 외란 이전)가 0이 되는 온도에서 시스템을 시작 하게 한 것입니다."
"이제 온도 응답에는 더 이상 초기 과도 현상이 포함되지 않으며, 외란에 대한 응답에만 집중할 수 있습니다."


#: ../../source/behavior/discrete/cooling.rst:95
msgid "Compactness"
msgstr ""
"간결함(Compactness)"

#: ../../source/behavior/discrete/cooling.rst:97
msgid ""
"One issue with ``if`` statements is that they can make relatively simple "
"changes in behavior appear quite complicated.  There are a couple of "
"alternative constructs we can use to get the same behavior with fewer "
"lines of code."
msgstr ""
"``if`` 문을 사용하면 상대적으로 간단한 동작 변경을 매우 복잡하게 보이게 할 수 있다는 문제점이 있습니다. "
"그래서, 동일한 동작을 하면서도 더 적은 줄의 코드로 구현 할 수 있는 몇 가지 대체 구조가 있습니다."


#: ../../source/behavior/discrete/cooling.rst:104
msgid ""
"The first approach is to use an ``if`` **expression**.  Whereas an ``if``"
" statement includes \"branches\" containing equations, an ``if`` "
"expression has branches that contain only expressions.  Furthermore, the "
"syntax for an ``if`` expression is also less verbose.  If we had chosen "
"to use an ``if`` expression our ``equation`` could have been simplified "
"to:"
msgstr ""
"첫 번째 접근 방식은 ``if`` **표현식(expression)** 을 사용하는 것입니다. "
"``if`` 문에는 방정식을 포함하는 "분기"가 포함되는 반면  ``if`` 표현식에는 표현식만 포함하는 분기가 있습니다. "
"또한 ``if`` 표현식의 구문도 덜 장황합니다. "
"만약, ``if`` 표현식을 사용하기로 선택했다면 ``방정식`` 은 다음과 같이 단순화될 수 있습니다."


#: ../../source/behavior/discrete/cooling.rst:117
msgid ""
"Alternatively, we could use one of the many built-in Modelica functions, "
"like ``max``, to represent the change in the ambient temperature, *e.g.,*"
msgstr ""
"또는 ``max`` 와 같은 많은 내장 모델리카 함수 중 하나를 사용하여 주변 온도의 변화를 나타낼 수 있습니다. 예를 들면 아래와 같습니다."

#: ../../source/behavior/discrete/cooling.rst:126
msgid "Events"
msgstr ""
"이벤트(Events)"

#: ../../source/behavior/discrete/cooling.rst:128
msgid ""
"We've seen several ways to express the fact that there is an abrupt "
"change in the behavior of our system.  But it's important to point out "
"that we are not just describing a change in the ambient temperature, we "
"are also specifying **when** it changes.  This a subtle, but very "
"important, point."
msgstr ""
"시스템 동작에 급격한 변화가 존재한다는 사실을 표현하는 여러 가지 방법을 보았습니다."
"그러나 앞서 살펴본 예시는 주변 온도의 변화 만을 설명하는 것이 아니라, 그것이 변하는 **시점** 도 명시하고 있다는 점을 기억해야 합니다. "
"이것은 미묘하지만 매우 중요한 포인트입니다.     "


#: ../../source/behavior/discrete/cooling.rst:134
msgid ""
"Consider the last example, where our system began in an equilibrium "
"state.  At the start of the simulation, there are no significant "
"dynamics.  Since nothing is really changing in the system, the integrator"
" is unlikely to accumulate significant integration error. So, in order to"
" minimize the amount of time required to complete the simulation, "
"variable time step integrators will, in such circumstances, increase "
"their step size."
msgstr ""
"시스템이 평형 상태에서 시작된 마지막 예시를 생각 해보면, 시뮬레이션 시작 시에는 특별하게 중요한 역학적인 연산은 없습니다. "
"시스템에서는 실제로 변경되는 것이 없기 때문에 적분기가 적분 오류를 과도하게 누적할 가능성이 없습니다." 
"따라서 시뮬레이션을 완료하는 데 필요한 시간을 최소화하기 위해,"
"가변 타임 스탭 적분기(variable time step integrators)는 이러한 상황에서 해석의 타임 스탭 크기를 늘립니다."


#: ../../source/behavior/discrete/cooling.rst:142
msgid ""
"There is, however, a risk in doing this.  The risk is that the integrator"
" may get \"blind-sided\" by a sudden disturbance in the system.  If such "
"a disturbance were to occur, the integrator's assumptions that a large "
"step will not lead to significant integration error would not be true."
msgstr ""
"그러나 이렇게 하면 적분기가 시스템의 갑작스러운 외란으로 인해 "무방비한 (blind-sided)" 상태가 될 수 있다는 위험이 발생합니다. "
"왜란이 발생하는 경우에는 "큰 타임 스탭이 적분 오류를 과도하게 발생시키지 않을 것"이라는 처음 했었던 적분기의 가정은 사실이 아니게 됩니다.  "


#: ../../source/behavior/discrete/cooling.rst:148
msgid ""
"The question then becomes, how can the integrator *know* when it can take"
" a large time step and when it cannot.  Typically, these integration "
"schemes use a kind of trial and error approach.  They try to take large "
"step and then estimate the amount of error introduced by that step.  If "
"it is less than some threshold, then they accept the state (or perhaps "
"try a larger step).  If, on the other hand, the step introduces too much "
"error, then they try a smaller step.  But they cannot know how small a "
"step will be required to get under the error threshold, which means they "
"will continue to blindly try smaller and smaller steps."
msgstr ""
"적분기가 언제 큰 타임 스탭을 사용하여 해석할 수 있고, 언제 그렇게 할 수 없는지를 *알 수* 있도록 해야합니다."
"일반적으로 이러한 통합 체계는 일종의 시행 착오 방식(trial and error)을 사용합니다. "
"큰 타임 스탭을 이용해 해석을 시도한 다음에 해당 타임 스탭에서 발생하는 오류의 양을 추정합니다. "
"임계값보다 작으면 그 상태를 수용하고(또는 더 큰 단계를 시도할 수도 있음),이 타임 스탭에서 너무 많은 오류가 발생하면 더 작은 타임 스탭을 시도합니다. "
"그러나 오류 임계값 아래에 도달하는 데 얼마나 작은 타임 스탭이 필요한지 알 수 없습니다. "
"즉, 계속해서 더 작은 타임 스탭으로 맹목적으로 시도할 것입니다."


#: ../../source/behavior/discrete/cooling.rst:159
msgid ""
"But Modelica is about much more than integrating the underlying system.  "
"Modelica compilers study the **structure** of the problem. In all of our "
"examples, the compiler can see that there is a distinct change in "
"behavior.  Not only that, it can see that this change in behavior is a "
"time event, *i.e.,* an event whose time is known *a priori* without any "
"knowledge of the solution trajectory."
msgstr ""
"그러나, 모델리카는 기본 시스템을 이런 형태로 적분하는 것 보다 개선된 동작 방식을 가지고 있습니다. "
"모델리카 컴파일러는 문제에서의 **구조** 를 분석합니다. "
"다룬 모든 예제를 살펴보면, 컴파일러는 동작에 뚜렷한 변화가 있음을 미리 알 수 있었습니다."
"*즉* 해의 궤적에 대한 지식 없이도 *선험적으로* 시간이 알려진 이벤트인지 알 수 있었습니다."


#: ../../source/behavior/discrete/cooling.rst:166
msgid ""
"So, what a Modelica compiler will do is inform the underlying integrator "
"that there will be an abrupt change in behavior at 0.5 seconds and it "
"will instruct the integrator to simply integrate exactly up to that point"
" and no further.  As a result, the abrupt change never occurs **within a "
"time step**.  Instead, the integrator will simply restart on the other "
"side of the event.  This completely avoids the blind searching for the "
"cutoff time that minimizes the error in the step.  Instead, the "
"integrator will integrate right up to that point automatically and then "
"restart after that point."
msgstr ""
"따라서 모델리카 컴파일러가 수행하는 작업은 기본 적분기에게 0.5초에 동작이 갑자기 변경될 것이라고 알리고, 적분기에게 해당 지점까지만 정확하게 적분하고 더 이상 적분하지 않도록 지시합니다."
"결과적으로 **타임 스탭 내** 에서 급격한 변화가 발생하지 않습니다."
"대신 적분기는 이벤트의 다른 쪽에서 다시 시작 합니다."
"이렇게 하면 타임 스탭에서 오류를 최소화하는 컷오프 시간에 대한 블라인드 검색을 완전히 피할 수 있습니다. "
"대신 적분기는 해당 지점까지 자동으로 적분한 다음에 해당 지점 이후에 다시 시작합니다."


#: ../../source/behavior/discrete/cooling.rst:176
msgid ""
"This is one of many examples of features in Modelica that optimize the "
"way a simulation is carried out.  A more detailed discussion of this kind"
" of handling can be found in the upcoming section on :ref:`events`.  In "
"the coming sections, we'll also see more complex examples of events that "
"depend on the solution variables."
msgstr ""
"이것은 시뮬레이션이 수행되는 방식을 최적화하는 모델리카 기능의 많은 예 중 하나입니다. "
"이러한 종류의 처리에 대한 자세한 설명은 다음 섹션인 :ref:`events` 에서 찾을 수 있으며,"
"해 변수에 따라 달라지는 이벤트의 더 복잡한 예도 볼 수 있습니다."


#~ msgid "if statement"
#~ msgstr ""

#~ msgid "if expression"
#~ msgstr ""

#~ msgid "max"
#~ msgstr ""

