We have our own corporate, marketing, media and web resources – why would we need you?
We would work closely with your in-house team to deliver what you need. . We can help you present this to the best effect – and identify interesting stuff hidden in libraries and archives.
What do you mean by interesting stuff?
What's so special about history on the web?
Web pages allow people to engage at any level in they want: a quick dip into your timeline, a particular video or audio clip or a longer visit looking in more detail.
Unlike printed works, web pages can also be easily updated. One of the joys of history is that it is always being rewritten. Your web pages will still be fresh and useful five years on.
Web pages are also accessible any time, anywhere. So if you're far away and have an interested customer but no printed material to hand you can point them directly to your website.
Our anniversary is important – can I still have something in print?
No problem. Our research can also provide material for a book or pamphlet. There are cost-effective ways of printing these to order. The same applies to annual reports.
What else can you help with?
Fees are negotiable according to the particular needs of the client and duration of each project.
We work to the highest professional standards. And we like to provide an after-sales service – keeping in touch with you and your history.


This position provides advanced training in Health Outcomes, Pharmacoinformatics and Epidemiology. The program provides training to conduct post-marketing drug utilization literature review (DUR), Retrospective Drug Utilization Review (retroDUR) research and Drug-Cap initiative research as part of the collaboration with the New York State Department of Health (NYSDOH) for NYS Medicaid program. Opportunities will be available to receive training in epidemiology, biostatistics, and/or clinical study design by using large databases to predict and evaluate outcomes of acute and chronic medications with faculty members from pharmacy and dental school. Opportunities will be available to train and coordinate activities of introductory (IPPE) and advanced pharmacy practice experience (APPE) students. The candidate should be self-motivated, an independent worker, possess strong analytical skills, and excellent written and verbal communication.
•	Work with pharmacy students in didactic and experiential settings.
Your References - Check them out before you Give Them Out!


text:
Text and the City
When you're reading some rapturous talk about the glorious future in which enhancement will allow us to bend the world to our will, it often seems like a remote (if not necessarily distant) fantasyland, something to be contemplated through ideals. It's easy to forget that many of the most anticipated enhancements are already with us in some early stage of development, and we can look to the effects they already have had as a guide to how they might manifest in a more extreme form.
Human sexuality is frequently cited as a potential subject of futuristic enhancement, with predictions about the future ranging from alterations to sexual organs, to brain implants that allow for enhanced intimacy, to entirely virtual interactions. (The funniest description may be from this H+ Magazine article, where Natasha Vita-More imagines posthuman sex as "multiple exchanges of digitized codes reaching a crescendo.") Well, it is worth remembering that human sexuality has already been transformed, first very radically with the advent of the birth-control pill a half-century ago, and more recently in strange new ways as a result of the last two decades of advances in communication technologies.
The latter transformation is explored in a new article in New York magazine. Since April 2007, that magazine has published weekly "sex diaries" written by a series of anonymous New Yorkers. The author of the article read through all hundred-plus diaries and noted especially the role of information technology:
Virtually everyone under the age of 30 has grown up with their sexuality digitally enhanced, and the rest of us are rapidly forgetting the world before we all were hooked into the same erotically charged network of instantaneously transmitted messages and images.
"Enhanced," of course, is a vague and slippery word in this context, and the author observes in the diaries a series of anxieties and fears about sexuality: the anxiety of too much choice, the anxiety of appearing overly sincere, the anxiety of appearing prudish. This remarkable snippet comes from his description of the anxiety of not being chosen:
Among active Diarists, the worry that they will make the wrong choice is surpassed by the fear that they might find themselves without one. To guard against this disaster, everybody is on somebody's back burner, and everybody has a back burner of their own, which they maintain through open-ended texts, sporadic Facebook messages, G-chats, IM's, and terse e-mails. The Diarists appear to do this regardless of whether or not they are in a committed, or even a contractually sealed, relationship….
A Diarist with any game at all has unlimited opportunity…. They use their cell phone to disaggregate, slice up, and repackage their emotional and physical needs, servicing each with a different partner, and hoping to come out ahead. This can get complicated quickly, however, and can lead to uneasy situations…. This compulsive toggling between options winds up inflicting the very damage it was designed to protect against.
These self-selected diarists from The City That Never Sleeps may not be representative of the broader population; nor can we assume that their experiences will directly show us anything of what to expect in the future. But we can certainly wonder whether these people's sex lives — or their lives on the whole — are better as a result of the digital "enhancement" described in the article. At least as portrayed in the article, the diarists seem bewildered and lost. They are unsure of what they want out of love and life other than control — and yet as digital technologies allow them to more easily indulge their immediate impulses, their control only seems to wane as they become more unsure about they want and more unsatisfied with what they get.
sexual enhancement
One thought on "Text and the City"
Brian Boyd says:
"What do you want? … You got a bullshit answer for everybody. But I asked you a very simple question and you can't give me a straight answer. Because you don't know." –Sean, in 'Good Will Hunting'
The paradox of choice shows that generally, the more options we have, the harder it is to make decisions. And for all our ingenuity in multiplying means, the most fundamental questions become ever harder to answer.

redpajama_set_name: RedPajamaCommonCrawl


Welcome to the next Stage.
Stage 21 is the boutique shop in Orange County. Not only do they have in incredible shop, but they also embrace online business and needed a site that could better display their depth of bikes and service parts. The new site led to a new logo, and the next stage of the shop was born.


text:
PESA Victorian state final
An Dang, Brunswick Secondary College
and Oscar Pearce, Albert Park College
A passionate and unique performance by An Dang of Brunswick Secondary College secured the coveted winner's trophy at the state final of the Plain English Speaking Award (PESA) at the State Library Victoria on Friday 26 July 2019.
An not only presented her speech about the deaf community's place in Australia in spoken word but combined it with Auslan, the Australian sign language. At one point during her performance, she invited the audience to learn how to say a few phrases in Auslan, including 'hello', demonstrating that learning sign language is not too difficult.
'Speaking about something you are already passionate about is such a joy,' An said.
'I've only been in Australia for 18 months and I've done three courses and have talked to over 50 people in sign language. If I can do it, so can you.'
The runner-up was Oscar Pearce from Albert Park College, whose thought-provoking speech challenged the audience to consider how emotion has crept into politics. He used examples from the recent Australian federal election campaign, Donald Trump's rise to the US Presidency and post-Brexit Britain.
'Right from the start everyone had a unique perspective and well-thought speeches,' Oscar said.
'It was just awesome to hear from so many people with really cool ideas.'
An and Oscar were joined by Tom McKenzie from Ballarat Grammar, Amy Chilcott from Fintona Girls' School and De Kai Chue from Suzanne Cory High School. The finalists were selected from over 200 students from Victoria's government, independent and Catholic schools who participated in PESA this year.
Adjudicator Christopher Holtby OBE, the British Consul General in Melbourne, said that each of the finalists spoke about issues they cared greatly about, making it a difficult decision to choose the winner.
'This state final was outstanding, an astonishing display of brilliant young people,' he said.
An received a trophy donated by the Australia–Britain Society (Victoria) and will compete in the national final in Brisbane on Monday 12 August 2019.
The winner of the National PESA competition secures a coveted place at the International Public Speaking Competition (ISPC) in London, the world's largest youth public speaking event. Over 50,000 students compete worldwide to win the chance to represent their countries at the ISPC.


text:
\hypertarget{namespaceinprod__analytic}{}\section{inprod\+\_\+analytic Module Reference}
\label{namespaceinprod__analytic}\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}}

Inner products between the truncated set of basis functions for the ocean and atmosphere streamfunction fields. These are partly calculated using the analytical expressions from Cehelsky, P., \& Tung, K. K. \+: Theories of multiple equilibria and weather regimes-\/A critical reexamination. Part II\+: Baroclinic two-\/layer models. Journal of the atmospheric sciences, 44(21), 3282-\/3303, 1987.

\subsection*{Data Types}
\begin{DoxyCompactItemize}
\item
type \hyperlink{structinprod__analytic_1_1atm__tensors}{atm\+\_\+tensors}
\begin{DoxyCompactList}\small\item\em Type holding the atmospheric inner products tensors. \end{DoxyCompactList}\item
type \hyperlink{structinprod__analytic_1_1atm__wavenum}{atm\+\_\+wavenum}
\begin{DoxyCompactList}\small\item\em Atmospheric bloc specification type. \end{DoxyCompactList}\item
type \hyperlink{structinprod__analytic_1_1ocean__tensors}{ocean\+\_\+tensors}
\begin{DoxyCompactList}\small\item\em Type holding the oceanic inner products tensors. \end{DoxyCompactList}\item
type \hyperlink{structinprod__analytic_1_1ocean__wavenum}{ocean\+\_\+wavenum}
\begin{DoxyCompactList}\small\item\em Oceanic bloc specification type. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions/\+Subroutines}
\begin{DoxyCompactItemize}
\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a65ce3c65ea7e796a09b702d3c0f63fe0}{b1} (Pi, Pj, Pk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_ac3804db9421130d611b222d8b12c1882}{b2} (Pi, Pj, Pk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_ac500ef2ae885d78a4f4558392a92fd0c}{delta} (r)
\begin{DoxyCompactList}\small\item\em Integer Dirac delta function. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a7e49045b5dd4cf8d0a4eb096570e8f5c}{flambda} (r)
\begin{DoxyCompactList}\small\item\em \char`\"{}\+Odd or even\char`\"{} function \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a90a2b9840d6c77f13aaadd7e0537800c}{s1} (Pj, Pk, Mj, Hk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a319a35a215ad426474c9a2beb4d85bbb}{s2} (Pj, Pk, Mj, Hk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a671ca8c3aae1db0a453a13e94462baa0}{s3} (Pj, Pk, Hj, Hk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
real(kind=8) function \hyperlink{namespaceinprod__analytic_a8dacf930ffdf8fd09da0a77bfd4d3a4b}{s4} (Pj, Pk, Hj, Hk)
\begin{DoxyCompactList}\small\item\em Cehelsky \& Tung Helper functions. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_a9a003ced8e18bf5299c05dc76a8b1e47}{calculate\+\_\+a}
\begin{DoxyCompactList}\small\item\em Eigenvalues of the Laplacian (atmospheric) \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_ab2db39e602d165af9d709d712ebf1b1d}{calculate\+\_\+b}
\begin{DoxyCompactList}\small\item\em Streamfunction advection terms (atmospheric) \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_afa4abc3665e4628bda2deb421c123e05}{calculate\+\_\+c\+\_\+atm}
\begin{DoxyCompactList}\small\item\em Beta term for the atmosphere. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_a1b0c41711a02f385766aeef2faf22830}{calculate\+\_\+d}
\begin{DoxyCompactList}\small\item\em Forcing of the ocean on the atmosphere. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_a60bd361584d695120fff51940e523f0e}{calculate\+\_\+g}
\begin{DoxyCompactList}\small\item\em Temperature advection terms (atmospheric) \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_af2f7504623cdd4e4e6b4b977126475ea}{calculate\+\_\+s}
\begin{DoxyCompactList}\small\item\em Forcing (thermal) of the ocean on the atmosphere. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_acb883b9fbefbca46b83b384ee74ed703}{calculate\+\_\+k}
\begin{DoxyCompactList}\small\item\em Forcing of the atmosphere on the ocean. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_ad89fa4b40a4f55e72942f09427d2bafd}{calculate\+\_\+m}
\begin{DoxyCompactList}\small\item\em Forcing of the ocean fields on the ocean. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_a76eeb8a6a44af38e397edd7e0617afca}{calculate\+\_\+n}
\begin{DoxyCompactList}\small\item\em Beta term for the ocean. \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_a8b820fd46bfdc62c6ae712d4cbfd072f}{calculate\+\_\+o}
\begin{DoxyCompactList}\small\item\em Temperature advection term (passive scalar) \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_aa45dedb07b415eb4cbdb908268c00aa9}{calculate\+\_\+c\+\_\+oc}
\begin{DoxyCompactList}\small\item\em Streamfunction advection terms (oceanic) \end{DoxyCompactList}\item
subroutine \hyperlink{namespaceinprod__analytic_ad275ee27fa04491805aa7a648183a754}{calculate\+\_\+w}
\begin{DoxyCompactList}\small\item\em Short-\/wave radiative forcing of the ocean. \end{DoxyCompactList}\item
subroutine, public \hyperlink{namespaceinprod__analytic_a7491dd2b8ba26eb10d160eb0bf072e56}{init\+\_\+inprod}
\begin{DoxyCompactList}\small\item\em Initialisation of the inner product. \end{DoxyCompactList}\item
subroutine, public \hyperlink{namespaceinprod__analytic_a77718deee55b484b0946e6c8faf72cd6}{deallocate\+\_\+inprod}
\begin{DoxyCompactList}\small\item\em Deallocation of the inner products. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Variables}
\begin{DoxyCompactItemize}
\item
type(\hyperlink{structinprod__analytic_1_1atm__wavenum}{atm\+\_\+wavenum}), dimension(\+:), allocatable, public \hyperlink{namespaceinprod__analytic_aa6b6ebedac44495720ffe649bc937a56}{awavenum}
\begin{DoxyCompactList}\small\item\em Atmospheric blocs specification. \end{DoxyCompactList}\item
type(\hyperlink{structinprod__analytic_1_1ocean__wavenum}{ocean\+\_\+wavenum}), dimension(\+:), allocatable, public \hyperlink{namespaceinprod__analytic_a7273713c6b1a079e1c653e8b8d2fe089}{owavenum}
\begin{DoxyCompactList}\small\item\em Oceanic blocs specification. \end{DoxyCompactList}\item
type(\hyperlink{structinprod__analytic_1_1atm__tensors}{atm\+\_\+tensors}), public \hyperlink{namespaceinprod__analytic_a6f4fe9aa292d78b871e5498e411d1297}{atmos}
\begin{DoxyCompactList}\small\item\em Atmospheric tensors. \end{DoxyCompactList}\item
type(\hyperlink{structinprod__analytic_1_1ocean__tensors}{ocean\+\_\+tensors}), public \hyperlink{namespaceinprod__analytic_ac691a1258fb0a341e2ba5b4811be1c0b}{ocean}
\begin{DoxyCompactList}\small\item\em Oceanic tensors. \end{DoxyCompactList}\end{DoxyCompactItemize}

\subsection{Detailed Description}
Inner products between the truncated set of basis functions for the ocean and atmosphere streamfunction fields. These are partly calculated using the analytical expressions from Cehelsky, P., \& Tung, K. K. \+: Theories of multiple equilibria and weather regimes-\/A critical reexamination. Part II\+: Baroclinic two-\/layer models. Journal of the atmospheric sciences, 44(21), 3282-\/3303, 1987.

\begin{DoxyCopyright}{Copyright}
2015 Lesley De Cruz \& Jonathan Demaeyer. See \hyperlink{LICENSE_8txt}{L\+I\+C\+E\+N\+S\+E.\+txt} for license information.
\end{DoxyCopyright}
\begin{DoxyRemark}{Remarks}
Generated Fortran90/95 code from inprod\+\_\+analytic.\+lua
\end{DoxyRemark}

\subsection{Function/\+Subroutine Documentation}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!b1@{b1}}
\index{b1@{b1}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{b1(\+Pi, Pj, Pk)}{b1(Pi, Pj, Pk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::b1 (
\begin{DoxyParamCaption}
\item[{integer}]{Pi, }
\item[{integer}]{Pj, }
\item[{integer}]{Pk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a65ce3c65ea7e796a09b702d3c0f63fe0}{}\label{namespaceinprod__analytic_a65ce3c65ea7e796a09b702d3c0f63fe0}

Cehelsky \& Tung Helper functions.

Definition at line 91 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
91     \textcolor{keywordtype}{INTEGER} :: pi,pj,pk
92     b1 = (pk + pj) / \textcolor{keywordtype}{REAL}(pi)
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!b2@{b2}}
\index{b2@{b2}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{b2(\+Pi, Pj, Pk)}{b2(Pi, Pj, Pk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::b2 (
\begin{DoxyParamCaption}
\item[{integer}]{Pi, }
\item[{integer}]{Pj, }
\item[{integer}]{Pk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_ac3804db9421130d611b222d8b12c1882}{}\label{namespaceinprod__analytic_ac3804db9421130d611b222d8b12c1882}

Cehelsky \& Tung Helper functions.

Definition at line 97 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
97     \textcolor{keywordtype}{INTEGER} :: pi,pj,pk
98     b2 = (pk - pj) / \textcolor{keywordtype}{REAL}(pi)
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+a@{calculate\+\_\+a}}
\index{calculate\+\_\+a@{calculate\+\_\+a}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+a}{calculate_a}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+a (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a9a003ced8e18bf5299c05dc76a8b1e47}{}\label{namespaceinprod__analytic_a9a003ced8e18bf5299c05dc76a8b1e47}

Eigenvalues of the Laplacian (atmospheric)

$ a_{i,j} = (F_i, \nabla^2 F_j)$ .

Definition at line 155 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
155     \textcolor{keywordtype}{INTEGER} :: i
156     \textcolor{keywordtype}{TYPE}(atm\_wavenum) :: ti
157     \textcolor{keywordtype}{INTEGER} :: allocstat
158     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
159        stop \textcolor{stringliteral}{"*** Problem with calculate\_a : natm==0 ! ***"}
160     \textcolor{keywordflow}{ELSE}
161        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%a)) \textcolor{keywordflow}{THEN}
162           \textcolor{keyword}{ALLOCATE}(atmos%a(natm,natm), \hyperlink{namespacestat}{stat}=allocstat)
163           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
164 \textcolor{keywordflow}{       END IF}
165 \textcolor{keywordflow}{    END IF}
166     atmos%a=0.d0
167
168     \textcolor{keywordflow}{DO} i=1,natm
169        ti = awavenum(i)
170        atmos%a(i,i) = -(n**2) * ti%Nx**2 - ti%Ny**2
171 \textcolor{keywordflow}{    ENDDO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+b@{calculate\+\_\+b}}
\index{calculate\+\_\+b@{calculate\+\_\+b}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+b}{calculate_b}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+b (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_ab2db39e602d165af9d709d712ebf1b1d}{}\label{namespaceinprod__analytic_ab2db39e602d165af9d709d712ebf1b1d}

Streamfunction advection terms (atmospheric)

$ b_{i,j,k} = (F_i, J(F_j, \nabla^2 F_k))$ . \begin{DoxyRemark}{Remarks}
Atmospheric g and a tensors must be computed before calling this routine
\end{DoxyRemark}

Definition at line 182 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
182     \textcolor{keywordtype}{INTEGER} :: i,j,k
183     \textcolor{keywordtype}{INTEGER} :: allocstat
184
185     \textcolor{keywordflow}{IF} ((.NOT. \textcolor{keyword}{ALLOCATED}(atmos%a)) .OR. (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%g))) \textcolor{keywordflow}{THEN}
186        stop \textcolor{stringliteral}{"*** atmos%a and atmos%g must be defined before calling calculate\_b ! ***"}
187 \textcolor{keywordflow}{    END IF}
188
189     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
190        stop \textcolor{stringliteral}{"*** Problem with calculate\_b : natm==0 ! ***"}
191     \textcolor{keywordflow}{ELSE}
192        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%b)) \textcolor{keywordflow}{THEN}
193           \textcolor{keyword}{ALLOCATE}(atmos%b(natm,natm,natm), \hyperlink{namespacestat}{stat}=allocstat)
194           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
195 \textcolor{keywordflow}{       END IF}
196 \textcolor{keywordflow}{    END IF}
197     atmos%b=0.d0
198
199     \textcolor{keywordflow}{DO} i=1,natm
200        \textcolor{keywordflow}{DO} j=1,natm
201           \textcolor{keywordflow}{DO} k=1,natm
202              atmos%b(i,j,k)= atmos%a(k,k) * atmos%g(i,j,k)
203 \textcolor{keywordflow}{          END DO}
204 \textcolor{keywordflow}{       END DO}
205 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+c\+\_\+atm@{calculate\+\_\+c\+\_\+atm}}
\index{calculate\+\_\+c\+\_\+atm@{calculate\+\_\+c\+\_\+atm}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+c\+\_\+atm}{calculate_c_atm}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+c\+\_\+atm (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_afa4abc3665e4628bda2deb421c123e05}{}\label{namespaceinprod__analytic_afa4abc3665e4628bda2deb421c123e05}

Beta term for the atmosphere.

$ c_{i,j} = (F_i, \partial_x F_j)$ . \begin{DoxyRemark}{Remarks}
Strict function !! Only accepts KL type. For any other combination, it will not calculate anything
\end{DoxyRemark}

Definition at line 216 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
216     \textcolor{keywordtype}{INTEGER} :: i,j
217     \textcolor{keywordtype}{TYPE}(atm\_wavenum) :: ti, tj
218     \textcolor{keywordtype}{REAL(KIND=8)} :: val
219     \textcolor{keywordtype}{INTEGER} :: allocstat
220
221     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
222        stop \textcolor{stringliteral}{"*** Problem with calculate\_c\_atm : natm==0 ! ***"}
223     \textcolor{keywordflow}{ELSE}
224        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%c)) \textcolor{keywordflow}{THEN}
225           \textcolor{keyword}{ALLOCATE}(atmos%c(natm,natm), \hyperlink{namespacestat}{stat}=allocstat)
226           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
227 \textcolor{keywordflow}{       END IF}
228 \textcolor{keywordflow}{    END IF}
229     atmos%c=0.d0
230
231     \textcolor{keywordflow}{DO} i=1,natm
232        \textcolor{keywordflow}{DO} j=1,natm
233           ti = awavenum(i)
234           tj = awavenum(j)
235           val = 0.d0
236           \textcolor{keywordflow}{IF} ((ti%typ == \textcolor{stringliteral}{"K"}) .AND. (tj%typ == \textcolor{stringliteral}{"L"})) \textcolor{keywordflow}{THEN}
237              val = n * ti%M * delta(ti%M - tj%H) * delta(ti%P - tj%P)
238 \textcolor{keywordflow}{          END IF}
239           \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
240              atmos%c(i,j)=val
241              atmos%c(j,i)= - val
242 \textcolor{keywordflow}{          ENDIF}
243 \textcolor{keywordflow}{       END DO}
244 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+c\+\_\+oc@{calculate\+\_\+c\+\_\+oc}}
\index{calculate\+\_\+c\+\_\+oc@{calculate\+\_\+c\+\_\+oc}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+c\+\_\+oc}{calculate_c_oc}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+c\+\_\+oc (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_aa45dedb07b415eb4cbdb908268c00aa9}{}\label{namespaceinprod__analytic_aa45dedb07b415eb4cbdb908268c00aa9}

Streamfunction advection terms (oceanic)

$ C_{i,j,k} = (\eta_i, J(\eta_j,\nabla^2 \eta_k))$ . \begin{DoxyRemark}{Remarks}
Requires O\+\_\+\{i,j,k\} and M\+\_\+\{i,j\} to be calculated beforehand.
\end{DoxyRemark}

Definition at line 568 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
568     \textcolor{keywordtype}{INTEGER} :: i,j,k
569     \textcolor{keywordtype}{REAL(KIND=8)} :: val
570     \textcolor{keywordtype}{INTEGER} :: allocstat
571
572     \textcolor{keywordflow}{IF} ((.NOT. \textcolor{keyword}{ALLOCATED}(ocean%O)) .OR. (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%M))) \textcolor{keywordflow}{THEN}
573        stop \textcolor{stringliteral}{"*** ocean%O and ocean%M must be defined before calling calculate\_C ! ***"}
574 \textcolor{keywordflow}{    END IF}
575
576     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
577        stop \textcolor{stringliteral}{"*** Problem with calculate\_C : noc==0 ! ***"}
578     \textcolor{keywordflow}{ELSE}
579        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%C)) \textcolor{keywordflow}{THEN}
580           \textcolor{keyword}{ALLOCATE}(ocean%C(noc,noc,noc), \hyperlink{namespacestat}{stat}=allocstat)
581           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
582 \textcolor{keywordflow}{       END IF}
583 \textcolor{keywordflow}{    END IF}
584     ocean%C=0.d0
585     val=0.d0
586
587     \textcolor{keywordflow}{DO} i=1,noc
588        \textcolor{keywordflow}{DO} j=1,noc
589           \textcolor{keywordflow}{DO} k=1,noc
590              val = ocean%M(k,k) * ocean%O(i,j,k)
591              \textcolor{keywordflow}{IF} (val /= 0.d0) ocean%C(i,j,k) = val
592 \textcolor{keywordflow}{          END DO}
593 \textcolor{keywordflow}{       END DO}
594 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+d@{calculate\+\_\+d}}
\index{calculate\+\_\+d@{calculate\+\_\+d}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+d}{calculate_d}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+d (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a1b0c41711a02f385766aeef2faf22830}{}\label{namespaceinprod__analytic_a1b0c41711a02f385766aeef2faf22830}

Forcing of the ocean on the atmosphere.

$ d_{i,j} = (F_i, \nabla^2 \eta_j)$ . \begin{DoxyRemark}{Remarks}
Atmospheric s tensor and oceanic M tensor must be computed before calling this routine !
\end{DoxyRemark}

Definition at line 255 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
255     \textcolor{keywordtype}{INTEGER} :: i,j
256     \textcolor{keywordtype}{INTEGER} :: allocstat
257
258     \textcolor{keywordflow}{IF} ((.NOT. \textcolor{keyword}{ALLOCATED}(atmos%s)) .OR. (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%M))) \textcolor{keywordflow}{THEN}
259        stop \textcolor{stringliteral}{"*** atmos%s and ocean%M must be defined before calling calculate\_d ! ***"}
260 \textcolor{keywordflow}{    END IF}
261
262
263     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
264        stop \textcolor{stringliteral}{"*** Problem with calculate\_d : natm==0 ! ***"}
265     \textcolor{keywordflow}{ELSE}
266        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%d)) \textcolor{keywordflow}{THEN}
267           \textcolor{keyword}{ALLOCATE}(atmos%d(natm,noc), \hyperlink{namespacestat}{stat}=allocstat)
268           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
269 \textcolor{keywordflow}{       END IF}
270 \textcolor{keywordflow}{    END IF}
271     atmos%d=0.d0
272
273     \textcolor{keywordflow}{DO} i=1,natm
274        \textcolor{keywordflow}{DO} j=1,noc
275           atmos%d(i,j)=atmos%s(i,j) * ocean%M(j,j)
276 \textcolor{keywordflow}{       END DO}
277 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+g@{calculate\+\_\+g}}
\index{calculate\+\_\+g@{calculate\+\_\+g}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+g}{calculate_g}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+g (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a60bd361584d695120fff51940e523f0e}{}\label{namespaceinprod__analytic_a60bd361584d695120fff51940e523f0e}

Temperature advection terms (atmospheric)

$ g_{i,j,k} = (F_i, J(F_j, F_k))$ .

Definition at line 288 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
288     \textcolor{keywordtype}{INTEGER} :: i,j,k
289     \textcolor{keywordtype}{TYPE}(atm\_wavenum) :: ti, tj, tk
290     \textcolor{keywordtype}{REAL(KIND=8)} :: val,vb1, vb2, vs1, vs2, vs3, vs4
291     \textcolor{keywordtype}{INTEGER} :: allocstat
292
293     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
294        stop \textcolor{stringliteral}{"*** Problem with calculate\_g : natm==0 ! ***"}
295     \textcolor{keywordflow}{ELSE}
296        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%g)) \textcolor{keywordflow}{THEN}
297           \textcolor{keyword}{ALLOCATE}(atmos%g(natm,natm,natm), \hyperlink{namespacestat}{stat}=allocstat)
298           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
299 \textcolor{keywordflow}{       END IF}
300 \textcolor{keywordflow}{    END IF}
301     atmos%g=0.d0
302
303     \textcolor{keywordflow}{DO} i=1,natm
304        \textcolor{keywordflow}{DO} j=1,natm
305           \textcolor{keywordflow}{DO} k=1,natm
306              ti = awavenum(i)
307              tj = awavenum(j)
308              tk = awavenum(k)
309              val=0.d0
310              \textcolor{keywordflow}{IF} ((ti%typ == \textcolor{stringliteral}{"A"}) .AND. (tj%typ == \textcolor{stringliteral}{"K"}) .AND. (tk%typ == \textcolor{stringliteral}{"L"})) \textcolor{keywordflow}{THEN}
311                 vb1 = b1(ti%P,tj%P,tk%P)
312                 vb2 = b2(ti%P,tj%P,tk%P)
313                 val = -2 * sqrt(2.) / pi * tj%M * delta(tj%M - tk%H) * flambda(ti%P + tj%P + tk%P)
314                 \textcolor{keywordflow}{IF} (val /= 0.d0) val = val * (vb1**2 / (vb1**2 - 1) - vb2**2 / (vb2**2 - 1))
315              \textcolor{keywordflow}{ELSEIF} ((ti%typ == \textcolor{stringliteral}{"K"}) .AND. (tj%typ == \textcolor{stringliteral}{"K"}) .AND. (tk%typ == \textcolor{stringliteral}{"L"})) \textcolor{keywordflow}{THEN}
316                 vs1 = s1(tj%P,tk%P,tj%M,tk%H)
317                 vs2 = s2(tj%P,tk%P,tj%M,tk%H)
318                 val = vs1 * (delta(ti%M - tk%H - tj%M) * delta(ti%P -&
319                      & tk%P + tj%P) - delta(ti%M- tk%H - tj%M) *&
320                      & delta(ti%P + tk%P - tj%P) + (delta(tk%H - tj%M&
321                      & + ti%M) + delta(tk%H - tj%M - ti%M)) *&
322                      & delta(tk%P + tj%P - ti%P)) + vs2 * (delta(ti%M&
323                      & - tk%H - tj%M) * delta(ti%P - tk%P - tj%P) +&
324                      & (delta(tk%H - tj%M - ti%M) + delta(ti%M + tk%H&
325                      & - tj%M)) * (delta(ti%P - tk%P + tj%P) -&
326                      & delta(tk%P - tj%P + ti%P)))
327 \textcolor{keywordflow}{             END IF}
328              val=val*n
329              \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
330                 atmos%g(i,j,k) = val
331                 atmos%g(j,k,i) = val
332                 atmos%g(k,i,j) = val
333                 atmos%g(i,k,j) = -val
334                 atmos%g(j,i,k) = -val
335                 atmos%g(k,j,i) = -val
336 \textcolor{keywordflow}{             ENDIF}
337 \textcolor{keywordflow}{          END DO}
338 \textcolor{keywordflow}{       END DO}
339 \textcolor{keywordflow}{    END DO}
340
341     \textcolor{keywordflow}{DO} i=1,natm
342        \textcolor{keywordflow}{DO} j=i,natm
343           \textcolor{keywordflow}{DO} k=j,natm
344              ti = awavenum(i)
345              tj = awavenum(j)
346              tk = awavenum(k)
347              val=0.d0
348
349              \textcolor{keywordflow}{IF} ((ti%typ == \textcolor{stringliteral}{"L"}) .AND. (tj%typ == \textcolor{stringliteral}{"L"}) .AND. (tk%typ == \textcolor{stringliteral}{"L"})) \textcolor{keywordflow}{THEN}
350                 vs3 = s3(tj%P,tk%P,tj%H,tk%H)
351                 vs4 = s4(tj%P,tk%P,tj%H,tk%H)
352                 val = vs3 * ((delta(tk%H - tj%H - ti%H) - delta(tk%H &
353                      &- tj%H + ti%H)) * delta(tk%P + tj%P - ti%P) +&
354                      & delta(tk%H + tj%H - ti%H) * (delta(tk%P - tj%P&
355                      & + ti%P) - delta(tk%P - tj%P - ti%P))) + vs4 *&
356                      & ((delta(tk%H + tj%H - ti%H) * delta(tk%P - tj&
357                      &%P - ti%P)) + (delta(tk%H - tj%H + ti%H) -&
358                      & delta(tk%H - tj%H - ti%H)) * (delta(tk%P - tj&
359                      &%P - ti%P) - delta(tk%P - tj%P + ti%P)))
360 \textcolor{keywordflow}{             ENDIF}
361              val=val*n
362              \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
363                 atmos%g(i,j,k) = val
364                 atmos%g(j,k,i) = val
365                 atmos%g(k,i,j) = val
366                 atmos%g(i,k,j) = -val
367                 atmos%g(j,i,k) = -val
368                 atmos%g(k,j,i) = -val
369 \textcolor{keywordflow}{             ENDIF}
370 \textcolor{keywordflow}{          ENDDO}
371 \textcolor{keywordflow}{       ENDDO}
372 \textcolor{keywordflow}{    ENDDO}
373
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+k@{calculate\+\_\+k}}
\index{calculate\+\_\+k@{calculate\+\_\+k}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+k}{calculate_k}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+k (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_acb883b9fbefbca46b83b384ee74ed703}{}\label{namespaceinprod__analytic_acb883b9fbefbca46b83b384ee74ed703}

Forcing of the atmosphere on the ocean.

$ K_{i,j} = (\eta_i, \nabla^2 F_j)$ . \begin{DoxyRemark}{Remarks}
atmospheric a and s tensors must be computed before calling this function !
\end{DoxyRemark}

Definition at line 434 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
434     \textcolor{keywordtype}{INTEGER} :: i,j
435     \textcolor{keywordtype}{INTEGER} :: allocstat
436
437     \textcolor{keywordflow}{IF} ((.NOT. \textcolor{keyword}{ALLOCATED}(atmos%a)) .OR. (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%s))) \textcolor{keywordflow}{THEN}
438        stop \textcolor{stringliteral}{"*** atmos%a and atmos%s must be defined before calling calculate\_K ! ***"}
439 \textcolor{keywordflow}{    END IF}
440
441     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
442        stop \textcolor{stringliteral}{"*** Problem with calculate\_K : noc==0 ! ***"}
443     \textcolor{keywordflow}{ELSEIF} (natm == 0 ) \textcolor{keywordflow}{THEN}
444        stop \textcolor{stringliteral}{"*** Problem with calculate\_K : natm==0 ! ***"}
445     \textcolor{keywordflow}{ELSE}
446        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%K)) \textcolor{keywordflow}{THEN}
447           \textcolor{keyword}{ALLOCATE}(ocean%K(noc,natm), \hyperlink{namespacestat}{stat}=allocstat)
448           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
449 \textcolor{keywordflow}{       END IF}
450 \textcolor{keywordflow}{    END IF}
451     ocean%K=0.d0
452
453     \textcolor{keywordflow}{DO} i=1,noc
454        \textcolor{keywordflow}{DO} j=1,natm
455           ocean%K(i,j) = atmos%s(j,i) * atmos%a(j,j)
456 \textcolor{keywordflow}{       END DO}
457 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+m@{calculate\+\_\+m}}
\index{calculate\+\_\+m@{calculate\+\_\+m}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+m}{calculate_m}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+m (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_ad89fa4b40a4f55e72942f09427d2bafd}{}\label{namespaceinprod__analytic_ad89fa4b40a4f55e72942f09427d2bafd}

Forcing of the ocean fields on the ocean.

$ M_{i,j} = (eta_i, \nabla^2 \eta_j)$ .

Definition at line 464 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
464     \textcolor{keywordtype}{INTEGER} :: i
465     \textcolor{keywordtype}{TYPE}(ocean\_wavenum) :: di
466     \textcolor{keywordtype}{INTEGER} :: allocstat
467     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
468        stop \textcolor{stringliteral}{"*** Problem with calculate\_M : noc==0 ! ***"}
469     \textcolor{keywordflow}{ELSE}
470        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%M)) \textcolor{keywordflow}{THEN}
471           \textcolor{keyword}{ALLOCATE}(ocean%M(noc,noc), \hyperlink{namespacestat}{stat}=allocstat)
472           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
473 \textcolor{keywordflow}{       END IF}
474 \textcolor{keywordflow}{    END IF}
475     ocean%M=0.d0
476
477     \textcolor{keywordflow}{DO} i=1,noc
478        di = owavenum(i)
479        ocean%M(i,i) = -(n**2) * di%Nx**2 - di%Ny**2
480 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+n@{calculate\+\_\+n}}
\index{calculate\+\_\+n@{calculate\+\_\+n}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+n}{calculate_n}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+n (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a76eeb8a6a44af38e397edd7e0617afca}{}\label{namespaceinprod__analytic_a76eeb8a6a44af38e397edd7e0617afca}

Beta term for the ocean.

$ N_{i,j} = (\eta_i, \partial_x \eta_j) $.

Definition at line 487 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
487     \textcolor{keywordtype}{INTEGER} :: i,j
488     \textcolor{keywordtype}{TYPE}(ocean\_wavenum) :: di,dj
489     \textcolor{keywordtype}{REAL(KIND=8)} :: val
490     \textcolor{keywordtype}{INTEGER} :: allocstat
491     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
492        stop \textcolor{stringliteral}{"*** Problem with calculate\_N : noc==0 ! ***"}
493     \textcolor{keywordflow}{ELSE}
494        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%N)) \textcolor{keywordflow}{THEN}
495           \textcolor{keyword}{ALLOCATE}(ocean%N(noc,noc), \hyperlink{namespacestat}{stat}=allocstat)
496           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
497 \textcolor{keywordflow}{       END IF}
498 \textcolor{keywordflow}{    END IF}
499     ocean%N=0.d0
500     val=0.d0
501
502     \textcolor{keywordflow}{DO} i=1,noc
503        \textcolor{keywordflow}{DO} j=1,noc
504           di = owavenum(i)
505           dj = owavenum(j)
506           val = delta(di%P - dj%P) * flambda(di%H + dj%H)
507           \textcolor{keywordflow}{IF} (val /= 0.d0) ocean%N(i,j) = val * (-2) * dj%H * di%H * n / ((dj%H**2 - di%H**2) * pi)
508 \textcolor{keywordflow}{       END DO}
509 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+o@{calculate\+\_\+o}}
\index{calculate\+\_\+o@{calculate\+\_\+o}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+o}{calculate_o}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+o (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a8b820fd46bfdc62c6ae712d4cbfd072f}{}\label{namespaceinprod__analytic_a8b820fd46bfdc62c6ae712d4cbfd072f}

Temperature advection term (passive scalar)

$ O_{i,j,k} = (\eta_i, J(\eta_j, \eta_k))$ .

Definition at line 516 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
516     \textcolor{keywordtype}{INTEGER} :: i,j,k
517     \textcolor{keywordtype}{REAL(KIND=8)} :: vs3,vs4,val
518     \textcolor{keywordtype}{TYPE}(ocean\_wavenum) :: di,dj,dk
519     \textcolor{keywordtype}{INTEGER} :: allocstat
520     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
521        stop \textcolor{stringliteral}{"*** Problem with calculate\_O : noc==0 ! ***"}
522     \textcolor{keywordflow}{ELSE}
523        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%O)) \textcolor{keywordflow}{THEN}
524           \textcolor{keyword}{ALLOCATE}(ocean%O(noc,noc,noc), \hyperlink{namespacestat}{stat}=allocstat)
525           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
526 \textcolor{keywordflow}{       END IF}
527 \textcolor{keywordflow}{    END IF}
528     ocean%O=0.d0
529     val=0.d0
530
531     \textcolor{keywordflow}{DO} i=1,noc
532        \textcolor{keywordflow}{DO} j=i,noc
533           \textcolor{keywordflow}{DO} k=j,noc
534              di = owavenum(i)
535              dj = owavenum(j)
536              dk = owavenum(k)
537              vs3 = s3(dj%P,dk%P,dj%H,dk%H)
538              vs4 = s4(dj%P,dk%P,dj%H,dk%H)
539              val = vs3*((delta(dk%H - dj%H - di%H) - delta(dk%H - dj&
540                   &%H + di%H)) * delta(dk%P + dj%P - di%P) + delta(dk&
541                   &%H + dj%H - di%H) * (delta(dk%P - dj%P + di%P) -&
542                   & delta(dk%P - dj%P - di%P))) + vs4 * ((delta(dk%H &
543                   &+ dj%H - di%H) * delta(dk%P - dj%P - di%P)) +&
544                   & (delta(dk%H - dj%H + di%H) - delta(dk%H - dj%H -&
545                   & di%H)) * (delta(dk%P - dj%P - di%P) - delta(dk%P &
546                   &- dj%P + di%P)))
547              val = val * n / 2
548              \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
549                 ocean%O(i,j,k) = val
550                 ocean%O(j,k,i) = val
551                 ocean%O(k,i,j) = val
552                 ocean%O(i,k,j) = -val
553                 ocean%O(j,i,k) = -val
554                 ocean%O(k,j,i) = -val
555 \textcolor{keywordflow}{             END IF}
556 \textcolor{keywordflow}{          END DO}
557 \textcolor{keywordflow}{       END DO}
558 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+s@{calculate\+\_\+s}}
\index{calculate\+\_\+s@{calculate\+\_\+s}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+s}{calculate_s}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+s (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_af2f7504623cdd4e4e6b4b977126475ea}{}\label{namespaceinprod__analytic_af2f7504623cdd4e4e6b4b977126475ea}

Forcing (thermal) of the ocean on the atmosphere.

$ s_{i,j} = (F_i, \eta_j)$ .

Definition at line 380 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
380     \textcolor{keywordtype}{INTEGER} :: i,j
381     \textcolor{keywordtype}{TYPE}(atm\_wavenum) :: ti
382     \textcolor{keywordtype}{TYPE}(ocean\_wavenum) :: dj
383     \textcolor{keywordtype}{REAL(KIND=8)} :: val
384     \textcolor{keywordtype}{INTEGER} :: allocstat
385     \textcolor{keywordflow}{IF} (natm == 0 ) \textcolor{keywordflow}{THEN}
386        stop \textcolor{stringliteral}{"*** Problem with calculate\_s : natm==0 ! ***"}
387     \textcolor{keywordflow}{ELSEIF} (noc == 0) \textcolor{keywordflow}{then}
388        stop \textcolor{stringliteral}{"*** Problem with calculate\_s : noc==0 ! ***"}
389     \textcolor{keywordflow}{ELSE}
390        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%s)) \textcolor{keywordflow}{THEN}
391           \textcolor{keyword}{ALLOCATE}(atmos%s(natm,noc), \hyperlink{namespacestat}{stat}=allocstat)
392           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
393 \textcolor{keywordflow}{       END IF}
394 \textcolor{keywordflow}{    END IF}
395     atmos%s=0.d0
396
397     \textcolor{keywordflow}{DO} i=1,natm
398        \textcolor{keywordflow}{DO} j=1,noc
399           ti = awavenum(i)
400           dj = owavenum(j)
401           val=0.d0
402           \textcolor{keywordflow}{IF} (ti%typ == \textcolor{stringliteral}{"A"}) \textcolor{keywordflow}{THEN}
403              val = flambda(dj%H) * flambda(dj%P + ti%P)
404              \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
405                 val = val*8*sqrt(2.)*dj%P/(pi**2 * (dj%P**2 - ti%P**2) * dj%H)
406 \textcolor{keywordflow}{             END IF}
407           \textcolor{keywordflow}{ELSEIF} (ti%typ == \textcolor{stringliteral}{"K"}) \textcolor{keywordflow}{THEN}
408              val = flambda(2 * ti%M + dj%H) * delta(dj%P - ti%P)
409              \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
410                 val = val*4*dj%H/(pi * (-4 * ti%M**2 + dj%H**2))
411 \textcolor{keywordflow}{             END IF}
412           \textcolor{keywordflow}{ELSEIF} (ti%typ == \textcolor{stringliteral}{"L"}) \textcolor{keywordflow}{THEN}
413              val = delta(dj%P - ti%P) * delta(2 * ti%H - dj%H)
414 \textcolor{keywordflow}{          END IF}
415           \textcolor{keywordflow}{IF} (val /= 0.d0) \textcolor{keywordflow}{THEN}
416              atmos%s(i,j)=val
417 \textcolor{keywordflow}{          ENDIF}
418 \textcolor{keywordflow}{       END DO}
419 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!calculate\+\_\+w@{calculate\+\_\+w}}
\index{calculate\+\_\+w@{calculate\+\_\+w}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{calculate\+\_\+w}{calculate_w}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine inprod\+\_\+analytic\+::calculate\+\_\+w (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_ad275ee27fa04491805aa7a648183a754}{}\label{namespaceinprod__analytic_ad275ee27fa04491805aa7a648183a754}

Short-\/wave radiative forcing of the ocean.

$ W_{i,j} = (\eta_i, F_j)$ . \begin{DoxyRemark}{Remarks}
atmospheric s tensor must be computed before calling this function !
\end{DoxyRemark}

Definition at line 605 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
605     \textcolor{keywordtype}{INTEGER} :: i,j
606     \textcolor{keywordtype}{INTEGER} :: allocstat
607
608     \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(atmos%s)) \textcolor{keywordflow}{THEN}
609        stop \textcolor{stringliteral}{"*** atmos%s must be defined before calling calculate\_W ! ***"}
610 \textcolor{keywordflow}{    END IF}
611
612     \textcolor{keywordflow}{IF} (noc == 0 ) \textcolor{keywordflow}{THEN}
613        stop \textcolor{stringliteral}{"*** Problem with calculate\_W : noc==0 ! ***"}
614     \textcolor{keywordflow}{ELSEIF} (natm == 0 ) \textcolor{keywordflow}{THEN}
615        stop \textcolor{stringliteral}{"*** Problem with calculate\_W : natm==0 ! ***"}
616     \textcolor{keywordflow}{ELSE}
617        \textcolor{keywordflow}{IF} (.NOT. \textcolor{keyword}{ALLOCATED}(ocean%W)) \textcolor{keywordflow}{THEN}
618           \textcolor{keyword}{ALLOCATE}(ocean%W(noc,natm), \hyperlink{namespacestat}{stat}=allocstat)
619           \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
620 \textcolor{keywordflow}{       END IF}
621 \textcolor{keywordflow}{    END IF}
622     ocean%W=0.d0
623
624     \textcolor{keywordflow}{DO} i=1,noc
625        \textcolor{keywordflow}{DO} j=1,natm
626           ocean%W(i,j) = atmos%s(j,i)
627 \textcolor{keywordflow}{       END DO}
628 \textcolor{keywordflow}{    END DO}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!deallocate\+\_\+inprod@{deallocate\+\_\+inprod}}
\index{deallocate\+\_\+inprod@{deallocate\+\_\+inprod}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{deallocate\+\_\+inprod}{deallocate_inprod}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine, public inprod\+\_\+analytic\+::deallocate\+\_\+inprod (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{namespaceinprod__analytic_a77718deee55b484b0946e6c8faf72cd6}{}\label{namespaceinprod__analytic_a77718deee55b484b0946e6c8faf72cd6}

Deallocation of the inner products.

Definition at line 722 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
722     \textcolor{keywordtype}{INTEGER} :: allocstat
723
724     \textcolor{comment}{! Deallocation of atmospheric inprod}
725     allocstat=0
726     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%a)) \textcolor{keyword}{DEALLOCATE}(atmos%a, \hyperlink{namespacestat}{stat}=allocstat)
727     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
728
729     allocstat=0
730     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%c)) \textcolor{keyword}{DEALLOCATE}(atmos%c, \hyperlink{namespacestat}{stat}=allocstat)
731     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
732
733     allocstat=0
734     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%d)) \textcolor{keyword}{DEALLOCATE}(atmos%d, \hyperlink{namespacestat}{stat}=allocstat)
735     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
736
737     allocstat=0
738     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%s)) \textcolor{keyword}{DEALLOCATE}(atmos%s, \hyperlink{namespacestat}{stat}=allocstat)
739     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
740
741     allocstat=0
742     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%g)) \textcolor{keyword}{DEALLOCATE}(atmos%g, \hyperlink{namespacestat}{stat}=allocstat)
743     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
744
745     allocstat=0
746     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(atmos%b)) \textcolor{keyword}{DEALLOCATE}(atmos%b, \hyperlink{namespacestat}{stat}=allocstat)
747     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
748
749     \textcolor{comment}{! Deallocation of oceanic inprod}
750     allocstat=0
751     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%K)) \textcolor{keyword}{DEALLOCATE}(ocean%K, \hyperlink{namespacestat}{stat}=allocstat)
752     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
753
754     allocstat=0
755     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%M)) \textcolor{keyword}{DEALLOCATE}(ocean%M, \hyperlink{namespacestat}{stat}=allocstat)
756     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
757
758     allocstat=0
759     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%N)) \textcolor{keyword}{DEALLOCATE}(ocean%N, \hyperlink{namespacestat}{stat}=allocstat)
760     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
761
762     allocstat=0
763     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%W)) \textcolor{keyword}{DEALLOCATE}(ocean%W, \hyperlink{namespacestat}{stat}=allocstat)
764     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
765
766     allocstat=0
767     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%O)) \textcolor{keyword}{DEALLOCATE}(ocean%O, \hyperlink{namespacestat}{stat}=allocstat)
768     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
769
770     allocstat=0
771     \textcolor{keywordflow}{IF} (\textcolor{keyword}{ALLOCATED}(ocean%C)) \textcolor{keyword}{DEALLOCATE}(ocean%C, \hyperlink{namespacestat}{stat}=allocstat)
772     \textcolor{keywordflow}{IF} (allocstat /= 0)  stop \textcolor{stringliteral}{"*** Problem to deallocate ! ***"}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!delta@{delta}}
\index{delta@{delta}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{delta(r)}{delta(r)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::delta (
\begin{DoxyParamCaption}
\item[{integer}]{r}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_ac500ef2ae885d78a4f4558392a92fd0c}{}\label{namespaceinprod__analytic_ac500ef2ae885d78a4f4558392a92fd0c}

Integer Dirac delta function.

Definition at line 103 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
103     \textcolor{keywordtype}{INTEGER} :: r
104     \textcolor{keywordflow}{IF} (r==0) \textcolor{keywordflow}{THEN}
105        delta = 1.d0
106     \textcolor{keywordflow}{ELSE}
107        delta = 0.d0
108 \textcolor{keywordflow}{    ENDIF}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!flambda@{flambda}}
\index{flambda@{flambda}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{flambda(r)}{flambda(r)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::flambda (
\begin{DoxyParamCaption}
\item[{integer}]{r}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a7e49045b5dd4cf8d0a4eb096570e8f5c}{}\label{namespaceinprod__analytic_a7e49045b5dd4cf8d0a4eb096570e8f5c}

\char`\"{}\+Odd or even\char`\"{} function

Definition at line 113 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
113     \textcolor{keywordtype}{INTEGER} :: r
114     \textcolor{keywordflow}{IF} (mod(r,2)==0) \textcolor{keywordflow}{THEN}
115        flambda = 0.d0
116     \textcolor{keywordflow}{ELSE}
117        flambda = 1.d0
118 \textcolor{keywordflow}{    ENDIF}
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!init\+\_\+inprod@{init\+\_\+inprod}}
\index{init\+\_\+inprod@{init\+\_\+inprod}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{init\+\_\+inprod}{init_inprod}}]{\setlength{\rightskip}{0pt plus 5cm}subroutine, public inprod\+\_\+analytic\+::init\+\_\+inprod (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}\hypertarget{namespaceinprod__analytic_a7491dd2b8ba26eb10d160eb0bf072e56}{}\label{namespaceinprod__analytic_a7491dd2b8ba26eb10d160eb0bf072e56}

Initialisation of the inner product.

Definition at line 639 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
639     \textcolor{keywordtype}{INTEGER} :: i,j
640     \textcolor{keywordtype}{INTEGER} :: allocstat
641
642     \textcolor{comment}{! Definition of the types and wave numbers tables}
643
644     \textcolor{keyword}{ALLOCATE}(owavenum(noc),awavenum(natm), \hyperlink{namespacestat}{stat}=allocstat)
645     \textcolor{keywordflow}{IF} (allocstat /= 0) stop \textcolor{stringliteral}{"*** Not enough memory ! ***"}
646
647     j=0
648     \textcolor{keywordflow}{DO} i=1,nbatm
649        \textcolor{keywordflow}{IF} (ams(i,1)==1) \textcolor{keywordflow}{THEN}
650           awavenum(j+1)%typ=\textcolor{stringliteral}{'A'}
651           awavenum(j+2)%typ=\textcolor{stringliteral}{'K'}
652           awavenum(j+3)%typ=\textcolor{stringliteral}{'L'}
653
654           awavenum(j+1)%P=ams(i,2)
655           awavenum(j+2)%M=ams(i,1)
656           awavenum(j+2)%P=ams(i,2)
657           awavenum(j+3)%H=ams(i,1)
658           awavenum(j+3)%P=ams(i,2)
659
660           awavenum(j+1)%Ny=\textcolor{keywordtype}{REAL}(ams(i,2))
661           awavenum(j+2)%Nx=\textcolor{keywordtype}{REAL}(ams(i,1))
662           awavenum(j+2)%Ny=\textcolor{keywordtype}{REAL}(ams(i,2))
663           awavenum(j+3)%Nx=\textcolor{keywordtype}{REAL}(ams(i,1))
664           awavenum(j+3)%Ny=\textcolor{keywordtype}{REAL}(ams(i,2))
665
666           j=j+3
667        \textcolor{keywordflow}{ELSE}
668           awavenum(j+1)%typ=\textcolor{stringliteral}{'K'}
669           awavenum(j+2)%typ=\textcolor{stringliteral}{'L'}
670
671           awavenum(j+1)%M=ams(i,1)
672           awavenum(j+1)%P=ams(i,2)
673           awavenum(j+2)%H=ams(i,1)
674           awavenum(j+2)%P=ams(i,2)
675
676           awavenum(j+1)%Nx=\textcolor{keywordtype}{REAL}(ams(i,1))
677           awavenum(j+1)%Ny=\textcolor{keywordtype}{REAL}(ams(i,2))
678           awavenum(j+2)%Nx=\textcolor{keywordtype}{REAL}(ams(i,1))
679           awavenum(j+2)%Ny=\textcolor{keywordtype}{REAL}(ams(i,2))
680
681           j=j+2
682
683 \textcolor{keywordflow}{       ENDIF}
684 \textcolor{keywordflow}{    ENDDO}
685
686     \textcolor{keywordflow}{DO} i=1,noc
687        owavenum(i)%H=oms(i,1)
688        owavenum(i)%P=oms(i,2)
689
690        owavenum(i)%Nx=oms(i,1)/2.d0
691        owavenum(i)%Ny=oms(i,2)
692
693 \textcolor{keywordflow}{    ENDDO}
694
695     \textcolor{comment}{! Computation of the atmospheric inner products tensors}
696
697     \textcolor{keyword}{CALL }calculate\_a
698     \textcolor{keyword}{CALL }calculate\_g
699     \textcolor{keyword}{CALL }calculate\_s
700     \textcolor{keyword}{CALL }calculate\_b
701     \textcolor{keyword}{CALL }calculate\_c\_atm
702
703     \textcolor{comment}{! Computation of the oceanic inner products tensors}
704
705     \textcolor{keyword}{CALL }calculate\_m
706     \textcolor{keyword}{CALL }calculate\_n
707     \textcolor{keyword}{CALL }calculate\_o
708     \textcolor{keyword}{CALL }calculate\_c\_oc
709     \textcolor{keyword}{CALL }calculate\_w
710     \textcolor{keyword}{CALL }calculate\_k
711
712     \textcolor{comment}{! A last atmospheric one that needs ocean%M}
713
714     \textcolor{keyword}{CALL }calculate\_d
715
716
717
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!s1@{s1}}
\index{s1@{s1}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{s1(\+Pj, Pk, Mj, Hk)}{s1(Pj, Pk, Mj, Hk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::s1 (
\begin{DoxyParamCaption}
\item[{integer}]{Pj, }
\item[{integer}]{Pk, }
\item[{integer}]{Mj, }
\item[{integer}]{Hk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a90a2b9840d6c77f13aaadd7e0537800c}{}\label{namespaceinprod__analytic_a90a2b9840d6c77f13aaadd7e0537800c}

Cehelsky \& Tung Helper functions.

Definition at line 123 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
123     \textcolor{keywordtype}{INTEGER} :: pk,pj,mj,hk
124     s1 = -((pk * mj + pj * hk)) / 2.d0
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!s2@{s2}}
\index{s2@{s2}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{s2(\+Pj, Pk, Mj, Hk)}{s2(Pj, Pk, Mj, Hk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::s2 (
\begin{DoxyParamCaption}
\item[{integer}]{Pj, }
\item[{integer}]{Pk, }
\item[{integer}]{Mj, }
\item[{integer}]{Hk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a319a35a215ad426474c9a2beb4d85bbb}{}\label{namespaceinprod__analytic_a319a35a215ad426474c9a2beb4d85bbb}

Cehelsky \& Tung Helper functions.

Definition at line 129 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
129     \textcolor{keywordtype}{INTEGER} :: pk,pj,mj,hk
130     s2 = (pk * mj - pj * hk) / 2.d0
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!s3@{s3}}
\index{s3@{s3}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{s3(\+Pj, Pk, Hj, Hk)}{s3(Pj, Pk, Hj, Hk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::s3 (
\begin{DoxyParamCaption}
\item[{integer}]{Pj, }
\item[{integer}]{Pk, }
\item[{integer}]{Hj, }
\item[{integer}]{Hk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a671ca8c3aae1db0a453a13e94462baa0}{}\label{namespaceinprod__analytic_a671ca8c3aae1db0a453a13e94462baa0}

Cehelsky \& Tung Helper functions.

Definition at line 135 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
135     \textcolor{keywordtype}{INTEGER} :: pj,pk,hj,hk
136     s3 = (pk * hj + pj * hk) / 2.d0
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!s4@{s4}}
\index{s4@{s4}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{s4(\+Pj, Pk, Hj, Hk)}{s4(Pj, Pk, Hj, Hk)}}]{\setlength{\rightskip}{0pt plus 5cm}real(kind=8) function inprod\+\_\+analytic\+::s4 (
\begin{DoxyParamCaption}
\item[{integer}]{Pj, }
\item[{integer}]{Pk, }
\item[{integer}]{Hj, }
\item[{integer}]{Hk}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}\hypertarget{namespaceinprod__analytic_a8dacf930ffdf8fd09da0a77bfd4d3a4b}{}\label{namespaceinprod__analytic_a8dacf930ffdf8fd09da0a77bfd4d3a4b}

Cehelsky \& Tung Helper functions.

Definition at line 141 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
141     \textcolor{keywordtype}{INTEGER} :: pj,pk,hj,hk
142     s4 = (pk * hj - pj * hk) / 2.d0
\end{DoxyCode}

\subsection{Variable Documentation}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!atmos@{atmos}}
\index{atmos@{atmos}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{atmos}{atmos}}]{\setlength{\rightskip}{0pt plus 5cm}type({\bf atm\+\_\+tensors}), public inprod\+\_\+analytic\+::atmos}\hypertarget{namespaceinprod__analytic_a6f4fe9aa292d78b871e5498e411d1297}{}\label{namespaceinprod__analytic_a6f4fe9aa292d78b871e5498e411d1297}

Atmospheric tensors.

Definition at line 69 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
69   \textcolor{keywordtype}{TYPE}(atm\_tensors), \textcolor{keywordtype}{PUBLIC} :: atmos
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!awavenum@{awavenum}}
\index{awavenum@{awavenum}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{awavenum}{awavenum}}]{\setlength{\rightskip}{0pt plus 5cm}type({\bf atm\+\_\+wavenum}), dimension(\+:), allocatable, public inprod\+\_\+analytic\+::awavenum}\hypertarget{namespaceinprod__analytic_aa6b6ebedac44495720ffe649bc937a56}{}\label{namespaceinprod__analytic_aa6b6ebedac44495720ffe649bc937a56}

Atmospheric blocs specification.

Definition at line 64 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
64   \textcolor{keywordtype}{TYPE}(atm\_wavenum), \textcolor{keywordtype}{DIMENSION(:)}, \textcolor{keywordtype}{ALLOCATABLE}, \textcolor{keywordtype}{PUBLIC} :: awavenum
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!ocean@{ocean}}
\index{ocean@{ocean}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{ocean}{ocean}}]{\setlength{\rightskip}{0pt plus 5cm}type({\bf ocean\+\_\+tensors}), public inprod\+\_\+analytic\+::ocean}\hypertarget{namespaceinprod__analytic_ac691a1258fb0a341e2ba5b4811be1c0b}{}\label{namespaceinprod__analytic_ac691a1258fb0a341e2ba5b4811be1c0b}

Oceanic tensors.

Definition at line 71 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
71   \textcolor{keywordtype}{TYPE}(ocean\_tensors), \textcolor{keywordtype}{PUBLIC} :: ocean
\end{DoxyCode}
\index{inprod\+\_\+analytic@{inprod\+\_\+analytic}!owavenum@{owavenum}}
\index{owavenum@{owavenum}!inprod\+\_\+analytic@{inprod\+\_\+analytic}}
\subsubsection[{\texorpdfstring{owavenum}{owavenum}}]{\setlength{\rightskip}{0pt plus 5cm}type({\bf ocean\+\_\+wavenum}), dimension(\+:), allocatable, public inprod\+\_\+analytic\+::owavenum}\hypertarget{namespaceinprod__analytic_a7273713c6b1a079e1c653e8b8d2fe089}{}\label{namespaceinprod__analytic_a7273713c6b1a079e1c653e8b8d2fe089}

Oceanic blocs specification.

Definition at line 66 of file inprod\+\_\+analytic.\+f90.

\begin{DoxyCode}
66   \textcolor{keywordtype}{TYPE}(ocean\_wavenum), \textcolor{keywordtype}{DIMENSION(:)}, \textcolor{keywordtype}{ALLOCATABLE}, \textcolor{keywordtype}{PUBLIC} :: owavenum
\end{DoxyCode}

redpajama_set_name: RedPajamaGithub


text:
$(document).ready(function(){
    $('.box').bind({
        click: function() {
          $(this).css('background-color', 'green')
          $(this).html('Clicked!')
        },
        mouseenter: function() {
          $(this).css('background-color', 'purple')
          $(this).html('Hi!')
        },
        mouseleave: function(){
          $(this).css('background-color', 'orange')
          $(this).html('Bye!')
        }
    });
    $('#calculate').submit(function(event){
        var givenAge = $('#age').val();
        var givenSnack = $('#snack').val();
        var givenPerDay = $('#times-per-day').val();
        $('#lifetime-supply').html(calculate(givenAge, givenSnack, givenPerDay));
        return false;
    });
    $('#favorites').submit(function(event){
        var givenThing = $('#thing').val();
        favoriteThings(givenThing);
        return false
    });
    $('#friends').submit(function(event){
       var name = $('#friend-name').val();
       var hair = $('#friend-hair').val()
       var friend = {name: name, hair:hair};
        myFriends(friend);
        return false;
    });
})

function calculate(age, snack, perDay){
    var oldAge = 96;

    var days = (oldAge - age) * 365;
    var total = perDay * days;
    if(total > 40000){
        return "You will need " + total + " of " + snack + " to last you until the ripe old age of " + oldAge + ". Wow! That's a lot!";
    }else{
        return "You will need " + + total + " of " + snack +  " to last you until the ripe old age of " + oldAge + ". You seem pretty reasonable";
    }
}

function favoriteThings(thing){
    $('#favorite-things').append('
'+ thing +'
');
}
function myFriends(friend){
    var resultDiv = $('

')
    var resultParagraph = $('
' + describeFriend(friend) + '
');
    resultDiv.append(resultParagraph);
    $('body').append(resultDiv);
}
function describeFriend(friend){
    return "My friend " + friend.name + " has " + friend.hair + " hair. ";
}


It's December and Christmas shopping is on almost everyone's to-do list. Whether you're shopping for family/friends, or for yourself, a lovely discount/coupon code is always welcomed, and that's one of the reasons I'm excited about today's post.
I have a review and coupon code for GlassesUSA.com here today. GlassesUSA is an online store that sells eyeglasses.
The website is very user friendly and easy to navigate. Customers can search by brands, shape, size, and lots more other options, to get something that best fits their styles.
Customers can easily enter their prescriptions online to get glasses that are accurate and specific to their needs, and if you need glasses for fashion purposes only, you can also buy them on there. They have aviators, Multifocals and Wayfarers just to name a few styles they have on their website.
So, do you or someone you know use eyeglasses and want to make purchases without leaving the comfort of your home? Well, you're in luck, you can shop for eyeglasses online using glassesUSA.com virtual Mirror Feature.
I used the feature and I loved seeing how different shapes of glasses looked on me.
I really tried on so many styles. LOL.. I screen captured to show y'all.
Which one do you like best on me?
Want to join in the fun? You can do so below!
I enjoyed using the virtual mirror thingy. I personally don't wear prescription glasses, but I have a few glasses I wear just for fashion purposes. I love me a nerdy look once in a while you see.
I have friends who wear prescription eyeglasses and I know how much they complain about the in store prices they pay. The prices on GlassesUSA are reasonable and they have a 100% money back guarantee if you don't love what you got.
I must also mention that their CyberMonday Deal is still on for another two days.
CLICK HERE now to be directed to buy glasses for yourself or family/friends.
Opinions in this Sponsored Post are 100% mine.
That's cool how you can try them on virtually!
I love that you can virtually try them on. I'm so picky!
Those look great on you! And I love that you can try them on first--so clever!
LOVE the idea of trying on that way before you buy!
How fun that you can try them all on!
When we buy designer eyewear online then there are so many factor that we need to consider before ordering product online. Online shopping is the best option and way buy affordable products at home.
This is so great that you can try them all on!


text:
Accueil/Presse/L'IEM dans les médias/Anglais/The current pension reform ignores €61 billion in public revenues
AnglaisCommuniqués de Presse
The current pension reform ignores €61 billion in public revenues
Institut économique Molinari 10 décembre 2019
59 6 mn pour lire cet article
Paris, December 10, 2019: The Institut économique Molinari has just published an original analysis of French pension reform as it affects retirement and public finances. Conclusions of this work, in partnership with Contrepoints, are the following:
Pensions in France are not cheap. Based 98% on a pay-as-you-go system, they cost more than what is paid by our neighbours, who have accumulated capital to finance a portion of pension outlays.
France's shortfall amounts to about 2.6% of GDP per year in comparison to the OECD average. This is about €61 billion per year, or 19% of the pensions distributed. This amount to €3,750 per retiree each year
The difference with the most forward-looking countries (Denmark or the Netherlands) amounts to €136 billion per year, equal to 42% of the pensions distributed or €8,400 per retiree.
This shortfall leads to taxation that makes France less attractive. It explains the country's inability to reduce unemployment and return to public surpluses at times of recovery, in contrast to what we see among our neighbours.
THE REFORM IS BASED ON INCOMPLETE DIAGOSTIC
Pensions are absorbing a growing share of public spending (26%, compared to 13% in 1959). They account for 48% of spending by social security administrations and also for 12% of spending by the central government and 3% of spending by local administrations.
Pensions alone account for 59% of the rise in spending and public deficits from 1959 to 2017.
In the last 60 years, pension outlays have tripled in France with aging of the population. In 1959, there were 0.24 retirees per workforce member, and society spent 5.1% of GDP on pensions. By 2017, the proportion of retirees per worker had crept up to 0.74, and society was devoting 14.9% of GDP to pensions.
Meanwhile, unemployment and government deficits became structural. Unemployment rose almost six fold (from 1.5% to 8.6% in the third quarter of 2019, according to national statistics agency INSEE). The public accounts ceased to be in surplus and will run a deficit of 3.1% of GDP in 2019. The idea of a return to full employment and a rebalancing of public accounts has been abandoned by successive governments.
This economic analysis was not conducted in the run-up to the drafting of the campaign program. The program itself was inspired by projections from the Conseil d'orientation des retraites, amended due to an excess of optimism. Like other programs, it was developed without prior analysis of the indirect effects of aging on the public accounts, a sorry omission in a country that has not balanced its books since 1974.
Due to this impasse, the cleaning up of public finances is limited to little more than media hype.
A REFORM THAT FAILS TO DEAL WITH FRANCE'S UNDERLYING ISSUE
The benchmark produced by the IEM based on OECD data shows that pension funding costs more in France than elsewhere due to underdevelopment of the reserves of public pension plans and pension funds.
Each year, this underdevelopment costs France about 2.6% of GDP, or the equivalent of our public deficits.
Underdevelopment of the reserves of public pension systems (such as the Pensions Reserve Fund) accounts for 0.7 of the missing GDP points.
The shortage of private retirement savings (pension funds) accounts for 1.8 of the missing GDP points.
The discrepancy with the three European Union champions of retirement savings is even greater. If we had been as forward-looking as Denmark, the Netherlands or Sweden, our public and private pension funds would be generating 5.8 points of GDP per year. Compared to this leading trio, with their strong social tradition, the consecutive shortfalls resulting from the underdevelopment of retirement savings deprives us of €136 billion per year, amounting to 42% of the amounts allocated to pensions, or €8,400 per retiree.
Without income in the form of capital gains or dividends, pension financing is dependent on charges and taxes, along with deficits. This penalises economic growth, employment and net wage increases.
A REFORM THAT DESTABILISES BASIC PUBLIC AND PRIVATE PENSION INSTITUTIONS
In France, supplementary pension schemes are 49 times less developed than compulsory pension schemes.
Rather than encourage the creation of pension reserves or provisions, the reform reinforces the short-sighted flaws in our pension system. It spells the end for existing public institutions (Pensions Reserve Fund, Établissement de retraite additionnelle de la fonction publique) and private institutions (AGIRC-ARRCO, liberal profession retirement funds) that have shown foresight and responsibility, operating free of deficits and creating savings that enhance the return on investment of pension contributions.
The reform, based on accounting logic, fails to take account of France's institutional wealth or of the scope of relevant incentive structures serving as long-term commitments. It backtracks on the compromises instituted at Liberation, maintaining a plurality of players who follow forms of professional logic. It proposes creation of a single pension fund guided by the government, which has not always excelled at managing its pension commitments. It could prove costly, much like the flaws noted by the Court of Auditors during previous reforms of special systems. It lacks constitutional-type rule that would help preserve balances and reserves (golden rule).
It is true that part of the May 2019 PACTE law (Action Plan for Business Growth and Transformation) is intended to encourage the establishment of supplementary retirement savings. Although this is a step in the right direction, precedents in France (the Fillon law of 2003) and elsewhere (Germany's Riester pensions) show that these voluntary approaches are slow to produce results.
A REFORM THAT IS LIMITED TO A ZERO-SUM GAME
While the 2003 reform had adeptly created new rights on an economic and responsible basis with the establishment of a defined-benefit public pension fund (the Établissement de retraite additionnelle de la fonction publique), the government's new reform seeks to create a new universal pay-as-you-go fund.
As might be expected, this reinforces fear and opposition, with the adjustments being limited to social contributions (their increase penalises the purchasing power of assets and employment), to retirement benefits (their lower revaluation penalises the purchasing power of the retired) and to working time. By missing out on what is needed in France, it risks creating maximum opposition with minimal gain. Nearly all civil service pensions, and those of private-sector employees, would continue to be funded by compulsory levies or public debt. Retirement savings would remain solely the prerogative of the far-sighted, leaving much of the French population on the sidelines.
Nicolas Marques, General Manager of the Institut économique Molinari, co-author of the study
"Under the guise of simplification, fairness and efficiency, which remain to be proven, the French government is in the process of organising a nationalisation of old-age insurance funds and independent pension plans. This approach, presented as a modern, pragmatic choice, is far from innocuous. It is similar to the nationalisation of the insurance and banking sectors after the Second World War, or establishment of the 35-hour workweek in the early 2000s. It will not in any way improve financial balances, and it will not alleviate the cost of funding pensions. Worse yet, it will reinforce a fundamental French flaw, with the under-sizing of retirement savings.
"Contrary to what the reform proposes, there is a need to ramp up public or private pension funds, as proposed 110 years ago by Jean Jaurès. Only by adding a significant dose of retirement savings and by ramping up public or private pension funds can we change the outcome. Enabling pensions to be partly funded by dividends and capital gains would reduce the dependency on charges and taxes that penalises growth, employment and wages."
Cécile Philippe, President of the Institut économique Molinari, co-author of the study
"Our pension system does not need universality or homogenisation but rather should provide pensions with a decent quality/price ratio.
"The current reform runs counter to common sense, implementing a vast shift to state control, a paradoxical step given that the state has been incapable of generating surpluses since 1974 in France.
"It would occur to the detriment of virtuous public or private institutions that, without running deficits, have acted responsibly in creating retirement savings: the Pensions Reserve Fund, the Etablissement de retraite additionnelle de la fonction publique, AGIRC-ARRCO, the liberal profession retirement funds and so on. We should turn to this diversity and move away from the zero-sum game in which we have been stuck rather than fighting it."
ABOUT THE INSTITUT ECONOMIQUE MOLINARI AND CONTREPOINTS
The Institut économique Molinari (Paris-Brussels) is an independent research and education organisation. It seeks to stimulate the economic approach in public policy analysis, offering innovative alternative solutions conducive to the prosperity of all individuals making up society.
Contrepoints is the leading liberal daily news website in French. Contrepoints promotes a free society by covering politics, culture and ideas for a monthly audience of 2 million readers, viewers and listeners.
THE STUDY IS AVAILABLE (IN FRENCH) HERE.
FOR INFORMATION OR INTERVIEWS, CONTACT:
Cécile Philippe, President, Institut économique Molinari
(Paris, Brussels, in French or English)
cecile@institutmolinari.org
Nicolas Marques, Managing Director, Institut économique Molinari
(Paris, in French)
nicolas@institutmolinari.org
Institut économique Molinari
En 2019, dernière année de reprise économique, l'État en France épuisait ses ressources le 4 novembre. 58 jours avant la fin de l'année, il avait épuisé toutes ses ressources. En 2020, les dérapages vont doubler, avec 114 jours non financés
In 2019, the French central government had depleted its annual revenues by November 4, with 58 days remaining in the year. In 2020, this slippage is twice as long, with 114 days of unfunded spending
Epicenter – A Perspective from Across Europe
La France reste championne de la fiscalité du salarié moyen pour la 5ème année consécutive, en dépit de la baisse d'impôt 2020


text:
Q: Why aren't my images loading from my JSON file? I was trying to load images from a JSON file using GSON, and after reading multiple threads on StackOverflow, I found that the best solution was to store to URL in the JSON file and then load it into an image. The problem is, my application is failing to load these URLs into an image, and I have no idea why. For example, when I go into debug mode: Debug Mode Image
It shows that images are null.
Here is my JSON file:
{
    "shoes": [
        {
            "shoeName": "Shoe",
            "shoePrice": "120",
            "brand": "Shoe",
            "typeOfShoes": "Running",
            "style": "Cool",
            "colors": [
                "Blue",
                "Green",
                "Pink"
            ],
            "sizes": [
                "W5/M3.5",
                "W5.5/M4"
            ],
            "description": "The Shoe SE features sleek lines and a sheer upper that combine classic Air Max elements into a lightweight, comfortable and versatile icon. Together with its smart toe-down profile and extra lift, the shoe offers an ever-bigger expression..",
            "shipping": "0",
            "tax": "0",
            "subtotal": "0",
            "review": "4.5",
            "totalRaffles": "80",
            "imageURLs": ["https://www.nike.com/t/vaporfly-4-flyknit-running-shoe-v7G3FB"],
            "isSold": "false"
        },
        {
            "shoeName": "Empty Shoe",
            "shoePrice": "0",
            "brand": "null",
            "typeOfShoes": "null",
            "style": "null",
            "colors": ["null"
            ],
            "sizes": ["null"
            ],
            "description": "null",
            "shipping": "0",
            "tax": "0",
            "subtotal": "0",
            "review": "0",
            "totalRaffles": "0",
            "imageURLs": ["https://www.nike.com/t/vaporfly-4-flyknit-running-shoe-v7G3FB"],
            "isSold": "false"
        },
        {
            "shoeName": "Empty Shoe1",
            "shoePrice": "0",
            "brand": "null",
            "typeOfShoes": "null",
            "style": "null",
            "colors": ["null"
            ],
            "sizes": ["null"
            ],
            "description": "null",
            "shipping": "0",
            "tax": "0",
            "subtotal": "0",
            "review": "0",
            "totalRaffles": "0",
            "imageURLs": ["https://www.nike.com/t/vaporfly-4-flyknit-running-shoe-v7G3FB"],
            "isSold": "false"
        }
    ]

    }

The ReadJSON.java is a class for reading the JSON file.
ReadJSON.java
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.file.Files;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.pulsebeat02.main.gui.Shoe;
import com.pulsebeat02.main.gui.windows.StartingWindow;

public class ReadJSON {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        parseJSON();

    }

    public static void parseJSON() {

        String cwd = System.getProperty("user.dir");

        File f = new File(cwd + "/shoes.json");

        String str = null;
        try {
            str = readFile(f);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        Gson gson = new Gson();

        Type dataType = (new TypeToken<Shoes>() {
        }).getType();

        Shoes shoeList = gson.fromJson(str, dataType);

        List<Shoe> shoes = shoeList.getShoes();

        Shoe [] shoesFinal = new Shoe[shoes.size()];

        for (int i = 0; i < shoesFinal.length; i++) {

            shoesFinal[i] = shoes.get(i);

        }

        StartingWindow.shoesInGui = shoesFinal;

        System.out.println(shoeList);
        System.out.println("Ran");

    }

    public static String readFile(File file) throws IOException {
        return new String(Files.readAllBytes(file.toPath()));
    }

}

Here is the Shoe class used to define the shoe object:
Shoe.java
import java.awt.Image;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;

import javax.imageio.ImageIO;

public class Shoe {

    public int shoePrice;
    public int shipping;
    public int tax;
    public int subtotal;
    public int totalRaffles;

    public double review;

    public String shoeName;
    public String style;
    public String typeOfShoes;
    public String brand;

    public String[] imageURLs;

    public Image[] images;

    public String description;
    public String[] colors;
    public String[] sizes;

    public boolean isSold;

    public Shoe(int shoePrice, int shipping, int tax, int subtotal, double review,

            int totalRaffles,

            String shoeName, String style, String typeOfShoes, String brand,

            String[] imageURLs,

            String description, String[] colors, String[] sizes,

            boolean isSold) {

        this.shoePrice = shoePrice;
        this.shipping = shipping;
        this.tax = tax;
        this.subtotal = subtotal;
        this.review = review;
        this.totalRaffles = totalRaffles;
        this.sizes = sizes;
        this.shoeName = shoeName;
        this.style = style;
        this.typeOfShoes = typeOfShoes;

        Image[] imagesFinal = new Image[imageURLs.length];

        for (int i = 0; i < imageURLs.length; i++) {

            URL url = null;
            try {
                url = new URL(imageURLs[i]);
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Image c = null;
            try {
                c = ImageIO.read(url);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            imagesFinal[i] = c;

        }

        this.images = imagesFinal;
        this.description = description;
        this.colors = colors;
        this.isSold = isSold;
        this.brand = brand;

    }

    public Shoe(String shoePrice2, String shipping2, String tax2, String subTotal2, String review2,
            String totalRaffles2, String shoeName2, String style2, String typeOfShoes2, String brand2,
            List<String> images2, String description2, List<String> color, List<String> sizes2, String isSold2) {

        this.shoePrice = Integer.parseInt(shoePrice2);
        this.shipping = Integer.parseInt(shipping2);
        this.tax = Integer.parseInt(tax2);
        this.subtotal = Integer.parseInt(subTotal2);
        this.review = Double.parseDouble(review2);
        this.totalRaffles = Integer.parseInt(totalRaffles2);

        this.shoeName = shoeName2;
        this.style = style2;
        this.typeOfShoes = typeOfShoes2;
        this.brand = brand2;

        this.images = loadImage((String[]) images2.toArray());
        this.description = description2;
        this.colors = (String[]) color.toArray();
        this.sizes = (String[]) sizes2.toArray();
        this.isSold = Boolean.getBoolean(isSold2);

    }

    public Shoe (Shoe s) {

        super();

    }

    public static Shoe[] toArray(List<Shoe> list) {

        Shoe[] shoes = new Shoe[list.size()];

        for (int i = 0; i < list.size(); i++) {

            shoes[i] = list.get(i);

        }

        return shoes;

    }

    public static Image[] loadImage(String[] imageURLs) {

        Image[] images = new Image[imageURLs.length];

        for (int i = 0; i < imageURLs.length; i++) {

            Image image = null;
            try {
                image = ImageIO.read(new URL(imageURLs[i]));
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            images[i] = image;

        }

        return images;

    }

}

A: The URLS you have in the sample are not image URLs but generic web URLS.
Here is working code sample with correct & absolute image URL ( execute this URL on browser ):
Image image = null;
try {
    image = ImageIO.read(new URL("https://c.static-nike.com/a/images/t_PDP_864_v1/f_auto,b_rgb:f5f5f5/ds8ojj70wtpthbzadaft/air-max-dia-se-shoe-WCG8t5.jpg"));
    System.out.println("Image read");
}
catch (Exception e) {
}

redpajama_set_name: RedPajamaStackExchange


text:
Hotels in New Mexico
Ruidoso Hotels
Hotels & Accommodation in Ruidoso
trover photo by Jace Craft
Search for accommodation in Ruidoso
See Ruidoso hotels on a map
Book hotel rooms & other accommodation in Ruidoso
What's Ruidoso Like?
Ruidoso is a family-friendly place surrounded by mountain views. If you're visiting during colder months, enjoy activities such as skiing during your stay. Plan a fun excursion to The Links at Sierra Blanca and Cree Medows Public Golf Course while here. While you're in town, don't miss out on other sights including Pillow's Funtrackers.
Where are the Best Places to Stay in Ruidoso?
Below are the number of accommodations by star rating in Ruidoso and the surrounding area:
• 6 4-star accommodations from ZAR 1493 per night
• 74 3-star accommodations from ZAR 597 per night
How to Get to Ruidoso
Flights to Ruidoso
• Ruidoso, NM (RUI-Sierra Blanca Regional), 12.3 mi (19.7 km) from central Ruidoso
Things to See and Do in Ruidoso
Things to See near Ruidoso:
• Ruidoso Downs Racetrack (4.1 mi/6.7 km from the city center)
• Bonito Lake (9.1 mi/14.6 km from the city center)
Things to Do in Ruidoso
• Pillow's Funtrackers
• The Links at Sierra Blanca
• Cree Medows Public Golf Course
When Is the Best Time to Visit Ruidoso?
• Hottest months: June, July, August, May (average 80°F)
• Coldest months: December, January, February, November (average 22°F)
• Rainiest months: August, July, September, and June (average 3.25 inches of rainfall)